diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2009-07-27 19:32:57 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2009-07-27 19:32:57 +0000 |
commit | df0b6503d601c2150e3242b66f02fe906f838979 (patch) | |
tree | ac9bf5bbae2540b4a948d326eea13a3629ce6d6a /lib/CodeGen/ELF.h | |
parent | 3b07b5214ccf545ff6638d1327946c3300f1ee5f (diff) |
add module identifier to the elf object file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77238 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ELF.h')
-rw-r--r-- | lib/CodeGen/ELF.h | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/CodeGen/ELF.h b/lib/CodeGen/ELF.h index cd0c68a7a2..48e0946b0a 100644 --- a/lib/CodeGen/ELF.h +++ b/lib/CodeGen/ELF.h @@ -59,10 +59,10 @@ namespace llvm { // ELF symbols are related to llvm ones by being one of the two llvm // types, for the other ones (section, file, func) a null pointer is - // assumed. + // assumed by default. union { const GlobalValue *GV; // If this is a pointer to a GV - const char *Ext; // If this is a pointer to a named symbol + const char *Ext; // If this is a pointer to a named symbol } Source; // Describes from which source type this ELF symbol comes from, @@ -118,9 +118,20 @@ namespace llvm { // getSectionSym - Returns a elf symbol to represent an elf section static ELFSym *getSectionSym() { ELFSym *Sym = new ELFSym(); - Sym->setBind(ELFSym::STB_LOCAL); - Sym->setType(ELFSym::STT_SECTION); - Sym->setVisibility(ELFSym::STV_DEFAULT); + Sym->setBind(STB_LOCAL); + Sym->setType(STT_SECTION); + Sym->setVisibility(STV_DEFAULT); + Sym->SourceType = isOther; + return Sym; + } + + // getSectionSym - Returns a elf symbol to represent an elf section + static ELFSym *getFileSym() { + ELFSym *Sym = new ELFSym(); + Sym->setBind(STB_LOCAL); + Sym->setType(STT_FILE); + Sym->setVisibility(STV_DEFAULT); + Sym->SectionIdx = 0xfff1; // ELFSection::SHN_ABS; Sym->SourceType = isOther; return Sym; } @@ -164,6 +175,7 @@ namespace llvm { unsigned getBind() const { return (Info >> 4) & 0xf; } unsigned getType() const { return Info & 0xf; } bool isLocalBind() const { return getBind() == STB_LOCAL; } + bool isFileType() const { return getType() == STT_FILE; } void setBind(unsigned X) { assert(X == (X & 0xF) && "Bind value out of range!"); |