[llvm-commits] [llvm] r108520 - in /llvm/trunk/lib: CodeGen/ELF.h CodeGen/ELFCodeEmitter.cpp CodeGen/ELFWriter.cpp CodeGen/ELFWriter.h ExecutionEngine/JIT/JITDebugRegisterer.cpp

Eli Friedman eli.friedman at gmail.com
Fri Jul 16 00:53:29 PDT 2010


Author: efriedma
Date: Fri Jul 16 02:53:29 2010
New Revision: 108520

URL: http://llvm.org/viewvc/llvm-project?rev=108520&view=rev
Log:
Get rid of a bunch of duplicated ELF enum values.


Modified:
    llvm/trunk/lib/CodeGen/ELF.h
    llvm/trunk/lib/CodeGen/ELFCodeEmitter.cpp
    llvm/trunk/lib/CodeGen/ELFWriter.cpp
    llvm/trunk/lib/CodeGen/ELFWriter.h
    llvm/trunk/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp

Modified: llvm/trunk/lib/CodeGen/ELF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ELF.h?rev=108520&r1=108519&r2=108520&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/ELF.h (original)
+++ llvm/trunk/lib/CodeGen/ELF.h Fri Jul 16 02:53:29 2010
@@ -22,36 +22,12 @@
 
 #include "llvm/CodeGen/BinaryObject.h"
 #include "llvm/CodeGen/MachineRelocation.h"
