package/kvm-unit-tests: really fix build on Arch Linux x86_64
authorArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Sun, 17 Nov 2019 18:41:14 +0000 (19:41 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Fri, 22 Nov 2019 22:30:52 +0000 (23:30 +0100)
commitb8b7bd18ed8e47c38063559b3d2c4ef4859185e2
tree33a45740ffbaa456fcb29c24e2264394c6454f4f
parent2e5d631f8f170ccd67338ae99d0a23ed74a4d3ca
package/kvm-unit-tests: really fix build on Arch Linux x86_64

On x86_64, we use the host compiler instead of the target compiler to
build kvm-unit-tests, because it is built with -m32 and our target
compiler doesn't support that.

However, the compiler on Arch Linux is broken: it *always* builds with
-fstack-protector, even when -ffreestanding is passed. However, when
-fnostdlib is passed at link time (which is normally the case when
building with -ffreestanding), it is not linked with the stack-protector
library. This leads to a link time error:

/usr/bin/ld: x86/realmode.o: in function `print_serial_u32':
.../x86/realmode.c:104: undefined reference to `__stack_chk_fail'

Since the entire package is built with -ffreestanding, it doesn't
support stack-protector at all. Therefore, simply pass
-fno-stack-protector explicitly on x86_64 to work around the bug in Arch
Linux.

Commit c0ffd16e4 tried to do this, but got the condition wrong:
-fno-stack-protector was passed in all cases *except* for x86_64. This
commit fixes that, by inverting the condition and moving the
--cross-prefix part to the else branch.

Fixes:
http://autobuild.buildroot.net/results/ca9576721214ecdce5622f2b7ec4fd4fc3699ac0/

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Cc: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Cc: Matthew Weber <matthew.weber@rockwellcollins.com>
Reviewed-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
package/kvm-unit-tests/kvm-unit-tests.mk