Rafael Espindola
|
862d688cbd
|
Fix relocations with renamed symbols.
llvm-svn: 117575
|
2010-10-28 19:08:03 +00:00 |
|
Rafael Espindola
|
e62cf892ae
|
Aliases defined with .symver should copy the binding of the symbols they alias.
Move the existing patching for undefined symbols so that all the patching
is done in the same function.
llvm-svn: 117570
|
2010-10-28 18:33:03 +00:00 |
|
Rafael Espindola
|
ff7e4e4e43
|
Implement R_X86_64_DTPOFF32.
llvm-svn: 117548
|
2010-10-28 15:11:03 +00:00 |
|
Rafael Espindola
|
1d1ff5485c
|
Implement TLSLD.
llvm-svn: 117547
|
2010-10-28 15:02:40 +00:00 |
|
Rafael Espindola
|
8372247e83
|
Implement DTPOFF.
llvm-svn: 117546
|
2010-10-28 14:48:59 +00:00 |
|
Rafael Espindola
|
c44c5b374a
|
Implement TLSLDM.
llvm-svn: 117544
|
2010-10-28 14:37:09 +00:00 |
|
Rafael Espindola
|
d8ef67f8b9
|
Implement VK_GOTNTPOFF and switch RelocNeedsGOT to use VariantKind.
llvm-svn: 117543
|
2010-10-28 14:22:44 +00:00 |
|
Rafael Espindola
|
68ec803155
|
Add support for R_386_TLS_GD, R_386_TLS_LE_32, R_386_TLS_IE and R_386_TLS_LE.
llvm-svn: 117494
|
2010-10-27 21:23:52 +00:00 |
|
Rafael Espindola
|
2ea1239070
|
Implement R_X86_64_GOTTPOFF, R_X86_64_TLSGD and R_X86_64_TPOFF32.
llvm-svn: 117481
|
2010-10-27 20:28:07 +00:00 |
|
Benjamin Kramer
|
a79201f572
|
Replace pointer arithmetic with StringRef::substr.
llvm-svn: 117477
|
2010-10-27 19:53:52 +00:00 |
|
Rafael Espindola
|
ca302c994a
|
Produce an error for an invalid use of .symver.
llvm-svn: 117462
|
2010-10-27 17:56:18 +00:00 |
|
Rafael Espindola
|
58a0ea80a4
|
Symbols defined as the difference of other two end up in the ABS section.
llvm-svn: 117451
|
2010-10-27 16:04:30 +00:00 |
|
Rafael Espindola
|
23d05a8675
|
Add support for the .symver directive. This is really ugly, but most of it is
contained in the ELF object writer.
llvm-svn: 117448
|
2010-10-27 15:18:17 +00:00 |
|
Rafael Espindola
|
f5b4013598
|
Move more logic to isInSymtab and simplify.
llvm-svn: 117447
|
2010-10-27 14:44:52 +00:00 |
|
Rafael Espindola
|
5748458e7d
|
Add support for emitting ARM file attributes.
llvm-svn: 117275
|
2010-10-25 17:50:35 +00:00 |
|
Rafael Espindola
|
c6e7790c4b
|
Add X86::reloc_global_offset_table and use it to have a single place where
we check for _GLOBAL_OFFSET_TABLE_.
llvm-svn: 117241
|
2010-10-24 17:35:42 +00:00 |
|
Wesley Peck
|
488027efa3
|
Making the e_machine configurable by the target backend in ELFObjectWriter.
llvm-svn: 117099
|
2010-10-22 15:52:49 +00:00 |
|
Rafael Espindola
|
5f43aeb079
|
Small cleanups and fixes in preparation for fixing _GLOBAL_OFFSET_TABLE_.
llvm-svn: 116848
|
2010-10-19 19:31:37 +00:00 |
|
Rafael Espindola
|
9a98116bb7
|
Implement R_386_GOT32.
llvm-svn: 116744
|
2010-10-18 20:47:21 +00:00 |
|
Rafael Espindola
|
c75defe576
|
Relocate with .bss instead of using the symbol. Matches gas behavior.
llvm-svn: 116741
|
2010-10-18 20:25:33 +00:00 |
|
Rafael Espindola
|
6504490709
|
Reenable assert.
llvm-svn: 116738
|
2010-10-18 19:33:01 +00:00 |
|
Rafael Espindola
|
7cc236c87f
|
Produce ELF::R_386_GOTPC relocations.
llvm-svn: 116728
|
2010-10-18 18:36:12 +00:00 |
|
Rafael Espindola
|
d74116b1e8
|
Make the bots happy.
llvm-svn: 116719
|
2010-10-18 18:03:28 +00:00 |
|
Rafael Espindola
|
bf9107e924
|
Produce a R_386_PLT32 when needed. Moved the default cases of switches to the
start for consistency.
llvm-svn: 116715
|
2010-10-18 16:58:03 +00:00 |
|
Rafael Espindola
|
4a7459403a
|
Handle GOTOFF correctly on i386.
llvm-svn: 116711
|
2010-10-18 16:38:04 +00:00 |
|
Benjamin Kramer
|
e8c2e82a84
|
Fix a typo and silence unused variable warnings in -Asserts build.
llvm-svn: 116685
|
2010-10-17 07:38:40 +00:00 |
|
Rafael Espindola
|
be5c52d2dc
|
Add a MCObjectFormat class so that code common to all targets that use a
single object format can be shared.
This also adds support for
mov zed+(bar-foo), %eax
on ELF and COFF targets.
llvm-svn: 116675
|
2010-10-16 18:23:53 +00:00 |
|
Rafael Espindola
|
125360f835
|
Refactor alias handling to AliasedSymbol.
llvm-svn: 116600
|
2010-10-15 18:25:33 +00:00 |
|
Rafael Espindola
|
9b114d966a
|
Refactor code a bit and avoid creating unnecessary entries in the string
map.
llvm-svn: 116579
|
2010-10-15 15:39:06 +00:00 |
|
Rafael Espindola
|
2cdc3d6235
|
Remove some code duplication.
llvm-svn: 116484
|
2010-10-14 16:34:44 +00:00 |
|
Rafael Espindola
|
d0417ac2e1
|
Another case of 256 sections not being enough :-)
llvm-svn: 115858
|
2010-10-06 22:28:19 +00:00 |
|
Rafael Espindola
|
ed469a30f0
|
Get binding and visibility info from the the alias, but Type from the symbol
being aliased.
llvm-svn: 115836
|
2010-10-06 21:02:29 +00:00 |
|
Rafael Espindola
|
6283a4a478
|
If a symbol is global, reloc against it even if it is in a mergeable section.
llvm-svn: 115817
|
2010-10-06 19:27:21 +00:00 |
|
Rafael Espindola
|
d085e53b36
|
Make sure weak symbols are listed after the local ones.
llvm-svn: 115795
|
2010-10-06 16:47:31 +00:00 |
|
Rafael Espindola
|
0c327e6e77
|
Correctly handle GOTPCREL relocations.
llvm-svn: 115793
|
2010-10-06 16:23:36 +00:00 |
|
Rafael Espindola
|
8c7f9745de
|
Use a relocation against the symbol if it is a PLT and the symbol is in another
section. Common because of linkonce sections.
llvm-svn: 115718
|
2010-10-05 23:57:26 +00:00 |
|
Rafael Espindola
|
e2bc98a2b2
|
Implement more alias cases.
llvm-svn: 115699
|
2010-10-05 22:26:43 +00:00 |
|
Rafael Espindola
|
d82f0f7aac
|
256 sections should be enough for anyone...
llvm-svn: 115687
|
2010-10-05 21:20:07 +00:00 |
|
Rafael Espindola
|
5762077d52
|
Don't crash in a strange .size directive.
llvm-svn: 115684
|
2010-10-05 21:02:45 +00:00 |
|
Rafael Espindola
|
f850cfbc16
|
Implement a simple alias case and refactor the code a bit so that the
isInSymtab and isLocal logic in the two loops don't get easily out of sync.
llvm-svn: 115643
|
2010-10-05 18:01:23 +00:00 |
|
Rafael Espindola
|
e829a55e8e
|
Produce a undefined reference to _GLOBAL_OFFSET_TABLE_ when needed.
llvm-svn: 115623
|
2010-10-05 15:48:37 +00:00 |
|
Rafael Espindola
|
5f53528867
|
On ELF we need to know which symbols are used in relocations to decide if
they should be in the symbol table or not. Instead of "guessing", just compute
the symbol table after the relocations are known.
llvm-svn: 115619
|
2010-10-05 15:11:03 +00:00 |
|
Rafael Espindola
|
dcac047c7f
|
Implement ELF::R_X86_64_GOTPCREL.
llvm-svn: 115547
|
2010-10-04 19:51:39 +00:00 |
|
Rafael Espindola
|
6b80b08cec
|
Move isFixupKindX86PCRel.
llvm-svn: 115545
|
2010-10-04 19:46:28 +00:00 |
|
Rafael Espindola
|
f7e642c0da
|
Produce a R_X86_64_PLT32 when needed.
llvm-svn: 115541
|
2010-10-04 19:04:13 +00:00 |
|
Rafael Espindola
|
08361a0329
|
Produce a R_X86_64_GOT32 when needed.
llvm-svn: 115537
|
2010-10-04 18:44:25 +00:00 |
|
Rafael Espindola
|
491c3f9ef7
|
Include the section address in the computation of the relocation.
llvm-svn: 115509
|
2010-10-04 15:59:01 +00:00 |
|
Rafael Espindola
|
ce6ea76503
|
Correctly compute the relocation when it is not in the first fragment.
llvm-svn: 115506
|
2010-10-04 15:28:43 +00:00 |
|
Rafael Espindola
|
e209fd8ab7
|
Implement a very basic PIC case.
llvm-svn: 115454
|
2010-10-03 00:46:57 +00:00 |
|
Rafael Espindola
|
5aae0d6863
|
Factor some logic into ShouldRelocOnSymbol. This simplifies the code and
fixes some cases where we were producing relocations with at symbol that
should use a section instead.
llvm-svn: 115194
|
2010-09-30 20:18:35 +00:00 |
|