[PATCH v1 1/1] gas: expr: fix support .long 0U and .long 0u
Michael Eager
eager@eagercon.com
Thu Sep 28 19:27:46 GMT 2023
On 9/27/23 06:33, Jan Beulich via Binutils wrote:
> On 27.09.2023 15:21, Neal Frager via Binutils wrote:
>> Fix support for .long 0U and .long 0u in GCC.
>>
>> This patch has been tested for years of AMD Xilinx Yocto
>> releases as part of the following patch set:
>>
>> https://github.com/Xilinx/meta-xilinx/tree/master/meta-microblaze/recipes-devtools/binutils/binutils
>>
>> Signed-off-by: Neal Frager <neal.frager@amd.com>
>> ---
>> gas/expr.c | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>
> Without a testcase demonstrating what's wrong, I'd almost be inclined to say
> that ...
>
>> --- a/gas/expr.c
>> +++ b/gas/expr.c
>> @@ -824,6 +824,15 @@ operand (expressionS *expressionP, enum expr_mode mode)
>> break;
>> }
>> }
>> + if ((*input_line_pointer == 'U') || (*input_line_pointer == 'u'))
>> + {
>> + input_line_pointer--;
>> +
>> + integer_constant ((NUMBERS_WITH_SUFFIX || flag_m68k_mri)
>> + ? 0 : 10,
>> + expressionP);
>> + break;
>> + }
>> c = *input_line_pointer;
>> switch (c)
>> {
>
> ... this ought to be covered by logic in integer_constant() already. But I
> think I see what the issue is. Nevertheless, go look for tc_allow_U_suffix,
> which wants using here as well. Further I think the same issue then exists
> for L/l suffixes?
>
> Plus I think you want to add the new code to the switch() statement rather
> than immediately ahead of it.
>
> Jan
>
Neal --
Can you provide a test case for this patch? I'm not able to reproduce
any error.
Please take a look at gas/expr.c:541-543 (PR 19910: Look for, and
ignore, a U suffix to the number). Is this a fix for the same issue?
https://sourceware.org/bugzilla/show_bug.cgi?id=19910
As Jan says, it looks like this code, if needed, should be in the switch
statement.
--
Michael Eager
More information about the Binutils
mailing list