This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix for type confusion bug on microblaze
- From: Jeff Law <law at redhat dot com>
- To: Jonas Pfeil <jonas dot pfeil at uni-ulm dot de>, gcc-patches at gcc dot gnu dot org
- Date: Wed, 11 Sep 2019 11:33:20 -0600
- Subject: Re: Fix for type confusion bug on microblaze
- References: <00a801d56893$f98bd630$eca38290$@uni-ulm.de>
On 9/11/19 5:28 AM, Jonas Pfeil wrote:
> The Microblaze target confuses unsigned long with HOST_WIDE_INT.
>
> This works fine for many architectures, but fails on ARM (HOST_WIDE_INT is 8
> bytes, unsigned long is 4 bytes). Leading to print a uninitialized register
> instead of the desired number, fix by using the correct printf-specifier.
>
> Tested to fix the issue and work with an ARM->MB cross compiler.
>
> --- a/gcc/config/microblaze/microblaze.h
> +++ b/gcc/config/microblaze/microblaze.h
> @@ -695,7 +695,7 @@ do {
> \
> fprintf (STREAM, "\t.align\t%d\n", (LOG))
>
> #define ASM_OUTPUT_SKIP(STREAM,SIZE) \
> - fprintf (STREAM, "\t.space\t%lu\n", (SIZE))
> + fprintf (STREAM, "\t.space\t" HOST_WIDE_INT_PRINT_DEC "\n", (SIZE))
I believe that we should be using HOST_WIDE_INT_PRINT_UNSIGNED, not
HOST_WIDE_INT_PRINT_DEC. Can you please verify that works for your
cross builds?
Thanks,
jeff