Line data Source code
1 : //===- MCSymbolELF.h - -----------------------------------------*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 : #ifndef LLVM_MC_MCSYMBOLELF_H
10 : #define LLVM_MC_MCSYMBOLELF_H
11 :
12 : #include "llvm/MC/MCSymbol.h"
13 :
14 : namespace llvm {
15 : class MCSymbolELF : public MCSymbol {
16 : /// An expression describing how to calculate the size of a symbol. If a
17 : /// symbol has no size this field will be NULL.
18 : const MCExpr *SymbolSize = nullptr;
19 :
20 : public:
21 : MCSymbolELF(const StringMapEntry<bool> *Name, bool isTemporary)
22 17028827 : : MCSymbol(SymbolKindELF, Name, isTemporary) {}
23 473321 : void setSize(const MCExpr *SS) { SymbolSize = SS; }
24 :
25 0 : const MCExpr *getSize() const { return SymbolSize; }
26 :
27 : void setVisibility(unsigned Visibility);
28 : unsigned getVisibility() const;
29 :
30 : void setOther(unsigned Other);
31 : unsigned getOther() const;
32 :
33 : void setType(unsigned Type) const;
34 : unsigned getType() const;
35 :
36 : void setBinding(unsigned Binding) const;
37 : unsigned getBinding() const;
38 :
39 : bool isBindingSet() const;
40 :
41 : void setIsWeakrefUsedInReloc() const;
42 : bool isWeakrefUsedInReloc() const;
43 :
44 : void setIsSignature() const;
45 : bool isSignature() const;
46 :
47 : static bool classof(const MCSymbol *S) { return S->isELF(); }
48 :
49 : private:
50 : void setIsBindingSet() const;
51 : };
52 : }
53 :
54 : #endif
|