| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
I think it is clear by now that the new linker is viable.
llvm-svn: 262158
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 240147
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 237881
|
|
|
|
|
|
| |
This adds support of copying objects from shared libraries.
llvm-svn: 235705
|
|
|
|
| |
llvm-svn: 235486
|
|
|
|
| |
llvm-svn: 235485
|
|
|
|
|
|
| |
No functional changes.
llvm-svn: 235484
|
|
|
|
| |
llvm-svn: 235182
|
|
|
|
| |
llvm-svn: 234991
|
|
|
|
| |
llvm-svn: 234989
|
|
|
|
| |
llvm-svn: 234876
|
|
|
|
| |
llvm-svn: 234874
|
|
|
|
| |
llvm-svn: 234732
|
|
|
|
|
|
|
|
|
| |
This includes implementation of PLT0 entry.
For testing, libfn.so binary is added since
there's no way to link shared objects with lld yet.
llvm-svn: 234588
|
|
|
|
|
|
|
| |
Use consistent naming: commonly used generator methods
don't have 'Entry' suffices.
llvm-svn: 234585
|
|
|
|
| |
llvm-svn: 234582
|
|
|
|
|
|
| |
Handle veneers only for call-like relocations.
llvm-svn: 234580
|
|
|
|
| |
llvm-svn: 234576
|
|
|
|
| |
llvm-svn: 234573
|
|
|
|
| |
llvm-svn: 234474
|
|
|
|
|
|
|
|
| |
This required splitting up veneer atoms into pieces,
where every piece is paired with mapping atom of
the corresponding type.
llvm-svn: 234473
|
|
|
|
|
|
|
|
| |
SimpleFile is the only derived class of MutableFile.
This patch reduces the height of class hierarchy by removing
MutableFile class.
llvm-svn: 234354
|
|
|
|
| |
llvm-svn: 234311
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make PLT entry atoms represent mapping symbols in the Release mode,
while in the Debug mode they are still function-like symbols
with regular names.
It's legal that mapping symbols denote unnamed parts of code,
and PLT entries are not required to have function-like names.
Differential Revision: http://reviews.llvm.org/D8819
llvm-svn: 234301
|
|
|
|
|
|
|
|
|
|
|
| |
The function call that goes through PLT table may be performed
from both ARM and Thumb code.
This situation requires adding a veneer to original PLT code
(which is always ARM) to effect Thumb-to-ARM transition.
Differential Revision: http://reviews.llvm.org/D8701
llvm-svn: 233900
|
|
|
|
| |
llvm-svn: 233859
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 233374
|
|
|
|
| |
llvm-svn: 233372
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
This includes handling of R_ARM_TLS_IE32 and R_ARM_TLS_LE32 relocs.
Differential Revision: http://reviews.llvm.org/D8353
llvm-svn: 232708
|
|
|
|
| |
llvm-svn: 230925
|
|
|
|
|
|
|
| |
The fix is for r228680.
This makes tests also work.
llvm-svn: 228837
|
|
|
|
|
|
|
|
|
|
| |
When calling ARM code from Thumb and vice versa,
a veneer that switches instruction set should be generated.
Added veneer generation for ARM_JUMP24 ARM_THM_JUMP24 instructions.
Differential Revision: http://reviews.llvm.org/D7502
llvm-svn: 228680
|
|
|
|
| |
llvm-svn: 228453
|
|
|
|
| |
llvm-svn: 227410
|
|
|
|
| |
llvm-svn: 226903
|
|
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
|