Hi FX,

> On 15 Jan 2022, at 14:19, FX via Gcc <gcc@gcc.gnu.org> wrote:
> 
>> The purpose of these asm tests is to verify that the analyzer doesn't
>> get confused by various inline assembler directives used in the source
>> of the Linux kernel.  So in theory they ought to work on any host, with
>> a gcc configured for a suitable target.
>> 
>> These tests are marked with "dg-do assemble" directives, which I'd
>> hoped would mean it uses -S for the tests (to make a .s file), but
>> looking at a log locally, it appears to be using -c (to make a .o
>> file), so maybe that's what's going wrong for you as well?
> 
> The tests even compiled with -S still fail:

I think the test should be  “dg-do compile” to stop at assembler output … 
.. the stuff below indicates it is still trying to assemble the .s file.
> 
> spawn -ignore SIGHUP /Users/fx/ibin/gcc/xgcc -B/Users/fx/ibin/gcc/ 
> exceptions_enabled42475.cc -fdiagnostics-plain-output -S -o excep
> tions_enabled42475.s
> FAIL: gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c   -O1  (test 
> for excess errors)
> Excess errors:
> /Users/fx/gcc/gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c:27:3:
>  warning: 'asm' operand 6 probably does not match constraints
> /Users/fx/gcc/gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c:27:3:
>  error: impossible constraint in 'asm'
> 
> It’s the same for the other four.
> 
> 
> gcc.dg/analyzer/asm-x86-lp64-1.c is slightly different, there it’s an 
> assembler error:
> 
> 
> /var/folders/_8/7ft0tbns6_l87s21n4s_1sc80000gn/T//cc4b3ybm.s:160:20: 
> error:unexpected token in '.section' directive
>        .pushsection .text
>                          ^
> /var/folders/_8/7ft0tbns6_l87s21n4s_1sc80000gn/T//cc4b3ybm.s:162:2: error: 
> unknown directive
>        .type add_asm, @function
>        ^
> /var/folders/_8/7ft0tbns6_l87s21n4s_1sc80000gn/T//cc4b3ybm.s:167:13: error: 
> .popsection without corresponding .pushsection
>        .popsection

These ^^ are ELF-isms***, so will not work on Darwin (but if the test does not 
need to assemble, then that is academic).

>>>> ## Builtin-related failures
>>>> 
>>>> Those four cases fail:
>>>> 
>>>> gcc.dg/analyzer/data-model-1.c
>>>> gcc.dg/analyzer/pr103526.c
>>>> gcc.dg/analyzer/taint-size-1.c
>>>> gcc.dg/analyzer/write-to-string-literal-1.c
>> 
>> Can you file a bug about this and attach the preprocessed source from
>> the test (using -E).
> 
> Done, it is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104042

I made a comment about how we might work around this for Darwin - but OTOH, 
perhaps they should work with _FORTIFY_SOURCE != 0

Iain

*** no particular reason why Darwin could not have push/pop section but that’s 
not implemented in either cctools or LLVM-based assemblers for mach-o at 
present.


Reply via email to