lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <779905244.a0lJJiZRjM@devpool35>
Date:   Wed, 05 Jun 2019 17:19:40 +0200
From:   Rolf Eike Beer <eb@...ix.com>
To:     Ard Biesheuvel <ard.biesheuvel@...aro.org>
Cc:     Linus Torvalds <torvalds@...ux-foundation.org>,
        Matt Fleming <matt@...eblueprint.co.uk>,
        Peter Zijlstra <peterz@...radead.org>,
        Thomas Gleixner <tglx@...utronix.de>,
        linux-efi@...r.kernel.org,
        Linux Kernel Developers List <linux-kernel@...r.kernel.org>,
        stable@...r.kernel.org
Subject: Building arm64 EFI stub with -fpie breaks build of 4.9.x (undefined reference to `__efistub__GLOBAL_OFFSET_TABLE_')

I decided to dig out a toy project which uses a DragonBoard 410c. This has 
been "running" with kernel 4.9, which I would keep this way for unrelated 
reasons. The vanilla 4.9 kernel wasn't bootable back then, but it was 
buildable, which was good enough.

Upgrading the kernel to 4.9.180 caused the boot to suddenly fail:

aarch64-unknown-linux-gnueabi-ld: ./drivers/firmware/efi/libstub/lib.a(arm64-
stub.stub.o): in function `handle_kernel_image':
/tmp/e2/build/linux-4.9.139/drivers/firmware/efi/libstub/arm64-stub.c:63: 
undefined reference to `__efistub__GLOBAL_OFFSET_TABLE_'
aarch64-unknown-linux-gnueabi-ld: ./drivers/firmware/efi/libstub/lib.a(arm64-
stub.stub.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol 
`__efistub__GLOBAL_OFFSET_TABLE_' which may bind externally can not be used 
when making a shared object; recompile with -fPIC
/tmp/e2/build/linux-4.9.139/drivers/firmware/efi/libstub/arm64-stub.c:63:
(.init.text+0xc): dangerous relocation: unsupported relocation
/tmp/e2/build/linux-4.9.139/Makefile:1001: recipe for target 'vmlinux' failed
-make[1]: *** [vmlinux] Error 1

This is caused by commit 27b5ebf61818749b3568354c64a8ec2d9cd5ecca from 
linux-4.9.y (which is 91ee5b21ee026c49e4e7483de69b55b8b47042be), reverting 
this commit fixes the build.

This happens with vanilla binutils 2.32 and gcc 8.3.0 as well as 9.1.0. See 
the attached .config for reference.

If you have questions or patches just ping me.

Greetings,

Eike
-- 
Rolf Eike Beer, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax +49 551 30664-11
Gothaer Platz 3, 37083 Göttingen, Germany
Sitz der Gesellschaft: Göttingen, Amtsgericht Göttingen HR B 3160
Geschäftsführung: Heike Jordan, Dr. Uwe Kracke – Ust-IdNr.: DE 205 198 055

emlix - smart embedded open source
View attachment "config-dragonboard410c" of type "text/plain" (98242 bytes)

Download attachment "signature.asc" of type "application/pgp-signature" (314 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