On 15/05/2026 12:00, Jakub Jelinek wrote:
> On Fri, May 15, 2026 at 11:50:57AM +0100, Richard Earnshaw (foss) wrote:
>> On 11/05/2026 08:51, Torbjörn SVENSSON wrote:
>>> Ok for trunk and releases/gcc-16?
>>>
>>> --
>>>
>>> The fix applied to toplevel-extended-asm-1_0.c in r16-7892-gb02f9495dcf635,
>>> also needs to be applied to toplevel-simple-asm-1_0.c.
>>>
>>> gcc/testsuite/ChangeLog:
>>>
>>>     * gcc.dg/lto/toplevel-simple-asm-1_0.c: Adjust inline assembler
>>>     for arm-none-eabi.
>>
>> LGTM, but please give Jakub until Monday to comment.
> 
> This change is wrong.  The point of toplevel-simple-asm*
> tests is to test the simple toplevel asms, the point of
> toplevel-extended-asm* is to test extended asms.
> So, by turning the simple test into extended one, it duplicates the
> toplevel-extended-asm-1_0.c test, making it useless.
> 
> If arm-none-gnueabi can't handle .global without .type directive
> (why?), then you should adjust your changes so that it still

Why?  Because Arm assembly needs to be able to distinguish between label types 
in order to get correct linkage.  A label on a Thumb code address is completely 
different from a label on an Arm code address.

> uses simple asm, so something like
> #ifdef __ELF__
> #ifdef __sparc__
> #define TYPE_PFX "#"
> #elif defined (__arm__) || defined (__aarch64__)
> #define TYPE_PFX "%"
> #else
> #define TYPE_PFX "@"
> #endif
> #endif
> 
> #ifdef TYPE_PFX
> asm(".global asm_fn\n.type asm_fn, " TYPE_PFX "function\nasm_fn:");
> asm(".global asm_fn_used\n.type asm_fn_used, " TYPE_PFX 
> "function\nasm_fn_used:");
> #else
> asm(".global asm_fn\nasm_fn:");
> asm(".global asm_fn_used\nasm_fn_used:");
> #endif
> 
>       Jakub
> 

Reply via email to