a8c02c3bdd
Correctly produce R_X86_64_32 or R_X86_64_32S.
...
With this patch in
movq $foo, foo(%rip)
foo:
.long foo
We produce a R_X86_64_32S for the first relocation and R_X86_64_32 for the
second one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115134 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-30 03:11:42 +00:00
7070387f08
Make it possible for the MCObjectWriter to decide if a given fixup is fully
...
resolved or not. Different object files have different restrictions and
different native assemblers have different idiosyncrasies we want to emulate
for now.
Move the existing MachO logic to the new place and implement an ELF one that
gets fixups to globals right.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115131 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-30 02:22:20 +00:00
53725bc57a
On elf, undefined symbols can start with .L.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114958 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-28 16:19:11 +00:00
c3c413f631
Write relocations in the end of the file. This matches what gas does and
...
makes files easier to diff.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114898 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 22:04:54 +00:00
2c6ec31df6
Factor symbol value computation into a function.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114891 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 21:23:02 +00:00
73ffea47d2
Move ELF to HasReliableSymbolDifference=true. Also take the opportunity to put
...
symbols defined in merge sections in independent atoms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114786 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-25 05:42:19 +00:00
a648918eb7
Reapply 114678 and 114667. Reverting them did not fix the bot:
...
http://google1.osuosl.org:8011/builders/llvm-gcc-i386-linux-selfhost/builds/69
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114761 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-24 21:19:03 +00:00
cd4b20a25b
Revert 114678 and 114667 to see if
...
http://google1.osuosl.org:8011/builders/llvm-gcc-i386-linux-selfhost
gets happy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114742 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-24 18:48:08 +00:00
e15eb4e14c
Correctly handle weak undefined symbols. Before we would get a invalid binding
...
(2 == STB_WEAK | STB_GLOBAL).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114690 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-23 19:55:14 +00:00
a5c6b78bf8
Correctly compute the offset of the symbol. Forgot these bits from the
...
last commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114678 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-23 18:01:31 +00:00
b142bef30b
Represent relocations against local symbols as relocations against the section
...
they are in. Both ways should be equivalent, but gas produces relocations
against the section.
Roman wrote the patch, I added the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114667 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-23 17:25:18 +00:00
51efe7a253
Fix the FIXME.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114639 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-23 14:14:56 +00:00
38738bf1a8
Fix typo and add a FIXME.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114570 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-22 19:04:41 +00:00
aa359bddbf
Revert unrelated change that was accidentally included in the previous commit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114383 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-21 00:40:19 +00:00
f7c10a3cff
Implement support for .local and its "interesting" interactions with .comm.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114382 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-21 00:24:38 +00:00
43779dcfef
Produce a R_X86_64_32 when the value is >=0.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114339 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-20 19:20:47 +00:00
ad49cf5866
Make sure the STT_FILE symbol is the first one in the symbol table.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114285 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-18 15:03:21 +00:00
0007489312
Avoid relocations in a common case.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114229 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-17 22:34:41 +00:00
71859c640f
Print the address of sections as 0 and create the metadata sections in the
...
same order as gnu as.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114109 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-16 19:46:31 +00:00
5e492e8d42
MCELF: Write relocation fragments in the right endian.
...
- This code is gross, but does the job for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113509 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09 18:01:29 +00:00
5baf79edc0
Make ELF OS ABI dependent on the OS from target triple.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113508 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09 17:57:50 +00:00
b629dcca72
ELF_STB_Local is 0 so setting and checking it must be done specially
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113375 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08 18:08:40 +00:00
563b38a89a
Unresolved weak symbols have value equal zero.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113358 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08 14:29:45 +00:00
a9eadca2fd
MCELF: Align symtab, relocation sections and section headers properly. Patch by Krister Wombell.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113155 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-06 16:11:52 +00:00
19dc7faf25
Allow creation of SHT_NULL sections, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112605 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31 17:03:33 +00:00
6cc53be24c
MCELF: The value of all common symbols is the offset from the start of the section. Patch by Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112492 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30 17:20:17 +00:00
51799ddc7c
The value is offset from the start of the section for non-common symbols, submitted by Jordan Gordeev.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112473 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30 12:00:16 +00:00
679d236117
Index external symbols by symbol table instead of parent section, by Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112472 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-30 11:59:29 +00:00
b188a3789e
squish dead code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112350 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 03:21:03 +00:00
95c602ade3
MCELF: Always overwrite FixedValue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112259 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-27 10:38:39 +00:00
4ba1b3074b
MCELF: Fix a thinko of mine.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112203 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-26 18:12:04 +00:00
63d37b9322
MCELF: Compensate for the addend on i386. Patch by Roman Divacky, with some cleanups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112197 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-26 17:23:02 +00:00
7b83c26051
MCELF: Use precomputed symbol indices, patch by Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112079 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-25 20:09:43 +00:00
2f6e0e68a4
Relocate against parent if the symbol is not in section or it's a common symbol, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111925 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-24 17:34:39 +00:00
c522f6e70b
Fix thinko. Having no tests is great ...
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111848 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-23 21:32:00 +00:00
36c6dc22bc
Reduce code duplication.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111846 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-23 21:23:52 +00:00
0b6cbfe04c
ELFObjectWriter: Run ComputeSymbolTable before recording relocations. This way we can use the information it has computed and don't have to recompute the same stuff over and over again.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111844 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-23 21:19:37 +00:00
bcf2db60dd
Add the symbol offset to the relocation value when we relocate against section. By Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111824 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-23 19:05:46 +00:00
30dc1ee78a
Use the proper relocation section + cleanup, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111819 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-23 18:24:20 +00:00
44cbde85ba
MCELF: Count the section orders properly. Patch by Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111517 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-19 13:44:49 +00:00
81cfb8529b
Remove dead code. Fixes a GCC warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111271 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 19:45:05 +00:00
e5b57347e9
Sketch i386 relocations handling, from Roman Divacky.
...
Hello world builds & runs now on i386/ELF with -integrated-as.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111264 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 18:20:28 +00:00
299fbe3a5a
Use the correct entry size for relocation entries, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111259 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 17:56:13 +00:00
377a572d9b
Differentiate between RELA and REL relocations, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111252 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 17:30:07 +00:00
eb97677764
One baby step towards i386 ELF, from Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111247 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 17:02:29 +00:00
172d7d6a12
Try to silence a overeager GCC warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111214 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 00:33:24 +00:00
368ae7e4ec
A round of minor cleanups for ELFObjectWriter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111213 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17 00:00:46 +00:00
1f8aa7bf08
Silence warnings and simplify code. Eliminate a 32/64 bit portability issue.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111201 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-16 23:00:12 +00:00
a44fa2473a
Fixes for generation of ELF relocations. Patch by Roman Divacky.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111183 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-16 21:17:09 +00:00
f8020a3978
Fix a few warnings in and detabify MCELFStreamer and ELFObjectWriter.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111175 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-16 19:15:06 +00:00