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