☠ Buildbot (Sourceware): binutils-gdb - failed test (failure) (master)

Nick Alcock nick.alcock@oracle.com
Sun Sep 28 09:51:46 GMT 2025


On 25 Sep 2025, Alan Modra said:
> On Thu, Sep 25, 2025 at 01:36:53PM +0100, Nick Alcock via Binutils wrote:
>> On 25 Sep 2025, builder@sourceware.org told this:
>> 
>> > A new failure has been detected on builder binutils-debian-armhf while building binutils-gdb.
>> 
>> Curious.
>> 
>> int
>> unsigned int
>> int [3]
>> int [3][5]
>> int [3][5][9]
>> int [1]
>> int [1][2]
>> int
>> unsigned int
>> int [3]
>> int [3][5]
>> int [3][5][9]
>> int [1]
>> int [1][2]
>> 
>> regexp_diff match failure
>> regexp "^int \[9\]$"
>> line   "int [3]"
>> 
>> Hm. Looks like a genuine bug, iff this buildbot is using GCC < 14.2.0.
>> (How can I tell?)
>
> I see the following with the cross-compilers I have installed.
>
> aarch64-linux-gnu  +FAIL: libctf-lookup/multidim-array
> alpha-linux-gnu  +FAIL: libctf-lookup/multidim-array
> arm-linux-gnueabi  +FAIL: libctf-lookup/multidim-array
> hppa-linux-gnu  +FAIL: libctf-lookup/multidim-array
> ia64-linux-gnu  +FAIL: libctf-lookup/multidim-array
> m68k-linux-gnu  +FAIL: libctf-lookup/multidim-array
> microblaze-linux-gnu  +FAIL: libctf-lookup/multidim-array
> mips64-linux-gnuabi64  +FAIL: libctf-lookup/multidim-array
> mips-linux-gnu  +FAIL: libctf-lookup/multidim-array
> powerpc-linux-gnu  +FAIL: libctf-lookup/multidim-array
> riscv64-linux-gnu  +FAIL: libctf-lookup/multidim-array
> s390-linux-gnu  +FAIL: libctf-lookup/multidim-array
> s390x-linux-gnu  +FAIL: libctf-lookup/multidim-array
> sh4-linux-gnu  +FAIL: libctf-lookup/multidim-array
> sparc64-linux-gnu  +FAIL: libctf-lookup/multidim-array

What versions are these compilers?

> Using an older version of gcc should not result in a FAIL.  We are
> testing binutils here, not gcc.  

Indeed not

> The following works for me, but I'll leave this to you to commit
> since I have no idea about which versions of gcc we should be
> checking.  The test gets more complicated if bug fixes are backported.

That shouldn't be necessary. We have three cases here:

 - older GCC (pre-14.2.0): GCC dumps array dimensions backwards
   (whoops), libctf detects this and prints them backwards too, so at
   least type printing is still correct, even if type graph traversal is
   broken.

 - GCC post-14.2.0: dumps array dimensions the right way round, without
   header flag indicating that they are backwards; the test endeavours
   to detect this with a type graph traversal (and a dump to check for
   the flag) and go UNSUPPORTED rather than failing.

 - GCC emitting the header flag (not yet pushed): the test runs
   properly, checking that the dumped order is right.

If the first of these cases isn't working, we have a bug, and given that
at least half of my test matrix was against such older compilers (in the
compile farm and locally), I'd like to know why the buildbot tests are
failing when all my tests worked...

> Hmm, can you generate the ctf data from asm?

That's what I tried originally. It's a nightmare, and adapting that to
CTF improvements is even worse. Getting GCC to generate it is *ever* so
much simpler, and also if GCC generates it this means we can tell if the
two aren't interoperating properly (as, apparently, here). Aout half of
the libctf and ld.ctf testsuites are in part interop tests of this sort.

Asm dumps are best reserved for corrupted CTF and older-CTF-loading
stuff (cases where libctf cannot emit it), IMHO: and those dumps are
generated by earlier versions that can, and then (for corruption tests)
hand-corrupted and never touched again.

> diff --git a/libctf/testsuite/libctf-lookup/multidim-array-ctf.c b/libctf/testsuite/libctf-lookup/multidim-array-ctf.c
> index 05b6ebe4fdd..6876571cf93 100644
> --- a/libctf/testsuite/libctf-lookup/multidim-array-ctf.c
> +++ b/libctf/testsuite/libctf-lookup/multidim-array-ctf.c
> @@ -1,3 +1,9 @@
> +#include "ansidecl.h"
> +#if GCC_VERSION > 14002
>  int a[3][5][9];
>  int b[1][2];
> -
> +#else
> +/* Older gcc got it wrong.  */
> +int a[9][5][3];
> +int b[2][1];
> +#endif

This would render the test useless: see above.

-- 
NULL && (void)


More information about the Binutils mailing list