Jonathan Yong <[email protected]> writes:

> On 5/9/26 02:35, LIU Hao wrote:
>> Previously, this code
>>     extern int shl;
>>     int get_shl(void) { return shl; }
>> gave errors like
>>     $ x86_64-w64-mingw32-gcc -masm=intel test.c
>>     ccUSyr0f.s: Assembler messages:
>>     ccUSyr0f.s:24: Error: invalid use of operator "shl"
>> because it contained
>>     .refptr.shl:
>>         .quad   shl
>> This `shl` should have referenced the symbol, but it appeared in an
>> expression
>> context, where, in Intel syntax, it got interpreted as the
>> shift-left operator.
>> This commit fixes the issue by emitting the target symbol with
>> `ASM_OUTPUT_LABELREF`, which will quote it properly with regard to
>> the output
>> assembler syntax.
>>      PR target/53929
>> gcc/ChangeLog:
>>      * config/mingw/winnt.cc (mingw_pe_file_end): Use
>> `ASM_OUTPUT_LABELREF`
>>      to emit `name`.
>> Signed-off-by: LIU Hao <[email protected]>
>> ---
>>   gcc/config/mingw/winnt.cc | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>> diff --git a/gcc/config/mingw/winnt.cc b/gcc/config/mingw/winnt.cc
>> index e926b25cf98a..c73aa15ad37e 100644
>> --- a/gcc/config/mingw/winnt.cc
>> +++ b/gcc/config/mingw/winnt.cc
>> @@ -860,7 +860,9 @@ mingw_pe_file_end (void)
>>                  "\t.p2align\t3, 0\n"
>>                    "\t.globl\t%s\n"
>>                  "\t.linkonce\tdiscard\n", oname, oname);
>> -      fprintf (asm_out_file, "%s:\n\t.quad\t%s\n", oname, name);
>> +      fprintf (asm_out_file, "%s:\n\t.quad\t", oname);
>> +      ASM_OUTPUT_LABELREF (asm_out_file, name);
>> +      fputc ('\n', asm_out_file);
>>       }
>>       }
>>   }
>
> Patch looks OK, will push to master branch and other active release
> branches if there are no objections.

Just 16, as older branches don't have other fixes for that bug.

Attachment: signature.asc
Description: PGP signature

Reply via email to