[PATCH v1 1/1] gas: expr: fix support .long 0U and .long 0u

Frager, Neal neal.frager@amd.com
Sun Oct 1 16:22:12 GMT 2023


>> 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/rec
>> ipes-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
> 

Hi Michael, 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.

Thank you for your review.

I would just like to clarify where this patch is coming from.  
I am not actually the author of the patches I am submitting.
When we provide a Microblaze toolchain with PetaLinux, Yocto or Vitis, we are actually applying all of the following patches to the binutils portion of the toolchain:
https://github.com/Xilinx/meta-xilinx/tree/master/meta-microblaze/recipes-devtools/binutils/binutils

Instead of continuing to carry the maintenance of this patch set with all of our releases, I would like to get as many of these patches upstreamed as possible.

This particular patch is coming from here:
https://github.com/Xilinx/meta-xilinx/blob/master/meta-microblaze/recipes-devtools/binutils/binutils/0009-Patch-Microblaze-fixed-bug-in-GCC-so-that-It-will-su.patch

It is possible that this patch is not required anymore.  I will check internally at AMD Xilinx to see if I can identify a way to reproduce the error that this patch is solving.

Until I can prove that this patch is still needed, let's skip it.  If it is really no longer necessary, I will try to get it removed from our list of patches.

Thanks for your help!

Best regards,
Neal Frager
AMD


More information about the Binutils mailing list