[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/3][GCC] gnatmake: Accept the `--sysroot=' GCC driver option
From: |
Maciej W. Rozycki |
Subject: |
[PATCH 1/3][GCC] gnatmake: Accept the `--sysroot=' GCC driver option |
Date: |
Tue, 14 May 2019 21:47:45 +0000 |
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.
---
Hi,
I think treating `--sysroot=' like this makes sense, as otherwise it'd
have to be specified twice, once with `-largs' and the second time
optionally with `-cargs'. It's consistent with how `--param=' is handled.
I'm not sure if this peculiarity should be mentioned in the manual; it
surely is not for the existing `--param=' switch.
Unfortunately I have exhausted the limit of changes I can make to GCC
without my WDC copyright paperwork sorted with FSF. OK to apply once that
has been completed?
Maciej
---
gcc/ada/make.adb | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
gcc-gnatmake-sysroot.diff
Index: gcc/gcc/ada/make.adb
===================================================================
--- gcc.orig/gcc/ada/make.adb
+++ gcc/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 (Argv'Length >= 10 and then Argv (1 .. 10) = "--sysroot=")
+ then
Add_Switch (Argv, Compiler);
Add_Switch (Argv, Linker);
[PATCH 1/3][GCC] gnatmake: Accept the `--sysroot=' GCC driver option,
Maciej W. Rozycki <=
[PATCH 2/3][GCC] GNAT/testsuite: Pass the `ada' option to target compilation, Maciej W. Rozycki, 2019/05/14