aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile.rules
diff options
context:
space:
mode:
authorKevin Enderby <enderby@apple.com>2010-10-02 00:13:41 +0000
committerKevin Enderby <enderby@apple.com>2010-10-02 00:13:41 +0000
commit8c9aa922a94bd788ea061be7555fb5b1db3a5312 (patch)
treee323514b13a8df4681c7fd24b05b77bc44da23e3 /Makefile.rules
parent5f2d1fa0f7c484f319d20e7f1c04f110a4b86648 (diff)
downloadexternal_llvm-8c9aa922a94bd788ea061be7555fb5b1db3a5312.zip
external_llvm-8c9aa922a94bd788ea061be7555fb5b1db3a5312.tar.gz
external_llvm-8c9aa922a94bd788ea061be7555fb5b1db3a5312.tar.bz2
This adds a Darwin x86_64 relocation encoding for a subtraction expression
where both symbols are "local", that is non-external symbols, and there is no "base" for the symbols used in the expression, that is the section has no non-temporary symbols. This case looks like this: % cat local_reloc_A-B.s .long 0 LB: .long 1 .long LA - LB - 4 .long 2 LA: .long 3 which llvm-mc will not encode without this patch, generates a "unsupported local relocations in difference" error, but the Darwin assembler will encode with relocation entries like this: % otool -rv a.out l.out a.out: Relocation information (__TEXT,__text) 2 entries address pcrel length extern type scattered symbolnum/value 00000008 False long False SUB False 1 (__TEXT,__text) 00000008 False long False UNSIGND False 1 (__TEXT,__text) which is very similar to what is encoded when the symbols don't have the leading 'L' and they are not temporary symbols. Which llvm-mc and the Darwin assembler will encoded like this: Relocation information (__TEXT,__text) 2 entries address pcrel length extern type scattered symbolnum/value 00000008 False long True SUB False B 00000008 False long True UNSIGND False A This is the missing relocation encoding needed to allow the Mach-O x86 Dwarf file and line table to be emitted. So this patch also removes the TODO from the if() statement in MCMachOStreamer::Finish() that didn't call MCDwarfFileTable::Emit() for 64-bit targets. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115389 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Makefile.rules')
0 files changed, 0 insertions, 0 deletions