summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF
Commit message (Collapse)AuthorAgeFilesLines
...
* [Cleanup] Remove member functions added to support nostdlibShankar Easwaran2015-02-061-2/+2
| | | | | | No change in functionality. llvm-svn: 228379
* [ELF] Remove stray semicolonShankar Easwaran2015-02-061-1/+0
| | | | llvm-svn: 228378
* [ELF] Speedup creating program headers.Shankar Easwaran2015-02-061-4/+14
| | | | | | | | | | After the total number of program headers are determined, virtual addresses and file offsets need not be reassigned for sections whose virtual addresses and fileoffsets remained the same. This doesnot change any functionality. llvm-svn: 228377
* [ELF] Fix -nostdlib option.Shankar Easwaran2015-02-061-2/+2
| | | | | | | | | Only search library directories explicitly specified on the command line. Library directories specified in linker scripts (including linker scripts specified on the command line) are ignored. llvm-svn: 228375
* [ELF] Dont discard sections in the input file.Shankar Easwaran2015-02-051-10/+4
| | | | | | The reader was discarding certain types of sections from the input file. llvm-svn: 228268
* [ELF] Dont release ownership of MemoryBuffer.Shankar Easwaran2015-02-052-2/+2
| | | | | | MemoryBuffer is being released too early. ELFFile owns MemoryBuffer. llvm-svn: 228260
* [lld][ARM] Add relocations to perform function callsDenis Protivensky2015-02-031-12/+294
| | | | | | | | | | Added relocations to perform function calls with and without passing arguments. ARM-only, Thumb-only and mixed mode code generations are supported. Only simple veneers (direct instruction modification) are supported as ARM-Thumb interwork. Differential Revision: http://reviews.llvm.org/D7223 llvm-svn: 227961
* [ELF] Determine default search directories from Context.Shankar Easwaran2015-02-021-0/+9
| | | | | | | | Target specific LinkingContext's determine the default search directory. No change in functionality. llvm-svn: 227784
* [ELF] Set order of ctors/dtors sectionShankar Easwaran2015-02-011-0/+2
| | | | llvm-svn: 227707
* [ELF] got/got.plt sections are handled as typeGOTShankar Easwaran2015-02-011-2/+0
| | | | | | | The .got and .got.plt sections are already handled as typeGOT. There is no need to handle these atoms whose contentType is typeData. llvm-svn: 227706
* ELF: Don't use LayoutPass.Rui Ueyama2015-01-315-87/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we applied the LayoutPass to order atoms and then apply elf::ArrayOrderPass to sort them again. The first pass is basically supposed to sort atoms in the normal fashion (which is to sort symbols in the same order as the input files). The second pass sorts atoms in {init,fini}_array.<priority> by priority. The problem is that the LayoutPass is overkill. It analyzes references between atoms to make a decision how to sort them. It's slow, hard to understand, and above all, it doesn't seem that we need its feature for ELF in the first place. This patch remove the LayoutPass from ELF pass list. Now all reordering is done in elf::OrderPass. That pass sorts atoms by {init,fini}_array, and if they are not in the special section, they are ordered as the same order as they appear in the command line. The new code is far easier to understand, faster, and still able to create valid executables. Unlike the previous layout pass, elf::OrderPass doesn't count any attributes of an atom (e.g. permissions) except its position. It's OK because the writer takes care of them if we have to. This patch changes the order of final output, although that's benign. Tests are updated. http://reviews.llvm.org/D7278 llvm-svn: 227666
* Remove remaining code for PPC ELF target.Rui Ueyama2015-01-304-10/+1
| | | | llvm-svn: 227534
* ELF: Check StringRef::getAsInteger's return value.Rui Ueyama2015-01-291-7/+6
| | | | | | | getAsInteger may partially update its result argument. We need to check function return value to handle errors reliably. llvm-svn: 227510
* ELF: Remove dead code.Rui Ueyama2015-01-291-7/+6
| | | | | | | _runLayoutPass is always true. No way to set a new value to the member variable. llvm-svn: 227501
* Fix MSVC C4060 warning (switch statement contains no case or default).Rui Ueyama2015-01-291-2/+0
| | | | llvm-svn: 227410
* Remove PPC ELF targetGreg Fitzgerald2015-01-2811-349/+2
| | | | | | Differential Revision: http://reviews.llvm.org/D7225 llvm-svn: 227320
* [Mips] Fix enumeral and non-enumeral type in conditional expression warningSimon Atanasyan2015-01-281-1/+1
| | | | | | No functional changes. llvm-svn: 227297
* Remove kindInGroup reference.Rui Ueyama2015-01-271-9/+0
| | | | | | | | | | | | That kind of reference was used only in ELFFile, and the use of that reference there didn't seem to make sense. All test still pass (after adjusting symbol names) without that code. LLD is still be able to link LLD and Clang. Looks like we just don't need this. http://reviews.llvm.org/D7189 llvm-svn: 227259
* [Mips] Remove unused function argumentSimon Atanasyan2015-01-271-4/+4
| | | | | | No functional changes. llvm-svn: 227245
* [Mips] Support R_MIPS_GPREL16 relocationSimon Atanasyan2015-01-273-10/+20
| | | | llvm-svn: 227244
* Use Reference::KindValue instead of uint16_t to pass and save a relocation kindSimon Atanasyan2015-01-271-15/+15
| | | | | | No functional changes. llvm-svn: 227233
* [ARM] Correctly use make_unhandled_reloc_errorDenis Protivensky2015-01-271-1/+1
| | | | llvm-svn: 227184
* [Mips] Fix createMipsRelocationHandler specialization (take 2)Denis Protivensky2015-01-271-2/+8
| | | | | | | | | | | Misread buildbot's log. Both gcc and clang compile this fine. Original fix reason: gcc allows template specializations only in the same namespace where template has been declared. llvm-svn: 227183
* Revert "[Mips] Fix createMipsRelocationHandler specialization"Denis Protivensky2015-01-271-8/+2
| | | | | | The buildbot reported build failures for clang. llvm-svn: 227179
* [Mips] Fix createMipsRelocationHandler specializationDenis Protivensky2015-01-271-2/+8
| | | | | | | gcc allows template specializations only in the same namespace where template has been declared. llvm-svn: 227177
* [lld] Correct forming of ARM/Thumb atomsDenis Protivensky2015-01-275-17/+149
| | | | | | | | | | | | Symbols addressing Thumb code have zero bit set in st_value to distinguish them from ARM instructions. This caused wrong atoms' forming because of offset of one byte brought in by that corrected st_value. Fixed reading of st_value & st_value-related things in ARMELFFile while forming atoms. Symbol table generation is also fixed for Thumb atoms. Differential Revision: http://reviews.llvm.org/D7161 llvm-svn: 227174
* Fix incorrect atom ordinal.Rui Ueyama2015-01-271-2/+3
| | | | | | | | Anonymous atoms created there were getting wrong atom ordinal. LayoutAfter references take precedence over atom ordinals, so the bug was not visible, though. llvm-svn: 227168
* Fix local variable names.Rui Ueyama2015-01-261-2/+3
| | | | llvm-svn: 227147
* [Mips] Teach LLD to recognize one more MIPS target triple - mips64elSimon Atanasyan2015-01-2510-76/+134
| | | | | | | | | | | | This is initial patch to support MIPS64 object files linking. The patch just makes some classes more generalized, and rejects attempts to interlinking O32 and N64 ABI object files. I try to reuse the current MIPS target related classes as much as possible because O32 and N64 MIPS ABI are tightly related and share almost the same set of relocations, GOT, flags etc. llvm-svn: 227058
* [Mips] Make MipsELFObjectReader and MipsELFDSOReader class templatesSimon Atanasyan2015-01-252-10/+10
| | | | | | No functional changes. llvm-svn: 227051
* [Mips] Reformat the code with clang-formatSimon Atanasyan2015-01-251-2/+1
| | | | | | No functional changes. llvm-svn: 227049
* [Mips] Remove duplicated typedef'sSimon Atanasyan2015-01-252-4/+0
| | | | | | No functional changes. llvm-svn: 227048
* [Mips] Use template class argument instead of hard-coded type name inSimon Atanasyan2015-01-252-2/+2
| | | | | | | | the class field declarations. No functional changes. llvm-svn: 227047
* [ELF] Update for LLVM api changeSimon Atanasyan2015-01-251-2/+2
| | | | | | | | | The `Elf_Rel_Impl::setSymbolAndType` method now has the third argument `IsMips64EL` (like complement methods `getSymbol` and `getType`). While we do not support linking of MIPS64 ELF object file just pass `false` to the `setSymbolAndType`. llvm-svn: 227045
* Return a boolean value directly, instead of returning true if true and false ↵Rui Ueyama2015-01-241-4/+2
| | | | | | if false. llvm-svn: 226984
* Fix the ELF shared library build targets - take 2Greg Fitzgerald2015-01-2435-157/+117
| | | | | | | | | | lldELF is used by each ELF backend. lldELF's ELFLinkingContext also held a reference to each backend, creating a link-time cycle. This patch moves the backend references to lldDriver. Differential Revision: http://reviews.llvm.org/D7119 llvm-svn: 226976
* ELF: Remove dead code.Rui Ueyama2015-01-231-22/+0
| | | | llvm-svn: 226972
* ELF: Remove virtual from non-overriden functions.Rui Ueyama2015-01-232-38/+36
| | | | | | If it's overridden by a derived class, add override to the derived class. llvm-svn: 226971
* Remove extra parentheses.Rui Ueyama2015-01-231-1/+1
| | | | llvm-svn: 226965
* Revert " Fix the ELF shared library build targets"Greg Fitzgerald2015-01-2331-54/+157
| | | | | | This reverts commit 6a3f545b44cea46321e025d9ab773786af86cb51. llvm-svn: 226928
* Fix the ELF shared library build targetsGreg Fitzgerald2015-01-2331-157/+54
| | | | | | | | | | lldELF is used by each ELF backend. lldELF's ELFLinkingContext also held a reference to each backend, creating a link-time cycle. This patch moves the backend references to lldDriver. Differential Revision: http://reviews.llvm.org/D7119 llvm-svn: 226922
* Test commit.Denis Protivensky2015-01-231-1/+1
| | | | llvm-svn: 226903
* Add ARM backend to the autotools buildGreg Fitzgerald2015-01-221-1/+2
| | | | | From: Greg Fitzgerald <garious@gmail.com> llvm-svn: 226782
* Fix five of the shared library build targetsGreg Fitzgerald2015-01-215-5/+5
| | | | | | | | | | | | | | | | | | Before this patch there was a cyclic dependency between lldCore and lldReaderWriter. Only lldConfig could be built as a shared library. * Moved Reader and Writer base classes into lldCore. * The following shared libraries can now be built: lldCore lldYAML lldNative lldPasses lldReaderWriter Differential Revision: http://reviews.llvm.org/D7105 From: Greg Fitzgerald <garious@gmail.com> llvm-svn: 226732
* add_lld_library -> add_llvm_libraryGreg Fitzgerald2015-01-218-60/+38
| | | | | | | | | | | * Works better for shared libraries (sets PRIVATE instead of INTERFACE) * Fixes http://llvm.org/bugs/show_bug.cgi?id=22269 * Also, use build-target names instead of component names Differential Revision: http://reviews.llvm.org/D7074 From: Greg Fitzgerald <garious@gmail.com> llvm-svn: 226702
* [ELF] Minimal implementation for ARM static linkingGreg Fitzgerald2015-01-2119-0/+709
| | | | | | | | | | | | | | The code is able to statically link the simplest case of: int main() { return 0; } * Only works with ARM code - no Thumb code, no interwork (-marm -mno-thumb-interwork) * musl libc built with no interwork and no Thumb code Differential Revision: http://reviews.llvm.org/D6716 From: Denis Protivensky <dprotivensky@accesssoftek.com> llvm-svn: 226643
* ELF: Handle sh_addralign being set to zeroWill Newton2015-01-201-0/+3
| | | | | | | | sh_addralign of zero is equivalent to sh_addralign of one, meaning no alignment specified. Avoid calculating Log2 or modulus when sh_addralign is zero as the results will not be useful. llvm-svn: 226572
* ELF: Support detection of relocation errors during processingWill Newton2015-01-2019-55/+64
| | | | | | | | | | | At the moment errors in relocation processing such as out of range values are not detected or at best trapped by asserts which will not be present in release builds. This patch adds support for checking error return values from applyRelocation() calls and printing an appropriate error message. It also adds support for printing multiple errors rather than just the first one. llvm-svn: 226557
* Add LLVM_LINK_COMPONENTS for the shared object buildGreg Fitzgerald2015-01-166-0/+12
| | | | | | | Differential Revision: http://reviews.llvm.org/D7023 From: Greg Fitzgerald <garious@gmail.com> llvm-svn: 226346
* Move common code to base class.Rui Ueyama2015-01-161-20/+0
| | | | llvm-svn: 226329
OpenPOWER on IntegriCloud