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