From: Jan Janssen Date: Tue, 9 Aug 2022 08:32:41 +0000 (+0200) Subject: meson: Test correct efi linker for supported args X-Git-Tag: v252-rc1~481 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6a941db798e3c5d896f6732afb4e6e482d708900;p=thirdparty%2Fsystemd.git meson: Test correct efi linker for supported args Fixes: #24241 --- diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index 127b4e17a3a..95785dfd5d8 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -266,11 +266,19 @@ efi_ldflags = [ efi_crt0, ] -possible_link_flags = [ - '-Wl,--no-warn-execstack', - '-Wl,--no-warn-rwx-segments', -] -efi_ldflags += cc.get_supported_link_arguments(possible_link_flags) +foreach arg : ['-Wl,--no-warn-execstack', + '-Wl,--no-warn-rwx-segments'] + # We need to check the correct linker for supported args. This is what + # cc.has_multi_link_arguments() is for, but it helpfully overrides our + # choice of linker by putting its own -fuse-ld= arg after ours. + if run_command('bash', '-c', + 'exec "$@" -x c -o/dev/null <(echo "int main(void){return 0;}")' + + ' -fuse-ld=' + efi_ld + ' -Wl,--fatal-warnings ' + arg, + 'bash', cc.cmd_array(), + check : false).returncode() == 0 + efi_ldflags += arg + endif +endforeach if efi_arch[1] in ['aarch64', 'arm', 'riscv64'] efi_ldflags += ['-shared']