+#include "llvm/Support/ELF.h"
 #include "llvm/System/DataTypes.h"
 
 namespace llvm {
   class GlobalValue;
 
-  // Identification Indexes
-  enum {
-    EI_MAG0 = 0,
-    EI_MAG1 = 1,
-    EI_MAG2 = 2,
-    EI_MAG3 = 3
-  };
-
-  // File types
-  enum {
-    ET_NONE   = 0,      // No file type
-    ET_REL    = 1,      // Relocatable file
-    ET_EXEC   = 2,      // Executable file
-    ET_DYN    = 3,      // Shared object file
-    ET_CORE   = 4,      // Core file
-    ET_LOPROC = 0xff00, // Beginning of processor-specific codes
-    ET_HIPROC = 0xffff  // Processor-specific
-  };
-
-  // Versioning
-  enum {
-    EV_NONE = 0,
-    EV_CURRENT = 1
-  };
-
   /// ELFSym - This struct contains information about each symbol that is
   /// added to logical symbol table for the module.  This is eventually
   /// turned into a real symbol table in the file.
@@ -108,9 +84,9 @@
     static ELFSym *getExtSym(const char *Ext) {
       ELFSym *Sym = new ELFSym();
       Sym->Source.Ext = Ext;
-      Sym->setBind(STB_GLOBAL);
-      Sym->setType(STT_NOTYPE);
-      Sym->setVisibility(STV_DEFAULT);
+      Sym->setBind(ELF::STB_GLOBAL);
+      Sym->setType(ELF::STT_NOTYPE);
+      Sym->setVisibility(ELF::STV_DEFAULT);
       Sym->SourceType = isExtSym;
       return Sym;
     }
@@ -118,9 +94,9 @@
     // getSectionSym - Returns a elf symbol to represent an elf section
     static ELFSym *getSectionSym() {
       ELFSym *Sym = new ELFSym();
-      Sym->setBind(STB_LOCAL);
-      Sym->setType(STT_SECTION);
-      Sym->setVisibility(STV_DEFAULT);
+      Sym->setBind(ELF::STB_LOCAL);
+      Sym->setType(ELF::STT_SECTION);
+      Sym->setVisibility(ELF::STV_DEFAULT);
       Sym->SourceType = isOther;
       return Sym;
     }
@@ -128,9 +104,9 @@
     // getFileSym - Returns a elf symbol to represent the module identifier
     static ELFSym *getFileSym() {
       ELFSym *Sym = new ELFSym();
-      Sym->setBind(STB_LOCAL);
-      Sym->setType(STT_FILE);
-      Sym->setVisibility(STV_DEFAULT);
+      Sym->setBind(ELF::STB_LOCAL);
+      Sym->setType(ELF::STT_FILE);
+      Sym->setVisibility(ELF::STV_DEFAULT);
       Sym->SectionIdx = 0xfff1;  // ELFSection::SHN_ABS;
       Sym->SourceType = isOther;
       return Sym;
@@ -141,8 +117,8 @@
       ELFSym *Sym = new ELFSym();
       Sym->Source.GV = GV;
       Sym->setBind(Bind);
-      Sym->setType(STT_NOTYPE);
-      Sym->setVisibility(STV_DEFAULT);
+      Sym->setType(ELF::STT_NOTYPE);
+      Sym->setVisibility(ELF::STV_DEFAULT);
       Sym->SectionIdx = 0;  //ELFSection::SHN_UNDEF;
       Sym->SourceType = isGV;
       return Sym;
@@ -159,35 +135,14 @@
     // Symbol index into the Symbol table
     unsigned SymTabIdx;
 
-    enum {
-      STB_LOCAL = 0,  // Local sym, not visible outside obj file containing def
-      STB_GLOBAL = 1, // Global sym, visible to all object files being combined
-      STB_WEAK = 2    // Weak symbol, like global but lower-precedence
-    };
-
-    enum {
-      STT_NOTYPE = 0,  // Symbol's type is not specified
-      STT_OBJECT = 1,  // Symbol is a data object (variable, array, etc.)
-      STT_FUNC = 2,    // Symbol is executable code (function, etc.)
-      STT_SECTION = 3, // Symbol refers to a section
-      STT_FILE = 4     // Local, absolute symbol that refers to a file
-    };
-
-    enum {
-      STV_DEFAULT = 0,  // Visibility is specified by binding type
-      STV_INTERNAL = 1, // Defined by processor supplements
-      STV_HIDDEN = 2,   // Not visible to other components
-      STV_PROTECTED = 3 // Visible in other components but not preemptable
-    };
-
     ELFSym() : SourceType(isOther), NameIdx(0), Value(0),
-               Size(0), Info(0), Other(STV_DEFAULT), SectionIdx(0),
+               Size(0), Info(0), Other(ELF::STV_DEFAULT), SectionIdx(0),
                SymTabIdx(0) {}
 
     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; }
+    bool isLocalBind() const { return getBind() == ELF::STB_LOCAL; }
+    bool isFileType() const { return getType() == ELF::STT_FILE; }
 
     void setBind(unsigned X) {
       assert(X == (X & 0xF) && "Bind value out of range!");
@@ -222,51 +177,6 @@
     unsigned Align;     // sh_addralign - Alignment of section.
     unsigned EntSize;   // sh_entsize - Size of entries in the section e
 
-    // Section Header Flags
-    enum {
-      SHF_WRITE            = 1 << 0, // Writable
-      SHF_ALLOC            = 1 << 1, // Mapped into the process addr space
-      SHF_EXECINSTR        = 1 << 2, // Executable
-      SHF_MERGE            = 1 << 4, // Might be merged if equal
-      SHF_STRINGS          = 1 << 5, // Contains null-terminated strings
-      SHF_INFO_LINK        = 1 << 6, // 'sh_info' contains SHT index
-      SHF_LINK_ORDER       = 1 << 7, // Preserve order after combining
-      SHF_OS_NONCONFORMING = 1 << 8, // nonstandard OS support required
-      SHF_GROUP            = 1 << 9, // Section is a member of a group
-      SHF_TLS              = 1 << 10 // Section holds thread-local data
-    };
-
-    // Section Types
-    enum {
-      SHT_NULL     = 0,  // No associated section (inactive entry).
-      SHT_PROGBITS = 1,  // Program-defined contents.
-      SHT_SYMTAB   = 2,  // Symbol table.
-      SHT_STRTAB   = 3,  // String table.
-      SHT_RELA     = 4,  // Relocation entries; explicit addends.
-      SHT_HASH     = 5,  // Symbol hash table.
-      SHT_DYNAMIC  = 6,  // Information for dynamic linking.
-      SHT_NOTE     = 7,  // Information about the file.
-      SHT_NOBITS   = 8,  // Data occupies no space in the file.
-      SHT_REL      = 9,  // Relocation entries; no explicit addends.
-      SHT_SHLIB    = 10, // Reserved.
-      SHT_DYNSYM   = 11, // Symbol table.
-      SHT_LOPROC   = 0x70000000, // Lowest processor arch-specific type.
-      SHT_HIPROC   = 0x7fffffff, // Highest processor arch-specific type.
-      SHT_LOUSER   = 0x80000000, // Lowest type reserved for applications.
-      SHT_HIUSER   = 0xffffffff  // Highest type reserved for applications.
-    };
-
-    // Special section indices.
-    enum {
-      SHN_UNDEF     = 0,      // Undefined, missing, irrelevant
-      SHN_LORESERVE = 0xff00, // Lowest reserved index
-      SHN_LOPROC    = 0xff00, // Lowest processor-specific index
-      SHN_HIPROC    = 0xff1f, // Highest processor-specific index
-      SHN_ABS       = 0xfff1, // Symbol has absolute value; no relocation
-      SHN_COMMON    = 0xfff2, // FORTRAN COMMON or C external global variables
-      SHN_HIRESERVE = 0xffff  // Highest reserved index
-    };
-
     /// SectionIdx - The number of the section in the Section Table.
     unsigned short SectionIdx;
 

Modified: llvm/trunk/lib/CodeGen/ELFCodeEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ELFCodeEmitter.cpp?rev=108520&r1=108519&r2=108520&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/ELFCodeEmitter.cpp (original)
+++ llvm/trunk/lib/CodeGen/ELFCodeEmitter.cpp Fri Jul 16 02:53:29 2010
@@ -71,7 +71,7 @@
 bool ELFCodeEmitter::finishFunction(MachineFunction &MF) {
   // Add a symbol to represent the function.
   const Function *F = MF.getFunction();
-  ELFSym *FnSym = ELFSym::getGV(F, EW.getGlobalELFBinding(F), ELFSym::STT_FUNC,
+  ELFSym *FnSym = ELFSym::getGV(F, EW.getGlobalELFBinding(F), ELF::STT_FUNC,
                                 EW.getGlobalELFVisibility(F));
   FnSym->SectionIdx = ES->SectionIdx;
   FnSym->Size = ES->getCurrentPCOffset()-FnStartOff;

Modified: llvm/trunk/lib/CodeGen/ELFWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ELFWriter.cpp?rev=108520&r1=108519&r2=108520&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/ELFWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/ELFWriter.cpp Fri Jul 16 02:53:29 2010
@@ -129,12 +129,12 @@
 
   ElfHdr.emitByte(TEW->getEIClass()); // e_ident[EI_CLASS]
   ElfHdr.emitByte(TEW->getEIData());  // e_ident[EI_DATA]
-  ElfHdr.emitByte(EV_CURRENT);        // e_ident[EI_VERSION]
+  ElfHdr.emitByte(ELF::EV_CURRENT);   // e_ident[EI_VERSION]
   ElfHdr.emitAlignment(16);           // e_ident[EI_NIDENT-EI_PAD]
 
-  ElfHdr.emitWord16(ET_REL);             // e_type
+  ElfHdr.emitWord16(ELF::ET_REL);        // e_type
   ElfHdr.emitWord16(TEW->getEMachine()); // e_machine = target
-  ElfHdr.emitWord32(EV_CURRENT);         // e_version
+  ElfHdr.emitWord32(ELF::EV_CURRENT);    // e_version
   ElfHdr.emitWord(0);                    // e_entry, no entry point in .o file
   ElfHdr.emitWord(0);                    // e_phoff, no program header for .o
   ELFHdr_e_shoff_Offset = ElfHdr.size();
@@ -252,7 +252,7 @@
 // is true if the relocation section contains entries with addends.
 ELFSection &ELFWriter::getRelocSection(ELFSection &S) {
   unsigned SectionType = TEW->hasRelocationAddend() ?
-                ELFSection::SHT_RELA : ELFSection::SHT_REL;
+                ELF::SHT_RELA : ELF::SHT_REL;
 
   std::string SectionName(".rel");
   if (TEW->hasRelocationAddend())
@@ -268,11 +268,11 @@
   default:
     llvm_unreachable("unknown visibility type");
   case GlobalValue::DefaultVisibility:
-    return ELFSym::STV_DEFAULT;
+    return ELF::STV_DEFAULT;
   case GlobalValue::HiddenVisibility:
-    return ELFSym::STV_HIDDEN;
+    return ELF::STV_HIDDEN;
   case GlobalValue::ProtectedVisibility:
-    return ELFSym::STV_PROTECTED;
+    return ELF::STV_PROTECTED;
   }
   return 0;
 }
@@ -280,23 +280,23 @@
 // getGlobalELFBinding - Returns the ELF specific binding type
 unsigned ELFWriter::getGlobalELFBinding(const GlobalValue *GV) {
   if (GV->hasInternalLinkage())
-    return ELFSym::STB_LOCAL;
+    return ELF::STB_LOCAL;
 
   if (GV->isWeakForLinker() && !GV->hasCommonLinkage())
-    return ELFSym::STB_WEAK;
+    return ELF::STB_WEAK;
 
-  return ELFSym::STB_GLOBAL;
+  return ELF::STB_GLOBAL;
 }
 
 // getGlobalELFType - Returns the ELF specific type for a global
 unsigned ELFWriter::getGlobalELFType(const GlobalValue *GV) {
   if (GV->isDeclaration())
-    return ELFSym::STT_NOTYPE;
+    return ELF::STT_NOTYPE;
 
   if (isa<Function>(GV))
-    return ELFSym::STT_FUNC;
+    return ELF::STT_FUNC;
 
-  return ELFSym::STT_OBJECT;
+  return ELF::STT_OBJECT;
 }
 
 // IsELFUndefSym - True if the global value must be marked as a symbol
@@ -364,7 +364,7 @@
     GblSym->Size = Size;
 
     if (S->HasCommonSymbols()) { // Symbol must go to a common section
-      GblSym->SectionIdx = ELFSection::SHN_COMMON;
+      GblSym->SectionIdx = ELF::SHN_COMMON;
 
       // A new linkonce section is created for each global in the
       // common section, the default alignment is 1 and the symbol

Modified: llvm/trunk/lib/CodeGen/ELFWriter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/ELFWriter.h?rev=108520&r1=108519&r2=108520&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/ELFWriter.h (original)
+++ llvm/trunk/lib/CodeGen/ELFWriter.h Fri Jul 16 02:53:29 2010
@@ -160,29 +160,29 @@
       SN->SectionIdx = NumSections++;
       SN->Type = Type;
       SN->Flags = Flags;
-      SN->Link = ELFSection::SHN_UNDEF;
+      SN->Link = ELF::SHN_UNDEF;
       SN->Align = Align;
       return *SN;
     }
 
     ELFSection &getNonExecStackSection() {
-      return getSection(".note.GNU-stack", ELFSection::SHT_PROGBITS, 0, 1);
+      return getSection(".note.GNU-stack", ELF::SHT_PROGBITS, 0, 1);
     }
 
     ELFSection &getSymbolTableSection() {
-      return getSection(".symtab", ELFSection::SHT_SYMTAB, 0);
+      return getSection(".symtab", ELF::SHT_SYMTAB, 0);
     }
 
     ELFSection &getStringTableSection() {
-      return getSection(".strtab", ELFSection::SHT_STRTAB, 0, 1);
+      return getSection(".strtab", ELF::SHT_STRTAB, 0, 1);
     }
 
     ELFSection &getSectionHeaderStringTableSection() {
-      return getSection(".shstrtab", ELFSection::SHT_STRTAB, 0, 1);
+      return getSection(".shstrtab", ELF::SHT_STRTAB, 0, 1);
     }
 
     ELFSection &getNullSection() {
-      return getSection("", ELFSection::SHT_NULL, 0);
+      return getSection("", ELF::SHT_NULL, 0);
     }
 
     ELFSection &getDataSection();

Modified: llvm/trunk/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp?rev=108520&r1=108519&r2=108520&view=diff
==============================================================================
--- llvm/trunk/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp (original)
+++ llvm/trunk/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp Fri Jul 16 02:53:29 2010
@@ -90,8 +90,8 @@
   // section.  This allows GDB to get a good stack trace, particularly on
   // linux x86_64.  Mark this as a PROGBITS section that needs to be loaded
   // into memory at runtime.
-  ELFSection &EH = EW.getSection(".eh_frame", ELFSection::SHT_PROGBITS,
-                                 ELFSection::SHF_ALLOC);
+  ELFSection &EH = EW.getSection(".eh_frame", ELF::SHT_PROGBITS,
+                                 ELF::SHF_ALLOC);
   // Pointers in the DWARF EH info are all relative to the EH frame start,
   // which is stored here.
   EH.Addr = (uint64_t)I.EhStart;
@@ -102,9 +102,9 @@
   // Add this single function to the symbol table, so the debugger prints the
   // name instead of '???'.  We give the symbol default global visibility.
   ELFSym *FnSym = ELFSym::getGV(F,
-                                ELFSym::STB_GLOBAL,
-                                ELFSym::STT_FUNC,
-                                ELFSym::STV_DEFAULT);
+                                ELF::STB_GLOBAL,
+                                ELF::STT_FUNC,
+                                ELF::STV_DEFAULT);
   FnSym->SectionIdx = Text.SectionIdx;
   FnSym->Size = I.FnEnd - I.FnStart;
   FnSym->Value = 0;  // Offset from start of section.





More information about the llvm-commits mailing list