On 23.01.2024 10:00, LIU Hao wrote:
> 在 2024-01-23 16:38, Jan Beulich 写道:
>> Right, but this is very "draft". You can't blindly assume the gas you use
>> actually can deal with quotation.
> 
> Let's assume that for the time being, but there's something else; see below.
> 
> 
>>> .refptr.bx:
>>>           .quad   bx
>>
>> Sure, this one needs quoting then, too.
> 
> The attached patch contains `&& name[0] != '*'` with a reason: In the 
> function `assemble_name_raw` 
> in 'gcc/varasm.cc', if `name` starts with a `*`, then its remaining part is 
> output without 
> decoration. I have no idea what `*` means; this `.quad bx` thing apparently 
> results from something like
> 
>     assemble_name_raw (file, "*bx");
> 
> Quoting this would break the i686 DWARF2 code, which may contain an 
> arithmetic expression like
> 
>     .long LXXYY-1    # "LXXYY" minus one
> 
> If it was quoted like `.long "LXXYY-1"`, it would mean something very 
> different and cause linker errors.

Hmm, that would suggest to me that the Dwarf code abuses the interface.
A "name" certainly shouldn't be an expression. And hence the result of
the example ought to be

     .long "LXXYY"-1    # "LXXYY" minus one

Jan

Reply via email to