Using .macro argument in .error message?
Georg-Johann Lay
avr@gjlay.de
Wed Jun 10 09:54:31 GMT 2026
Am 10.06.26 um 11:27 schrieb Jan Beulich:
> On 07.06.2026 21:16, Georg-Johann Lay via Binutils wrote:
>> Test case err.sx:
>>
>> .macro Test data
>> .if \data < 0
>> .error "value \data is negative"
>> .endif
>> .endm
>>
>> Test -1
>>
>>
>> $ avr-as err.sx -v
>> GNU assembler version 2.45.50 (avr) using BFD version (GNU Binutils)
>> 2.45.50.20250718
>> err.sx: Assembler messages:
>> err.sx: Warning: unknown escape '\d' in string; ignored
>> err.sx:3: Error: value -1 is negative
>> err.sx:7: Info: macro invoked from here
>>
>> While the printed error message is as expected, there is a spurious
>> warning about using \d in the string.
>>
>> What am I missing?
>>
>> As far as I understand, the .error message /must/ be "-quoted.
>
> Indeed. But AVR is one of the few targets which enable this extra
> warning. Why that is or whether it could be changed requires AVR
> knowledge, which I don#t have. There's also a surprising set of
> characters for which the warning would never appear. I don't know
> the history of that set, but it feels pretty arbitrary.
>
> Jan
Okay, I didn't even notice that it's target specific... The only
related place I could find is in gas/config/tc-avr.h:
/* If you define this macro, GAS will warn about the use of
nonstandard escape sequences in a string. */
#define ONLY_STANDARD_ESCAPES
Though whatever the behavior wrt. fishy escapes is, resolution
of macro arguments shoud run prior to that, no?
At least if macro param resolution in strings is supported
to begin with; which appears to be the case.
Johann
More information about the Binutils
mailing list