From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Snyder To: Andrew Cagney Cc: gdb-patches@sourceware.cygnus.com, kettenis@wins.uva.nl Subject: [patch] change printf to fprintf_unfiltered. Date: Tue, 01 May 2001 13:38:00 -0000 Message-id: <3AEF1ED6.96DCA9FE@cygnus.com> References: <3AEDAF16.8D27C455@cygnus.com> <3AEE0DE6.8B843E8D@cygnus.com> X-SW-Source: 2001-05/msg00007.html Andrew Cagney wrote: > > Michael Snyder wrote: > > > ! if (debug_lin_lwp) > > ! printf ("Delayed SIGSTOP caught for %s.\n", > > ! target_pid_to_str (lp->pid)); > > ! > > FYI, once this is in, someone should go through and change the > printf()'s to: OK: 2001-05-01 Michael Snyder * lin-lwp.c: Change printf to fprintf_unfiltered. Index: lin-lwp.c =================================================================== RCS file: /cvs/src/src/gdb/lin-lwp.c,v retrieving revision 1.12 diff -c -3 -p -r1.12 lin-lwp.c *** lin-lwp.c 2001/04/30 20:25:07 1.12 --- lin-lwp.c 2001/05/01 20:36:46 *************** stop_wait_callback (struct lwp_info *lp, *** 520,526 **** target_pid_to_str (lp->pid)); } if (debug_lin_lwp) ! printf ("%s exited.\n", target_pid_to_str (lp->pid)); delete_lwp (lp->pid); return 0; --- 520,527 ---- target_pid_to_str (lp->pid)); } if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "%s exited.\n", target_pid_to_str (lp->pid)); delete_lwp (lp->pid); return 0; *************** stop_wait_callback (struct lwp_info *lp, *** 549,557 **** thread will have already tripped on it. */ if (debug_lin_lwp) ! printf ("Tripped breakpoint at %lx in LWP %d" ! " while waiting for SIGSTOP.\n", ! (long) read_pc_pid (lp->pid), pid); /* Set the PC to before the trap. */ if (DECR_PC_AFTER_BREAK) --- 550,559 ---- thread will have already tripped on it. */ if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "Tripped breakpoint at %lx in LWP %d" ! " while waiting for SIGSTOP.\n", ! (long) read_pc_pid (lp->pid), pid); /* Set the PC to before the trap. */ if (DECR_PC_AFTER_BREAK) *************** stop_wait_callback (struct lwp_info *lp, *** 560,567 **** else { if (debug_lin_lwp) ! printf ("Received %s in LWP %d while waiting for SIGSTOP.\n", ! strsignal (WSTOPSIG (status)), pid); /* The thread was stopped with a signal other than SIGSTOP, and didn't accidentiliy trip a breakpoint. --- 562,570 ---- else { if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "Received %s in LWP %d while waiting for SIGSTOP.\n", ! strsignal (WSTOPSIG (status)), pid); /* The thread was stopped with a signal other than SIGSTOP, and didn't accidentiliy trip a breakpoint. *************** lin_lwp_wait (int pid, struct target_wai *** 620,627 **** if (lp) { if (debug_lin_lwp) ! printf ("Using pending wait status for LWP %d.\n", ! GET_LWP (lp->pid)); status = lp->status; lp->status = 0; --- 623,631 ---- if (lp) { if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "Using pending wait status for LWP %d.\n", ! GET_LWP (lp->pid)); status = lp->status; lp->status = 0; *************** lin_lwp_wait (int pid, struct target_wai *** 635,641 **** else if (is_lwp (pid)) { if (debug_lin_lwp) ! printf ("Waiting for specific LWP %d.\n", GET_LWP (pid)); /* We have a specific LWP to check. */ lp = find_lwp_pid (GET_LWP (pid)); --- 639,646 ---- else if (is_lwp (pid)) { if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "Waiting for specific LWP %d.\n", GET_LWP (pid)); /* We have a specific LWP to check. */ lp = find_lwp_pid (GET_LWP (pid)); *************** lin_lwp_wait (int pid, struct target_wai *** 645,652 **** if (debug_lin_lwp) if (status) ! printf ("Using pending wait status for LWP %d.\n", ! GET_LWP (lp->pid)); /* If we have to wait, take into account whether PID is a cloned process or not. And we have to convert it to something that --- 650,658 ---- if (debug_lin_lwp) if (status) ! fprintf_unfiltered (gdb_stdlog, ! "Using pending wait status for LWP %d.\n", ! GET_LWP (lp->pid)); /* If we have to wait, take into account whether PID is a cloned process or not. And we have to convert it to something that *************** lin_lwp_wait (int pid, struct target_wai *** 725,731 **** target_pid_to_str (lp->pid)); } if (debug_lin_lwp) ! printf ("%s exited.\n", target_pid_to_str (lp->pid)); delete_lwp (lp->pid); --- 731,739 ---- target_pid_to_str (lp->pid)); } if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "%s exited.\n", ! target_pid_to_str (lp->pid)); delete_lwp (lp->pid); *************** lin_lwp_wait (int pid, struct target_wai *** 743,750 **** && WSTOPSIG (status) == SIGSTOP) { if (debug_lin_lwp) ! printf ("Delayed SIGSTOP caught for %s.\n", ! target_pid_to_str (lp->pid)); /* This is a delayed SIGSTOP. */ lp->signalled = 0; --- 751,759 ---- && WSTOPSIG (status) == SIGSTOP) { if (debug_lin_lwp) ! fprintf_unfiltered (gdb_stdlog, ! "Delayed SIGSTOP caught for %s.\n", ! target_pid_to_str (lp->pid)); /* This is a delayed SIGSTOP. */ lp->signalled = 0; >From ezannoni@cygnus.com Tue May 01 20:17:00 2001 From: Elena Zannoni To: Fernando Nasser Cc: Elena Zannoni , gdb-patches@sources.redhat.com, hilfingr@otisco.mckusick.com Subject: Re: RFA: [symfile.c} Fix to symbol_file_add() Date: Tue, 01 May 2001 20:17:00 -0000 Message-id: <15087.31793.429533.289522@kwikemart.cygnus.com> References: <3AED8391.C6B9A456@redhat.com> <15085.43538.55216.581538@kwikemart.cygnus.com> <3AEDF6A3.440D0C62@redhat.com> <15086.11696.278572.217415@kwikemart.cygnus.com> <3AEEB0E2.3232D2DE@redhat.com> X-SW-Source: 2001-05/msg00008.html Content-length: 2188 Fernando Nasser writes: > Elena Zannoni wrote: > > > > > However, the bit: > > > > > + /* Getting new symbols may change our opinion about > > > > > + what is frameless. */ > > > > > + reinit_frame_cache (); > > > > > > should _always_ be done, whenever we load new symbols. > > > > > > > I need to understand better what happens with shared libraries. > > SOLIB_ADD ends up calling this. I see it used in the attach command > > and in this case a reinit_frame_cache is OK, so is for the case in > > sol-thread.c but what about the other calls? > > > > The comment "Getting new symbols may change our opinion about what is > frameless." basically answers your question. GDB is much more reliable > at figuring out where the prologue ends when symbols are available. If > you are stopped inside a function (in a shared library) and you did not > had the symbols when you created the frame cache, you did a less job > than you could have done if you had symbols. > (Gee, talk about cloning a comment throughout gdb!) Yes, I agree with that. I was just thinking about a different case in which the user may have manually loaded the shlibs ahead of time, before the inferior calls any of the functions in the shlibs. But I see that it is already called most, if not all, of the times. > That is why the frame cache is always reset, so the frames can be > reconstructed with mode information and, thus, more precisely. > Anyway, I think we could both be right, so I don't mind if you add the call to the symbol_file_add function. I assume you would have to adjust other code in shlib related files as well. Some of the solib_add funtions are making sure that reinit_frame_cache is called only once after loading all the shared libs. Now it will be done once per shlib. I don't know what the overhead will be. Maybe shlib maintainers can speak up once the new patch is posted. Thanks for doing this, it turned out to be more work than the initial patch was. Elena > -- > Fernando Nasser > Red Hat Canada Ltd. E-Mail: fnasser@redhat.com > 2323 Yonge Street, Suite #300 > Toronto, Ontario M4P 2C9 >