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

Reply via email to