[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