diff mbox series

cgcc: handle -x assembler

Message ID 20220410140026.1830513-1-trix@redhat.com (mailing list archive)
State Superseded, archived
Headers show
Series cgcc: handle -x assembler | expand

Commit Message

Tom Rix April 10, 2022, 2 p.m. UTC
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(-)

Comments

Luc Van Oostenryck May 22, 2022, 9:38 a.m. UTC | #1
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 mbox series

Patch

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;
     }