Fix a bug in darwin's 32-bit X86 handling of evaluating fixups.
authorKevin Enderby <enderby@apple.com>
Wed, 4 Dec 2013 23:36:24 +0000 (23:36 +0000)
committerKevin Enderby <enderby@apple.com>
Wed, 4 Dec 2013 23:36:24 +0000 (23:36 +0000)
commitf50f3a3bb9001bbfbc8d392c2021f674c80f7b7c
treed0bc9f32fa3466d95a498232c315d11c64772077
parent3f8689f8af4044afc9c940a1dc43ef6bc32bcdd7
Fix a bug in darwin's 32-bit X86 handling of evaluating fixups.

Where it would use a scattered relocation entry but falls back to a
normal relocation entry because the FixupOffset is more than 24-bits.

The bug is in the X86MachObjectWriter::RecordScatteredRelocation() where
it changes reference parameter FixedValue but then returns false to indicate
it did not create a scattered relocation entry.  The fix is simply to save the
original value of the parameter FixedValue at the start of the method and
restore it if we are returning false in that case.

rdar://15526046

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196432 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/MCTargetDesc/X86MachObjectWriter.cpp
test/MC/MachO/x86_32-scattered-reloc-fallback.s [new file with mode: 0644]