Message ID | 20220410140026.1830513-1-trix@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Series | cgcc: handle -x assembler | expand |
Hi, Sorry for this late reply. On Sun, Apr 10, 2022 at 10:00:26AM -0400, Tom Rix wrote: > On linux-next, using > make CC=cgcc > > fails with > cgcc: unknown assembler invoked > scripts/Kconfig.include:50: Sorry, this assembler is not supported. > > cgcc is being invoked with > cgcc -Wa,--version -c -x assembler /dev/null -o /dev/null > And dieing when the '-x c' is not matched. > > Add a check for -x assember. As you most probably know, cgcc is a wrapper around GCC to transparently also call sparse on the source code. This was designed when using sparse on non-kernel code. The kernel doesn't need it since its build system can do the same directly using the commands: make C=1 <...> or make C=2 <...> insuring it's called with the correct arguments (like the --arch option) and taking in account a few idiosyncrasies. Your patch is OK regarding cgcc itself but I don't know what good it will do after, when calling sparse, since sparse can only process C code an will surely choke on assembly files. So, are you sure you must cgcc here and can't use the existing make C=[12] mechanism? Otherwise, a more correct patch would be to change the check for '-x c', set $do_check = 0 when the argument is 'assembler' (or better, when anything other than 'c') and preferably stop to parse the remaining arguments/directly call the $REAL_CC. Best regards, -- Luc
diff --git a/cgcc b/cgcc index 9c78ee63..dc5cb624 100755 --- a/cgcc +++ b/cgcc @@ -42,10 +42,10 @@ while (@ARGV) { $nargs = 1; } - # Ignore the extension if '-x c' is given. + # Ignore the extension if '-x c' or '-x assembler' is given. if ($_ eq '-x') { die ("$0: missing argument for $_") if !@ARGV; - die ("$0: invalid argument for $_") if $ARGV[0] ne 'c'; + die ("$0: invalid argument for $_") if $ARGV[0] ne 'c' and $ARGV[0] ne 'assembler'; $do_check = 1; $nargs = 1; }
On linux-next, using make CC=cgcc fails with cgcc: unknown assembler invoked scripts/Kconfig.include:50: Sorry, this assembler is not supported. cgcc is being invoked with cgcc -Wa,--version -c -x assembler /dev/null -o /dev/null And dieing when the '-x c' is not matched. Add a check for -x assember. Signed-off-by: Tom Rix <trix@redhat.com> --- cgcc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)