gdb-980122 behavior on linux with shared libraries
Marty Leisner
leisner@sdsp.mc.xerox.com
Sun Feb 1 12:25:00 GMT 1998
I have a tentative solution (which I don't fully understand
why its only showing up on elf).
Between 970507 and now, in solib.c the
flag solib_cleanup_queued
function do_clear_solib
was added...
What's happening is inbetween runs, all mappings to shared
libraries are erased, so the next run, the breakpoints are
queried and the question is asked:
is this a breakpoint in a shared library?
newer gdb's don't retain any information about shared libraries,
so the answer is no.
This worked for now...I don't understand why it was added
: leisner@dw;rcsdiff -u solib.c
===================================================================
RCS file: solib.c,v
retrieving revision 1.1
diff -u -r1.1 solib.c
--- solib.c 1998/02/01 20:07:55 1.1
+++ solib.c 1998/02/01 20:10:30
@@ -946,11 +946,13 @@
{
so_list_head = new;
+#if 0
if (! solib_cleanup_queued)
{
make_run_cleanup (do_clear_solib);
solib_cleanup_queued = 1;
}
+#endif
}
so_list_next = new;
In the changelog:
Tue Sep 16 19:56:23 1997 Per Bothner <bothner@cygnus.com>
* solib.c (find_solib): Register cleanup to call clear_solib
on a new 'run' command.
In message < m0xxxVH-0004ecC@ocean.lucon.org >, you write:
>>
>>
>> Can you check gdb 4.16 on solaris?
>>
>
>It is the same as on Linux:
>
>GDB is free software and you are welcome to distribute copies of it
> under certain conditions; type "show copying" to see the conditions.
>There is absolutely no warranty for GDB; type "show warranty" for
>details.
>GDB 4.16 (sparc-sun-solaris2.4),
>Copyright 1996 Free Software Foundation, Inc...
>(gdb) b main
>Breakpoint 1 at 0x10898: file e.cc, line 5.
>(gdb) r
>Starting program: /home/hlu/tmp/a.out
>
>Breakpoint 1, main () at e.cc:5
>5 cout << "Hellow world" << endl;
>(gdb) step
>ostream::operator<< (this=0x20b30, s=0x10978 "Hellow world")
> at /home/hlu/gnu/import/egcs/libio/iostream.cc:756
>756 if (opfx())
>(gdb) b
>Breakpoint 2 at 0xef7727e0: file
>/home/hlu/gnu/import/egcs/libio/iostream.cc, line 756.
>(gdb) r
>The program being debugged has been started already.
>Start it from the beginning? (y or n) y
>Starting program: /home/hlu/tmp/a.out
>Cannot insert breakpoint 2:
>Temporarily disabling shared library breakpoints:
>2
>
>Breakpoint 1, main () at e.cc:5
>5 cout << "Hellow world" << endl;
>(gdb) c
>Continuing.
>
>Breakpoint 2, ostream::operator<< (this=0x20b30, s=0x10978 "Hellow
>world")
> at /home/hlu/gnu/import/egcs/libio/iostream.cc:756
>756 if (opfx())
>(gdb)
>
>I think it is an ELF problem.
>
>H.J.
More information about the Gdb
mailing list