1//===- MCSymbolGOFF.cpp - GOFF Symbol Representation ----------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "llvm/MC/MCSymbolGOFF.h"
10#include "llvm/BinaryFormat/GOFF.h"
11#include "llvm/Support/ErrorHandling.h"
12
13using namespace llvm;
14
15bool MCSymbolGOFF::setSymbolAttribute(MCSymbolAttr Attribute) {
16 switch (Attribute) {
17 case MCSA_Invalid:
18 case MCSA_Cold:
19 case MCSA_ELF_TypeIndFunction:
20 case MCSA_ELF_TypeTLS:
21 case MCSA_ELF_TypeCommon:
22 case MCSA_ELF_TypeNoType:
23 case MCSA_ELF_TypeGnuUniqueObject:
24 case MCSA_LGlobal:
25 case MCSA_Extern:
26 case MCSA_Exported:
27 case MCSA_Internal:
28 case MCSA_LazyReference:
29 case MCSA_Local:
30 case MCSA_NoDeadStrip:
31 case MCSA_SymbolResolver:
32 case MCSA_AltEntry:
33 case MCSA_PrivateExtern:
34 case MCSA_Protected:
35 case MCSA_Reference:
36 case MCSA_WeakDefinition:
37 case MCSA_WeakDefAutoPrivate:
38 case MCSA_WeakAntiDep:
39 case MCSA_Memtag:
40 return false;
41
42 case MCSA_IndirectSymbol:
43 setIndirect(true);
44 break;
45 case MCSA_ELF_TypeFunction:
46 setCodeData(GOFF::ESDExecutable::ESD_EXE_CODE);
47 break;
48 case MCSA_ELF_TypeObject:
49 setCodeData(GOFF::ESDExecutable::ESD_EXE_DATA);
50 break;
51 case MCSA_OSLinkage:
52 setLinkage(GOFF::ESDLinkageType::ESD_LT_OS);
53 break;
54 case MCSA_XPLinkage:
55 setLinkage(GOFF::ESDLinkageType::ESD_LT_XPLink);
56 break;
57 case MCSA_Global:
58 setExternal(true);
59 break;
60 case MCSA_Weak:
61 case MCSA_WeakReference:
62 setExternal(true);
63 setWeak();
64 break;
65 case MCSA_Hidden:
66 setHidden(true);
67 break;
68 }
69
70 return true;
71}
72