summaryrefslogtreecommitdiffstats
path: root/lld/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* [Mips] Remove redundant #includeSimon Atanasyan2015-03-311-2/+0
| | | | | | No functional changes. llvm-svn: 233692
* [Mips] Move the `Elf_RegInfo` structure declaration to the separate fileSimon Atanasyan2015-03-302-36/+51
| | | | | | No functional changes. llvm-svn: 233618
* [ELF] Change type of `OutputSection::setType()` argument to int64_tSimon Atanasyan2015-03-301-1/+1
| | | | | | | | Type of `OutputSection::_type` field is int64_t. This change makes the field's and the argument's types consistent and allows to assign full range of values to the `OutputSection::_type` field. llvm-svn: 233617
* [Mips] clang-format the codeSimon Atanasyan2015-03-302-6/+2
| | | | | | No functional changes. llvm-svn: 233616
* [ELF] Use override keyword instead of virtualSimon Atanasyan2015-03-301-6/+6
| | | | | | No functional changes. llvm-svn: 233550
* [Mips] Do not use llvm::Optional for GP0 value and TLS section addressSimon Atanasyan2015-03-301-6/+6
| | | | | | | | | Use of llvm::Optional is redundant here. Initializing by default value 0 is enough. No functional changes. llvm-svn: 233549
* [Mips] Rename class method merge => mergeHeaderFlagsSimon Atanasyan2015-03-303-4/+5
| | | | | | No functional changes. llvm-svn: 233548
* [Mips] Fix writing R_MIPS_REL32 relocation addendumSimon Atanasyan2015-03-303-0/+23
| | | | | | | | | If input relocation records have RELA format while output dynamic relocations have REL format the only way to transfer a dynamic relocation addendum is to save it into the location modified by the dynamic relocation. llvm-svn: 233532
* ELF: Use C++11 non-member initialization.Rui Ueyama2015-03-282-56/+43
| | | | | | | | Setting _alignment member varaible to 0 look suspicious since the minimum alignment value is 1. I'm not going to change that number in this patch, though. llvm-svn: 233472
* ELF: Add a comment about the sysroot path.Rui Ueyama2015-03-281-3/+5
| | | | llvm-svn: 233461
* ELF: Do less if HAVE_CXXABI_H is not defined.Rui Ueyama2015-03-281-9/+9
| | | | | | | | | | | If HAVE_CXXABI_H is not defined, this function is the identity function. Because HAVE_CXXABI_H did not protect the entire function, it did extra stuffs before returning the argument. The new code calls fewer functions. This should help developers understand this piece of code. llvm-svn: 233460
* ELF: make code concise using "using".Rui Ueyama2015-03-281-8/+12
| | | | llvm-svn: 233458
* Use cast instead of dyn_cast in combination with llvm_unreachable.Rui Ueyama2015-03-281-8/+7
| | | | llvm-svn: 233456
* Use lambda for std::find_if.Rui Ueyama2015-03-281-15/+8
| | | | llvm-svn: 233454
* Remove else after return.Rui Ueyama2015-03-271-4/+3
| | | | llvm-svn: 233453
* Use lambda instead of defining a class with operator().Rui Ueyama2015-03-271-9/+3
| | | | llvm-svn: 233452
* ELF: make scopes of error code varaibles narrower.Rui Ueyama2015-03-271-11/+5
| | | | llvm-svn: 233450
* ELF: Simplify SymbolFile.Rui Ueyama2015-03-271-12/+2
| | | | llvm-svn: 233449
* ELF: Use C++11 non-member initialization.Rui Ueyama2015-03-271-12/+0
| | | | llvm-svn: 233434
* Use override keyword instead of virtual.Rui Ueyama2015-03-272-4/+4
| | | | llvm-svn: 233424
* Remove empty constructors.Rui Ueyama2015-03-275-19/+8
| | | | llvm-svn: 233423
* Fix formatting.Rui Ueyama2015-03-273-11/+4
| | | | llvm-svn: 233418
* Remove dead code.Rui Ueyama2015-03-271-28/+0
| | | | | | | I actually spend my time to understand this piece of code and then realized that this is all dead. llvm-svn: 233417
* ELF: Add override.Rui Ueyama2015-03-273-28/+23
| | | | | | | Some virtual member functions in ELF directory don't have virtual type specifier. Add override to them. llvm-svn: 233406
* ELF: Remove blank doPreFlight and finalize member functions.Rui Ueyama2015-03-274-12/+2
| | | | | | Make these functions non-pure and define the default implementations. llvm-svn: 233405
* Fix formatting.Rui Ueyama2015-03-271-18/+28
| | | | llvm-svn: 233402
* Rename all caps class names.Rui Ueyama2015-03-276-14/+14
| | | | | | | We have GOTAtom and PLTAtom classes because GOT or PLT are acronyms. "Dynamic offset table" or "dynamic" are not acronyms. llvm-svn: 233401
* Remove this->.Rui Ueyama2015-03-271-9/+7
| | | | llvm-svn: 233400
* [ARM] Handle GOT relocationsDenis Protivensky2015-03-273-9/+108
| | | | | | | | | | This includes relocs needed to link against glibc: R_ARM_BASE_PREL R_ARM_GOT_BREL Every reloc is accompanied with a test case. llvm-svn: 233383
* [ARM] Simplify IFUNC code by removing useless handlerDenis Protivensky2015-03-271-12/+1
| | | | llvm-svn: 233374
* [ARM] Add more IFUNC handlersDenis Protivensky2015-03-271-0/+3
| | | | llvm-svn: 233372
* Rename ELFLinkingContext instances "ctx" intead of "context".Rui Ueyama2015-03-2737-297/+272
| | | | llvm-svn: 233344
* Use llvm::make_unique.Rui Ueyama2015-03-268-31/+28
| | | | llvm-svn: 233319
* Remove duplicate code and empty classes.Rui Ueyama2015-03-2613-121/+26
| | | | llvm-svn: 233316
* Remove Makefiles.Rui Ueyama2015-03-2617-280/+0
| | | | | | | | Most developers prefer to not have them, and we agreed to remove them from LLD. http://lists.cs.uiuc.edu/pipermail/llvmdev/2015-March/083368.html llvm-svn: 233313
* [ARM] Implementation of PLT: handling of IFUNC calls (gnu_indirect_function)Leny Kholodov2015-03-265-4/+221
| | | | | | | | | | This diff includes implementation of linking calls to ifunc functions. It provides ifunc entries in PLT and corresponding relocations (R_ARM_ALU_PC_G0_NC, R_ARM_ALU_PC_G1_NC, R_ARM_LDR_PC_G2 for link-time and R_ARM_IRELATIVE for run-time). Differential Revision: http://reviews.llvm.org/D7833 llvm-svn: 233277
* Revert blank line after test commitLeny Kholodov2015-03-261-1/+0
| | | | llvm-svn: 233268
* Commit access verification: blank line has been addedLeny Kholodov2015-03-261-0/+1
| | | | llvm-svn: 233267
* [ARM] Handle mapping symbolsDenis Protivensky2015-03-268-16/+82
| | | | | | | | | | | Mapping symbols should have their own code models, and in some places must be treated in a specific way. Make $t denote Thumb code, and $a and $d denote ARM code. Set size, binding and type of mapping symbols to what the specification says. Differential Revision: http://reviews.llvm.org/D8601 llvm-svn: 233259
* Rename align2 -> align.Rui Ueyama2015-03-263-11/+11
| | | | | | I believe "2" stands for log2. Just "align" would be appropriate now. llvm-svn: 233248
* Store non-log2 values to Native files.Rui Ueyama2015-03-263-3/+3
| | | | llvm-svn: 233247
* Use arithmetic type to represent alignments (not in log2) everywhere.Rui Ueyama2015-03-265-29/+10
| | | | | | | This is the final step of conversion. Now log2 numbers are removed from everywhere! llvm-svn: 233246
* Use alignment values everywhere instead of log2.Rui Ueyama2015-03-2627-90/+73
| | | | | | | | This patch defines implicit conversion between integers and PowerOf2 instances, so uses of the classes is now implicit and look like regular integers. Now we are ready to remove the scaffolding. llvm-svn: 233245
* Define an implicit constructor which takes actual alignment value to PowerOf2.Rui Ueyama2015-03-266-9/+9
| | | | | | | The new constructor's type is the same, but this one takes not a log2 value but an alignment value itself, so the meaning is totally differnet. llvm-svn: 233244
* Make PowerOf2's constructor private.Rui Ueyama2015-03-266-9/+9
| | | | | | | Ban conversion from integers to PowerOf2 even if explicit to make all places we create PowerOf2 instances visible. llvm-svn: 233243
* Remove implicit constructor and operator int from PowerOf2.Rui Ueyama2015-03-2613-34/+43
| | | | | | | | | | This patch is to make instantiation and conversion to an integer explicit, so that we can mechanically replace all occurrences of the class with integer in the next step. Now get() returns an alignment value rather than its log2 value. llvm-svn: 233242
* Add a scaffolding to merge alignment representations.Rui Ueyama2015-03-263-8/+7
| | | | | | | | | | | | | | | | | We are using log2 values and values themselves to represent alignments. For example, alignment 8 is sometimes represented as 3 (8 == 2^3). We want to stop using log2 values. Because both types are regular arithmetic types, we cannot get help from a compiler to find places we mix two representations. That makes this merging work surprisingly hard because if I make a mistake, I'll just get wrong results at runtime (Yay types!). In this patch, I introduced a class to represents power-of-two values, which is basically an alias for an integer type. Once the migration is done, the class will be removed. llvm-svn: 233232
* YAML: Do not use 2^x notation to represent alignments.Rui Ueyama2015-03-251-11/+7
| | | | llvm-svn: 233222
* Use llvm::isPowerOf2. NFC.Rui Ueyama2015-03-251-1/+1
| | | | llvm-svn: 233219
* Inherit constructors. No functionality change.Rui Ueyama2015-03-252-16/+6
| | | | | | | We cannot use "using" to inherit constructors because the feature is not supported by MSVC 2013. llvm-svn: 233218
OpenPOWER on IntegriCloud