From a6fa2e83e958802036ad9ed558bee1988299e0e7 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Fri, 13 Sep 2019 17:43:12 +0000 Subject: [PATCH] gnatmake: Accept the `--sysroot=' GCC driver option According to `gnatmake' documentation: "Any uppercase or multi-character switch that is not a 'gnatmake' switch is passed to 'gcc' (e.g., '-O', '-gnato,' etc.)" however the `--sysroot=' switch is actually rejected: gnatmake: invalid switch: --sysroot=... likely because it is one of the very few GCC driver options that have a leading double dash and therefore we don't have a blanket fall-through for such switches that would satisfy what our documentation claims. The option is actually shared between the compiler and the linker, so pass the switch to both build stages if requested, removing GNAT testsuite issues like: gnatmake: invalid switch: --sysroot=.../sysroot compiler exited with status 1 Executing on host: .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result (timeout = 300) spawn -ignore SIGHUP .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result PASS: gnat.dg/abstract_with_anonymous_result.adb (test for excess errors) UNRESOLVED: gnat.dg/abstract_with_anonymous_result.adb compilation failed to produce executable in a test environment where `--with-build-sysroot=.../sysroot' has been used to build a cross-compiler. Passing to the compilation stage only would lead to errors like: .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory .../bin/riscv64-linux-gnu-ld: cannot find -lc collect2: error: ld returned 1 exit status gnatlink: error when calling .../gcc/xgcc gnatmake: *** link failed. compiler exited with status 1 Executing on host: .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result (timeout = 300) spawn -ignore SIGHUP .../gcc/gnatclean -c -q -n ./abstract_with_anonymous_result ./abstract_with_anonymous_result.ali ./abstract_with_anonymous_result.o FAIL: gnat.dg/abstract_with_anonymous_result.adb (test for excess errors) Excess errors: .../bin/riscv64-linux-gnu-ld: cannot find crt1.o: No such file or directory .../bin/riscv64-linux-gnu-ld: cannot find -lc gnatlink: error when calling .../gcc/xgcc UNRESOLVED: gnat.dg/abstract_with_anonymous_result.adb compilation failed to produce executable instead. gcc/ada/ * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the compiler and the linker. From-SVN: r275702 --- gcc/ada/ChangeLog | 5 +++++ gcc/ada/make.adb | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 410828ed37a..e3e274a756f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2019-09-13 Maciej W. Rozycki + + * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the + compiler and the linker. + 2019-08-30 Eric Botcazou * gcc-interface/decl.c (maybe_saturate_size): New function. diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index 805addb1d3d..3c9df7e50a1 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -4516,7 +4516,9 @@ package body Make is end; end if; - elsif Argv'Length >= 8 and then Argv (1 .. 8) = "--param=" then + elsif (Argv'Length >= 8 and then Argv (1 .. 8) = "--param=") + or else (Argv'Length >= 10 and then Argv (1 .. 10) = "--sysroot=") + then Add_Switch (Argv, Compiler); Add_Switch (Argv, Linker); -- 2.30.2