[build] Do not use "objcopy -O binary" for objects with relocation records
authorMichael Brown <mcb30@ipxe.org>
Mon, 21 Mar 2016 17:33:45 +0000 (17:33 +0000)
committerMichael Brown <mcb30@ipxe.org>
Mon, 21 Mar 2016 17:49:58 +0000 (17:49 +0000)
commit1afcccd5fdd0662cfc45b5dd3cc32b6e3128719c
tree2090cd351ac01866b4542268f4f7a4656b92162b
parent173c0c25363fc7a9aaaef606ef35e73b765e888b
[build] Do not use "objcopy -O binary" for objects with relocation records

The mbr.bin and usbdisk.bin standalone blobs are currently generated
using "objcopy -O binary", which does not process relocation records.

For the i386 build, this does not matter since the section start
address is zero and so the ".rel" relocation records are effectively
no-ops anyway.

For the x86_64 build, the ".rela" relocation records are not no-ops,
since the addend is included as part of the relocation record (rather
than inline).  Using "objcopy -O binary" will silently discard the
relocation records, with the result that all symbols are effectively
given a value of zero.

Fix by using "ld --oformat binary" instead of "objcopy -O binary" to
generate mbr.bin and usbdisk.bin.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/x86/Makefile.pcbios