[lld] r189137 - [lld][ELF] Rename typeTLV content type for ELF

Shankar Easwaran shankare at codeaurora.org
Fri Aug 23 13:03:28 PDT 2013


Author: shankare
Date: Fri Aug 23 15:03:28 2013
New Revision: 189137

URL: http://llvm.org/viewvc/llvm-project?rev=189137&view=rev
Log:
[lld][ELF] Rename typeTLV content type for ELF

typeTLV content type is used by Darwin to represent thread local
storage. A new contentType has to be made to represent ELF
thread local storage data. These have been set to

- typeThreadZeroFill (represents TBSS storage)
- typeThreadData     (represents TDATA storage)

Modified:
    lld/trunk/include/lld/Core/DefinedAtom.h
    lld/trunk/lib/Core/DefinedAtom.cpp
    lld/trunk/lib/ReaderWriter/ELF/Atoms.h
    lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
    lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
    lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
    lld/trunk/test/elf/X86_64/largebss.test

Modified: lld/trunk/include/lld/Core/DefinedAtom.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/DefinedAtom.h?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/include/lld/Core/DefinedAtom.h (original)
+++ lld/trunk/include/lld/Core/DefinedAtom.h Fri Aug 23 15:03:28 2013
@@ -145,6 +145,8 @@ public:
     typeTLVInitialZeroFill, // TLV initial zero fill data [Darwin]
     typeTLVInitializerPtr,  // pointer to thread local initializer [Darwin]
     typeDataDirectoryEntry, // linker created for data directory header [PECOFF]
+    typeThreadZeroFill,     // Uninitialized thread local data(TBSS) [ELF]
+    typeThreadData,         // Initialized thread local data(TDATA) [ELF]
   };
 
   // Permission bits for atoms and segments. The order of these values are
@@ -311,7 +313,8 @@ public:
     ContentType atomContentType = contentType();
     return !(atomContentType == DefinedAtom::typeZeroFill ||
              atomContentType == DefinedAtom::typeZeroFillFast ||
-             atomContentType == DefinedAtom::typeTLVInitialZeroFill);
+             atomContentType == DefinedAtom::typeTLVInitialZeroFill ||
+             atomContentType == DefinedAtom::typeThreadZeroFill);
   }
 
 protected:

Modified: lld/trunk/lib/Core/DefinedAtom.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/DefinedAtom.cpp?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/lib/Core/DefinedAtom.cpp (original)
+++ lld/trunk/lib/Core/DefinedAtom.cpp Fri Aug 23 15:03:28 2013
@@ -65,6 +65,8 @@ DefinedAtom::ContentPermissions DefinedA
   case typeTLVInitialData:
   case typeTLVInitialZeroFill:
   case typeTLVInitializerPtr:
+  case typeThreadData:
+  case typeThreadZeroFill:
     return permRW_L;
 
   case typeUnknown:

Modified: lld/trunk/lib/ReaderWriter/ELF/Atoms.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Atoms.h?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Atoms.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Atoms.h Fri Aug 23 15:03:28 2013
@@ -286,8 +286,8 @@ public:
 
     if (_section->sh_flags ==
         (llvm::ELF::SHF_ALLOC | llvm::ELF::SHF_WRITE | llvm::ELF::SHF_TLS)) {
-      return _contentType = _section->sh_type == llvm::ELF::SHT_NOBITS ? typeTLVInitialZeroFill
-                                                        : typeTLVInitialData;
+      return _contentType = _section->sh_type == llvm::ELF::SHT_NOBITS ? typeThreadZeroFill
+                                                        : typeThreadData;
     }
 
     if (_symbol->getType() == llvm::ELF::STT_GNU_IFUNC)

Modified: lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/DefaultLayout.h Fri Aug 23 15:03:28 2013
@@ -343,9 +343,9 @@ Layout::SectionOrder DefaultLayout<ELFT>
   case DefinedAtom::typeStub:
     return ORDER_PLT;
 
-  case DefinedAtom::typeTLVInitialData:
+  case DefinedAtom::typeThreadData:
     return ORDER_TDATA;
-  case DefinedAtom::typeTLVInitialZeroFill:
+  case DefinedAtom::typeThreadZeroFill:
     return ORDER_TBSS;
   default:
     // If we get passed in a section push it to OTHER

