On Sun, Dec 30 2018, Pascal Stumpf <[email protected]> wrote: > On Sun, 23 Dec 2018 19:48:14 +0100, Pascal Stumpf wrote: >> FWIW, here's a WIP patch to update gdb to 8.2.1. It's still a bit rough >> around the edges, but working so far on amd64, i386, powerpc, hppa, and >> to some extent on arm and aarch64. It does *not* work on sparc64, which >> is a blocker. Feel free to play around with it. > > Actually, GDB 7.12 did not work on sparc64 either, so this is not a > regression and I'd like to move along with it. Please test.
Actually gdb 7.2 now works for me on sparc64, built with g++-4.9.4p16, ie with Otto's stackghost fix. Here's a ld(1) crash under gdb-7.12.1 (-current): --8<-- (gdb) r Starting program: /usr/bin/ld -r -b binary /home/jca/.kshrc -o lala ld(61811) in free(): bogus pointer (double free?) 0xdbdbdbdbdbdbdbdb Program received signal SIGABRT, Aborted. *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57 57 memset(&sa, 0, sizeof(sa)); (gdb) bt #0 *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57 #1 0x0000006007110f40 in wrterror (d=0x60902e06c0, msg=0x60072810b0 "bogus pointer (double free?) %p") at /usr/src/lib/libc/stdlib/malloc.c:297 #2 0x0000006007111614 in findpool (p=0xdbdbdbdbdbdbdbdb, argpool=0x60902e06c0, foundpool=0xfffffffffffc1bf0, saved_function=0xfffffffffffc1be8) at /usr/src/lib/libc/stdlib/malloc.c:1323 #3 0x00000060071136a0 in ofree (argpool=0xfffffffffffc1cc0, p=0xdbdbdbdbdbdbdbdb, clear=0, check=0, argsz=0) at /usr/src/lib/libc/stdlib/malloc.c:1337 #4 0x000000600711481c in free (ptr=0xdbdbdbdbdbdbdbdb) at /usr/src/lib/libc/stdlib/malloc.c:1451 #5 0x00000057d0d5a26c in bfd_elf_final_link (abfd=0x5fe76f0400, info=0x57d11051b8 <link_info>) at /usr/src/gnu/usr.bin/binutils-2.17/bfd/elflink.c:8623 #6 0x00000057d0d18a98 in ldwrite () at /usr/src/gnu/usr.bin/binutils-2.17/ld/ldwrite.c:557 #7 0x00000057d0d17dbc in main (argc=<optimized out>, argv=0xfffffffffffc2448) at /usr/src/gnu/usr.bin/binutils-2.17/ld/ldmain.c:496 (gdb) -->8-- and under gdb-8.2.1 (your diff): --8<-- (gdb) r Starting program: /usr/bin/ld -r -b binary /home/jca/.kshrc -o lala ld(18093) in free(): bogus pointer (double free?) 0xdbdbdbdbdbdbdbdb Program received signal SIGABRT, Aborted. *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57 57 memset(&sa, 0, sizeof(sa)); (gdb) bt #0 *_libc_abort () at /usr/src/lib/libc/stdlib/abort.c:57 #1 0xb720d8ca471ff41e in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) -->8-- I didn't look at the source changes, I just wanted to report this. For now sparc64 still uses base-gcc so gdb(1) from base is still an option. But if/once sparc64 moves to clang gdb from base will become useless. -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE
