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_IndirectSymbol:
28 case MCSA_Internal:
29 case MCSA_LazyReference:
30 case MCSA_Local:
31 case MCSA_NoDeadStrip:
32 case MCSA_SymbolResolver:
33 case MCSA_AltEntry:
34 case MCSA_PrivateExtern:
35 case MCSA_Protected:
36 case MCSA_Reference:
37 case MCSA_WeakDefinition:
38 case MCSA_WeakDefAutoPrivate:
39 case MCSA_WeakAntiDep:
40 case MCSA_Memtag:
41 return false;
42
43 case MCSA_ELF_TypeFunction:
44 setCodeData(GOFF::ESDExecutable::ESD_EXE_CODE);
45 break;
46 case MCSA_ELF_TypeObject:
47 setCodeData(GOFF::ESDExecutable::ESD_EXE_DATA);
48 break;
49 case MCSA_OSLinkage:
50 setLinkage(GOFF::ESDLinkageType::ESD_LT_OS);
51 break;
52 case MCSA_XPLinkage:
53 setLinkage(GOFF::ESDLinkageType::ESD_LT_XPLink);
54 break;
55 case MCSA_Global:
56 setExternal(true);
57 break;
58 case MCSA_Weak:
59 case MCSA_WeakReference:
60 setExternal(true);
61 setWeak();
62 break;
63 case MCSA_Hidden:
64 setHidden(true);
65 break;
66 }
67
68 return true;
69}
70