Modified: lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/SectionChunks.h Fri Aug 23 15:03:28 2013
@@ -146,11 +146,11 @@ public:
     case DefinedAtom::typeGOT:
     case DefinedAtom::typeStub:
     case DefinedAtom::typeResolver:
-    case DefinedAtom::typeTLVInitialData:
+    case DefinedAtom::typeThreadData:
       this->_type = SHT_PROGBITS;
       break;
 
-    case DefinedAtom::typeTLVInitialZeroFill:
+    case DefinedAtom::typeThreadZeroFill:
     case DefinedAtom::typeZeroFillFast:
     case DefinedAtom::typeZeroFill:
       this->_type = SHT_NOBITS;
@@ -167,8 +167,8 @@ public:
     case DefinedAtom::permRW_:
     case DefinedAtom::permRW_L:
       this->_flags = SHF_ALLOC | SHF_WRITE;
-      if (_contentType == DefinedAtom::typeTLVInitialData ||
-          _contentType == DefinedAtom::typeTLVInitialZeroFill)
+      if (_contentType == DefinedAtom::typeThreadData ||
+          _contentType == DefinedAtom::typeThreadZeroFill)
         this->_flags |= SHF_TLS;
       break;
     case DefinedAtom::permRWX:
@@ -292,7 +292,7 @@ const lld::AtomLayout &AtomSection<ELFT>
     case DefinedAtom::typeGOT:
     case DefinedAtom::typeStub:
     case DefinedAtom::typeResolver:
-    case DefinedAtom::typeTLVInitialData:
+    case DefinedAtom::typeThreadData:
       _atoms.push_back(new (_alloc) lld::AtomLayout(atom, fOffset, 0));
       this->_fsize = fOffset + definedAtom->size();
       this->_msize = mOffset + definedAtom->size();
@@ -301,7 +301,7 @@ const lld::AtomLayout &AtomSection<ELFT>
                                    << "Adding atom: " << atom->name() << "@"
                                    << fOffset << "\n");
       break;
-    case DefinedAtom::typeTLVInitialZeroFill:
+    case DefinedAtom::typeThreadZeroFill:
     case DefinedAtom::typeZeroFill:
     case DefinedAtom::typeZeroFillFast:
       _atoms.push_back(new (_alloc) lld::AtomLayout(atom, mOffset, 0));
@@ -713,8 +713,8 @@ void SymbolTable<ELFT>::addDefinedAtom(E
     type = llvm::ELF::STT_OBJECT;
     sym.st_value = addr;
     break;
-  case DefinedAtom::typeTLVInitialData:
-  case DefinedAtom::typeTLVInitialZeroFill:
+  case DefinedAtom::typeThreadData:
+  case DefinedAtom::typeThreadZeroFill:
     type = llvm::ELF::STT_TLS;
     sym.st_value = addr;
     break;

Modified: lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp (original)
+++ lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp Fri Aug 23 15:03:28 2013
@@ -487,6 +487,10 @@ struct ScalarEnumerationTraits<lld::Defi
                           lld::DefinedAtom::typeTLVInitialZeroFill);
     io.enumCase(value, "tlv-initializer-ptr",
                           lld::DefinedAtom::typeTLVInitializerPtr);
+    io.enumCase(value, "thread-data",
+                          lld::DefinedAtom::typeThreadData);
+    io.enumCase(value, "thread-zero-fill",
+                          lld::DefinedAtom::typeThreadZeroFill);
   }
 };
 

Modified: lld/trunk/test/elf/X86_64/largebss.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/X86_64/largebss.test?rev=189137&r1=189136&r2=189137&view=diff
==============================================================================
--- lld/trunk/test/elf/X86_64/largebss.test (original)
+++ lld/trunk/test/elf/X86_64/largebss.test Fri Aug 23 15:03:28 2013
@@ -19,6 +19,6 @@ CHECK:    size:            4000
 CHECK:    section-name:    .bss
 CHECK:  - name:            largetbss
 CHECK:    scope:           global
-CHECK:    type:            tlv-zero-fill
+CHECK:    type:            thread-zero-fill
 CHECK:    size:            4000
 CHECK:    section-name:    .tbss





More information about the llvm-commits mailing list