Yes, you are correct. Tested it and it works as intended.
Thanks,
Jonas
--- 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_UNSIGNED "\n", (SIZE))
#define ASCII_DATA_ASM_OP "\t.ascii\t"
#define STRING_ASM_OP "\t.asciz\t"
-----Ursprüngliche Nachricht-----
Von: Jeff Law <[email protected]>
Gesendet: Mittwoch, 11. September 2019 19:33
An: Jonas Pfeil <[email protected]>; [email protected]
Betreff: Re: Fix for type confusion bug on microblaze
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