summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF/ARM
Commit message (Collapse)AuthorAgeFilesLines
* Remove the old ELF linker.Rafael Espindola2016-02-2815-2565/+0
| | | | | | I think it is clear by now that the new linker is viable. llvm-svn: 262158
* Add File::kind's for all subclasses of File.Pete Cooper2016-01-141-1/+2
| | | | | | | | | | | | This is to enable isa<> support for any files which need it. It will be used in an upcoming patch to differentiate MachOFile from other implicitly generated files. Reviewed by Lang Hames. Differential Revision: http://reviews.llvm.org/D16103 llvm-svn: 257830
* Update for LLVM function name change.Rui Ueyama2016-01-141-1/+1
| | | | llvm-svn: 257801
* Set the folder for libraries to 'lld libraries'. NFC.Pete Cooper2016-01-071-1/+1
| | | | | | | | | | | | In a UI such as XCode, LLVM source files are in 'libraries' while clang files are in 'clang libraries'. This change moves the lld source to 'lld libraries' to make code browsing easier. It should be NFC as the build itself is still the same, just the structure in a UI differs. llvm-svn: 257001
* [ELF] Apply segments from linker scriptsDenis Protivensky2015-07-231-1/+1
| | | | | | | | | | | | | | Put sections to segments according to linker scripts if available. Rework the code of TargetLayout::assignSectionsToSegments so it operates on the given list of segments, which can be either read from linker scripts or constructed as before. Handle NONE segments defined in linker scripts by putting corresponding sections to PT_NULL segment. Consider flags set for segments through linker scripts. Differential Revision: http://reviews.llvm.org/D10918 llvm-svn: 243002
* [ELF] Define __start_XXX/__stop_XXX symbols where XXX is a section nameSimon Atanasyan2015-07-031-0/+2
| | | | | | | | | | | | | | This is GNU ELF linker extension used particularly by LibC code. If input object files contain section named XXX, and the XXX is a valid C identifier, and there are undefined or weak symbols __start_XXX/__stop_XXX, linker should define __start_XXX/__stop_XXX symbols point to the begin/end of the XXX section correspondingly. For example, without support of this extension statically linked executables for X86_64 and Mips (maybe other) targets do not flush IO buffers at the end of executing. llvm-svn: 241341
* Simplify Pass::perform to take a SimpleFile& instead of unique_ptr<SimpleFile>&David Blaikie2015-06-191-18/+18
| | | | | | | | None of the implementations replace the SimpleFile with some other file, they just modify the SimpleFile in-place, so a direct reference to the file is sufficient. llvm-svn: 240167
* [lld] Allow LLD passes to return error codes.Lang Hames2015-06-191-1/+3
| | | | llvm-svn: 240147
* [ARM] Fix enum type cast in switchDenis Protivensky2015-05-261-1/+1
| | | | | | | | It caused warning in clang assuming the default branch would never be reached with the given switch key type. llvm-svn: 238194
* [ARM] Move out .ARM.exidx related things to ARM backendDenis Protivensky2015-05-263-10/+54
| | | | llvm-svn: 238191
* [ARM] report_fatal_error for not implemented functionalityDenis Protivensky2015-05-221-5/+5
| | | | llvm-svn: 238017
* [ARM] Ability to add GOT and PLTGOT entries for same symbolDenis Protivensky2015-05-221-6/+14
| | | | | | | | | | | | | | | | | These two serve different purpose: PLTGOT entries are (usually) lazily resolved and serve as trampolines to correctly call dynamically linked functions. They often have R_*_JUMP_SLOT dynamic relocation type used. Simple GOT entries hold other things, one of them may be R_*_GLOB_DAT to correctly reference global and static data. This is also used to hold dynamically linked function's address. To properly handle cases when shared object's function is called and at the same time its address is taken, we need to be able to have both GOT and PLTGOT entries bearing different dynamic relocation types for the same symbol. llvm-svn: 238015
* [ARM] Implement R_ARM_GLOB_DAT for GOT entriesDenis Protivensky2015-05-223-2/+10
| | | | | | | | This is used when referencing global or static data in shared objects. This is also used when function's address is taken and function call is made indirectly. llvm-svn: 238014
* [ARM] Add dynamic symbols to the dynamic library writerDenis Protivensky2015-05-211-1/+8
| | | | llvm-svn: 237898
* [ARM] Remove useless file with writer's instantiation stubDenis Protivensky2015-05-212-19/+0
| | | | llvm-svn: 237896
* [ARM] Remove unused field in executable writerDenis Protivensky2015-05-211-2/+1
| | | | llvm-svn: 237892
* [ARM] Move out common Writer functionality to ARMELFWriterDenis Protivensky2015-05-216-83/+149
| | | | llvm-svn: 237891
* [ARM] Remove unused fields in dynamic library writerDenis Protivensky2015-05-211-5/+1
| | | | llvm-svn: 237883
* [ARM] Add skeleton implementation of DSO linkingDenis Protivensky2015-05-213-0/+49
| | | | llvm-svn: 237881
* [ARM] Add needed symbols during dynamic executable linkingDenis Protivensky2015-05-201-0/+15
| | | | | | These include _GLOBAL_OFFSET_TABLE_ and _DYNAMIC. llvm-svn: 237791
* [ARM] Use the correct variable name and unbreak buildbot.Davide Italiano2015-05-081-1/+1
| | | | llvm-svn: 236880
* [ARM] Generation of .ARM.exidx/.ARM.extab sectionsLeny Kholodov2015-05-083-1/+91
| | | | | | | | | | | | This patch provides generation of .ARM.exidx & .ARM.extab sections which are used for unwinding. The patch adds new content type typeARMExidx for atoms from .ARM.exidx section and integration of atoms with such type to the ELF ReaderWriter. exidx.test has been added with checking of contents of .ARM.exidx section and .ARM.extab section. Differential Revision: http://reviews.llvm.org/D9324 llvm-svn: 236873
* [ARM] Check overflow of R_ARM_THM_JUMP11Denis Protivensky2015-05-081-1/+4
| | | | llvm-svn: 236842
* [ARM] Check overflow of R_ARM_CALL/JUMP24Denis Protivensky2015-05-081-0/+6
| | | | llvm-svn: 236841
* [ARM] Check overflow of R_ARM_THM_CALL/JUMP24Denis Protivensky2015-05-081-0/+4
| | | | llvm-svn: 236839
* [ARM] Check overflow of R_ARM_PREL31Denis Protivensky2015-05-071-1/+4
| | | | llvm-svn: 236729
* [ARM] llvm_unreachable => make_dynamic_error in R_ARM_BASE_PRELDenis Protivensky2015-05-071-1/+2
| | | | llvm-svn: 236727
* [ARM] llvm_unreachable => make_*_reloc_error in group relocsDenis Protivensky2015-05-071-9/+8
| | | | llvm-svn: 236726
* [ARM] Return directly from switch in relocation handlerDenis Protivensky2015-05-071-47/+28
| | | | llvm-svn: 236724
* [ARM] Add return codes to relocation handlersDenis Protivensky2015-05-071-76/+95
| | | | llvm-svn: 236723
* Add missing snippets from r235880Adhemerval Zanella2015-04-271-0/+3
| | | | llvm-svn: 235890
* [ARM] Update TODO notesDenis Protivensky2015-04-241-6/+7
| | | | llvm-svn: 235706
* [ARM] Implement R_ARM_COPY relocationDenis Protivensky2015-04-242-2/+41
| | | | | | This adds support of copying objects from shared libraries. llvm-svn: 235705
* [ARM] Replace branches to undefined weak functions with NOPLeny Kholodov2015-04-221-0/+39
| | | | | | | | | According to the code model (ARM, Thumb, Thumb2) this patch updates the b/bl/blx 0 instructions with NOP. test/elf/ARM/weak-branch.test has been added with tests for all available NOP (A1, T1, T2 encodings). Differential Revision: http://reviews.llvm.org/D8807 llvm-svn: 235498
* [ARM] Implement veneers for dynamic executable linkingDenis Protivensky2015-04-221-2/+8
| | | | llvm-svn: 235486
* [ARM] Move veneer generators to base class. NFCDenis Protivensky2015-04-221-38/+52
| | | | llvm-svn: 235485
* [ARM] Rename static veneer atoms to absolute code veneer atomsDenis Protivensky2015-04-221-28/+28
| | | | | | No functional changes. llvm-svn: 235484
* [ARM] Implement R_ARM_TLS_IE32 for dynamic executableDenis Protivensky2015-04-173-1/+30
| | | | llvm-svn: 235182
* [ARM] Don't generate veneers when bl->blx fixup is possibleDenis Protivensky2015-04-151-8/+39
| | | | llvm-svn: 234991
* [ARM] Pass Thumb flag to handler methods instead of atomDenis Protivensky2015-04-151-10/+9
| | | | llvm-svn: 234989
* ELF: Remove redundant namespace qualifiers.Rui Ueyama2015-04-142-2/+2
| | | | llvm-svn: 234938
* ELF: Remove ELFT template argument when referring the base class.Rui Ueyama2015-04-144-9/+8
| | | | | | | | We don't need to repeat the template argument. They are not ambiguous. MIPS is parameterized for ELFT, so we can't do this for MIPS, though. llvm-svn: 234913
* [ARM] Implement mapping symbols for PLT0 entryDenis Protivensky2015-04-141-27/+34
| | | | llvm-svn: 234876
* [ARM] Move out mapping atom functionality to a separate classDenis Protivensky2015-04-141-46/+36
| | | | llvm-svn: 234874
* ELF: Inline ELFReader typedefs which are used only once.Rui Ueyama2015-04-141-5/+2
| | | | llvm-svn: 234862
* ELF: Make ARMELFMappingAtom a non-template class.Rui Ueyama2015-04-141-13/+18
| | | | llvm-svn: 234860
* ELF: Remove this-> as much as we can.Rui Ueyama2015-04-143-9/+9
| | | | | | | These this-> are there because their classes were templated. They are no longer templated. llvm-svn: 234859
* ELF: Remove ELFT parameter from ARMELFFile.Rui Ueyama2015-04-142-36/+32
| | | | llvm-svn: 234858
* ELF: Remove ELFT and LinkingContext template parameters from ELFReader.Rui Ueyama2015-04-143-4/+4
| | | | | | | | | | | | | | | | | | | Previously, ELFReader takes three template arguments: EFLT, LinkingContextT and FileT. FileT is itself templated. So it was a bit complicated. Maybe too much. Most architectures don't actually need to be parameterized for ELFT. For example, x86 is always ELF32LE and x86-64 is ELF64LE. However, because ELFReader requires a ELFT argument, we needed to parameterize a class even if not needed. This patch removes the parameter from the class. So now we can de-templatize such classes (I didn't do that in this patch, though). This patch also removes ContextT parameter since it didn't have to be passed as a template argument. llvm-svn: 234853
* ELF: Use less templates for ELF types.Rui Ueyama2015-04-145-49/+37
| | | | | | | These classes are templated but actually instantiated for only one ELF type. llvm-svn: 234830
OpenPOWER on IntegriCloud