Michael J. Spencer
d03a29b69d
Implement relocation-overflow behavior for PE/COFF.
...
This needs a test, but it will take some time to figure
out the best way to get an input that will produce > 2^16 relocs.
Patch by Graydon Hoare!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152787 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-15 09:03:03 +00:00
Rafael Espindola
df09270ae8
Move x86 specific bits of the COFF writer to lib/Target/X86.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147231 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-24 02:14:02 +00:00
Rafael Espindola
b156c5d376
Move all the dependencies on X86FixupKinds.h to a single method in preparation
...
to moving it to lib/Target/X86.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147190 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-22 22:21:47 +00:00
Rafael Espindola
8f7d12ccfd
Add back the MC bits of 126425. Original patch by Nathan Jeffords. I added the
...
asm parsing and testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146801 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-17 01:14:52 +00:00
Jim Grosbach
f77d5b14af
Switch MCAssembler to method names starting w/ lower-case.
...
per http://llvm.org/docs/CodingStandards.html#ll_naming
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145873 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-06 00:03:48 +00:00
Michael J. Spencer
0d64632c9e
MC/COFF: Correctly emit the size of an empty string table.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144111 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-08 19:52:32 +00:00
Evan Cheng
8c3fee5903
Refactor X86 target to separate MC code from Target code.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135930 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-25 18:43:53 +00:00
Rafael Espindola
1ac7fe0f4d
Fix relative relocations. This is sufficient for running the rust testsuite with
...
MC :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129923 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-21 18:36:50 +00:00
Rafael Espindola
3660a847f1
Behave like gnu as when a relocation crosses sections.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129850 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-20 14:01:45 +00:00
Cameron Zwarich
f754f50805
Roll out r126425 and r126450 to see if it fixes the failures on the buildbots.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126488 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-25 16:30:32 +00:00
Devang Patel
f410608271
Enable DebugInfo support for COFF object files.
...
Patch by Nathan Jeffords!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126425 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-24 21:04:00 +00:00
Rafael Espindola
908159b46a
Gas is very inconsistent about when a relaxation/relocation is needed. Do
...
the right thing and stop trying to copy it. Fixes PR8944.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125648 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-16 03:25:55 +00:00
Rafael Espindola
fea753b397
Merge IsFixupFullyResolved and IsSymbolRefDifferenceFullyResolved. We now
...
have a single point where targets test if a relocation is needed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122549 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-24 21:22:02 +00:00
Rafael Espindola
3132780a2e
Merge isAbsolute into IsSymbolRefDifferenceFullyResolved.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122148 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 06:27:54 +00:00
Rafael Espindola
1ec5bd31fe
Remove the MCObjectFormat class.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122147 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-18 05:37:28 +00:00
Daniel Dunbar
1f3662abba
MC/ObjectWriter: Add a new IsSymbolRefDifferenceFullyResolved target format specific hook.
...
- Currently just has stub implementations for Mach-O, ELF, and COFF.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122037 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 04:54:54 +00:00
Daniel Dunbar
5d2477cecf
MC/Assembler: Strip out object writer arguments, now that it is always available
...
-- and remove FIXME asking for the same!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122032 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-17 02:45:59 +00:00
Rafael Espindola
85f2ecc697
Sorry for such a large commit. The summary is that only MachO cares about the
...
actuall addresses in a .o file, so it is better to let the MachO writer compute
it.
This is good for two reasons. First, areas that shouldn't care about
addresses now don't have access to it. Second, the layout of each section
is independent. I should use this in a subsequent commit to speed it up.
Most of the patch is just removing the section address computation. The two
interesting parts are the change on how we handle padding in the end
of sections and how MachO can get the address of a-b when a and b are in
different sections.
Since now the expression evaluation normally doesn't know the section address,
it will think that a-b needs relocation and let the MachO writer know. Once
it has computed the section addresses, it calls back the expression evaluation
with the section addresses to resolve these expressions.
The remaining problem is the handling of padding. Currently it will create
a special alignment fragment at the end. Since that fragment doesn't update
the alignment of the section, it needs the real address to be computed.
Since now the layout will not compute a-b with a and b in different sections,
the only effect that the special alignment fragment has is update the
address size of the section. This can also be done by the MachO writer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121076 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-07 00:27:36 +00:00
Rafael Espindola
81d8ea5bd2
Use getSymbolOffset on the COFF writer.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120979 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-06 03:24:04 +00:00
Michael J. Spencer
1f6efa3996
Merge System into Support.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120298 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-29 18:16:10 +00:00
Rafael Espindola
e04ed7e45f
Define generic 1, 2 and 4 byte pc relative relocations. They are common
...
and at least the 4 byte one will be needed to implement the .cfi_* directives.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120240 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-28 14:17:56 +00:00
Michael J. Spencer
ef0401ad66
Fix Warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117062 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21 20:49:38 +00:00
Michael J. Spencer
4cee2890a6
MC-COFF: Add support for default-null weak externals.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116666 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-16 08:25:57 +00:00
Michael J. Spencer
28ca86aa19
MC-COFF: Fix .bss section size. Fixes PR8335. Patch by NAKAMUTA Takumi!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116155 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-09 16:04:45 +00:00
Michael J. Spencer
d47f4a9c98
MC-COFF: Assert on non-coff sections.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116148 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-09 11:00:37 +00:00
Michael J. Spencer
b225adee29
MC-COFF: Handle relaxation in COFF better. Fixes PR8321.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116013 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-07 23:55:40 +00:00
Michael J. Spencer
ea1104a4c3
Fix Punctuation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115657 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05 19:48:12 +00:00
Michael J. Spencer
eb6e77f8cc
MC-COFF: Fix (PR8278) temporary symbol relocations.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115656 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05 19:48:03 +00:00
Rafael Espindola
8f413fa9c0
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115619 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05 15:11:03 +00:00
Rafael Espindola
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
Rafael Espindola
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
Michael J. Spencer
81100d0608
MC-COFF: Fix symbol storage class for globals
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115020 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-29 03:13:41 +00:00
Michael J. Spencer
9cf23a9ab4
MC-COFF: Fix signed/unsigned comparison.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114888 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 21:17:39 +00:00
Michael J. Spencer
a72d87899b
MC-COFF: Drop empty sections, and label symbols. Convert relocations
...
targeted at symbols into relocations relative to the containing section.
Patch by Nathan Jeffords!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114823 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27 08:58:26 +00:00
Michael J. Spencer
82c84fdd23
Fix COFF x86-64 relocations. PR7960.
...
Multiple symbol reloc handling part of the patch by Cameron Esfahani.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111963 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-24 21:04:52 +00:00
Michael J. Spencer
da0bfcdaf9
MC: Add partial x86-64 support to COFF.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111728 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-21 05:58:13 +00:00
Michael J. Spencer
237f8fe5df
MC: Fix symbol fragment offsets in COFF.
...
Patch by Cameron Esfahani!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110104 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03 05:02:46 +00:00
Michael J. Spencer
a69494ee5e
Revert "MC: Fix symbol fragment offsets in COFF."
...
This reverts commit r110100
Wrong path caps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110103 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03 04:53:28 +00:00
Michael J. Spencer
ab3de49c48
MC: Add time travel support to COFF.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110101 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03 04:43:33 +00:00
Michael J. Spencer
ef1f8c3cc3
MC: Fix symbol fragment offsets in COFF.
...
Patch by Cameron Esfahani!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110100 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-03 04:43:24 +00:00
Daniel Dunbar
425f634917
Silence some -Asserts uninitialized variable warnings.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109956 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-31 21:08:54 +00:00
Benjamin Kramer
808ecfce6a
COFFObjectWriter: Don't leak COFFSymbols and COFFSections.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109745 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-29 11:57:59 +00:00
Douglas Gregor
fd2878c8d0
Fix format-specifier warning
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109391 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26 03:55:44 +00:00
Michael J. Spencer
933304ef0c
MC: Fix whitespace error from last commit.
...
A Visual C++ extension that removes trailing new lines? Seriously?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109390 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26 03:01:28 +00:00
Michael J. Spencer
801a359116
MC: Add WinCOFFObjectWriter implementation.
...
Origonal Windows COFF implementation by Nathan Jedffords.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109389 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-26 02:17:32 +00:00
Chris Lattner
b162290e39
introduce WinCOFFObjectWriter, patch by Michael Spencer!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108103 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-11 22:07:02 +00:00