Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Jeff Johnston <jjohnstn@redhat.com>
To: Michael Chastain <mec.gnu@mindspring.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: [RFA]: Fix for pending breakpoints in manually loaded/unloaded shlibs
Date: Thu, 12 Aug 2004 17:47:00 -0000	[thread overview]
Message-ID: <411BAD29.7080805@redhat.com> (raw)
In-Reply-To: <411B7192.nailNVT199XPP@mindspring.com>

[-- Attachment #1: Type: text/plain, Size: 1763 bytes --]

Michael Chastain wrote:
> Okay, here's a patch for unload.exp to make it work on hpux 11.11.
> I tested it on hpux 11.11 with both hp ansi c B.11.11.28706.GP and
> gcc 3.3.4.  I didn't test it on any linux.
> 
> It will be easy to add more arms to the "switch" statement
> as it gets tested on more operating systems.
> 
> Can you:
> 
>   throw this chunk in
>   rip out the old bug-gdb address
>   rip out the "-L" / "-rpath" leftovers (see below)
>   re-test on i686-pc-linux-gnu
>   re-post the patch (mention that you re-tested on i686-pc-linux-gnu)
> 
> Right before gdb_exit there is a chunk of code to set "-L" or "-rpath".
> It looks dead because these values are never used after being set.
> Can you rip that out?  Sorry I didn't catch that earlier.
> 
> Then I will re-test on native hppa2.0w-hp-hpux11.11 and that ought
> to be good for approval.
>

Ok, see the attached patch.  The modified test runs fine on x86 linux.

Thanks,

-- Jeff J.

> Michael C
> 
> --- /house/chastain/u/unload.exp	2004-08-12 07:32:11.268088000 -0400
> +++ unload.exp	2004-08-12 09:09:43.989638000 -0400
> @@ -48,7 +48,14 @@
>      return -1
>  }
>  
> -if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "additional_flags=-DSHLIB_DIR\=\"${shlibdir}\"" "libs=-ldl"]] != "" } {
> +set dl_lib_flag ""
> +switch -glob [istarget] {
> +    "hppa*-hp-hpux*" { }
> +    "*-*-linux*"     { set dl_lib_flag "libs=-ldl" }
> +    default          { }
> +}
> +
> +if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "additional_flags=-DSHLIB_DIR\=\"${shlibdir}\"" $dl_lib_flag]] != "" } {
>       gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
>  }
>  
> 

[-- Attachment #2: unloadtst.patch2 --]
[-- Type: text/plain, Size: 7814 bytes --]

Index: gdb.base/unload.c
===================================================================
RCS file: gdb.base/unload.c
diff -N gdb.base/unload.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gdb.base/unload.c	12 Aug 2004 17:46:15 -0000
@@ -0,0 +1,57 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2004 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include <stdio.h>
+#include <dlfcn.h>
+
+int k = 0;
+
+#define SHLIB_NAME SHLIB_DIR "/unloadshr.sl"
+
+int main()
+{
+  void *handle;
+  int (*unloadshr) (int);
+  int y;
+  char *msg;
+
+  handle = dlopen (SHLIB_NAME, RTLD_LAZY);
+  msg = dlerror ();
+  
+  if (!handle)
+    {
+      fprintf (stderr, msg);
+      exit (1);
+    }
+
+  unloadshr = (int (*)(int))dlsym (handle, "shrfunc1");
+
+  if (!unloadshr)
+    {
+      fprintf (stderr, dlerror ());
+      exit (1);
+    }
+
+  y = (*unloadshr)(3);
+
+  printf ("y is %d\n", y);
+
+  dlclose (handle);
+
+  return 0;
+}
Index: gdb.base/unload.exp
===================================================================
RCS file: gdb.base/unload.exp
diff -N gdb.base/unload.exp
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gdb.base/unload.exp	12 Aug 2004 17:46:15 -0000
@@ -0,0 +1,142 @@
+#   Copyright 2003, 2004
+#   Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  
+
+# This file was created by Jeff Johnston. (jjohnstn@redhat.com)
+# The shared library compilation portion was copied from shlib-call.exp which was
+# written by Elena Zannoni (ezannoni@redhat.com).
+
+if $tracelevel then {
+    strace $tracelevel
+}
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+# are we on a target board?
+if ![isnative] then {
+    return 0
+}
+
+set testfile "unload"
+set libfile "unloadshr"
+set libsrcfile ${libfile}.c
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+set shlibdir ${objdir}/${subdir}
+
+if [get_compiler_info ${binfile}] {
+    return -1
+}
+
+set dl_lib_flag ""
+switch -glob [istarget] {
+    "hppa*-hp-hpux*" { }
+    "*-*-linux*"     { set dl_lib_flag "libs=-ldl" }
+    default          { }
+}
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "additional_flags=-DSHLIB_DIR\=\"${shlibdir}\"" $dl_lib_flag]] != "" } {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+# Build the shared libraries this test case needs.
+#
+
+if {$gcc_compiled == 0} {
+    if [istarget "hppa*-hp-hpux*"] then {
+	set additional_flags "additional_flags=+z"
+    } elseif { [istarget "mips-sgi-irix*"] } {
+	# Disable SGI compiler's implicit -Dsgi
+	set additional_flags "additional_flags=-Usgi"
+    } else {
+	# don't know what the compiler is...
+	set additional_flags ""
+    }
+} else {
+    if { ([istarget "powerpc*-*-aix*"]
+       || [istarget "rs6000*-*-aix*"]) } {
+	set additional_flags ""
+    } else {
+	set additional_flags "additional_flags=-fpic"
+    }
+}
+
+if {[gdb_compile "${srcdir}/${subdir}/${libsrcfile}" "${objdir}/${subdir}/${libfile}.o" object [list debug $additional_flags]] != ""} {
+     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if [istarget "hppa*-*-hpux*"] {
+    remote_exec build "ld -b ${objdir}/${subdir}/${libfile}.o -o ${objdir}/${subdir}/${libfile}.sl"
+} else {
+    set additional_flags "additional_flags=-shared"
+    if {[gdb_compile "${objdir}/${subdir}/${libfile}.o" "${objdir}/${subdir}/${libfile}.sl" executable [list debug $additional_flags]] != ""} {
+	gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+    }
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if [target_info exists gdb_stub] {
+    gdb_step_for_stub;
+}
+
+#
+# Test setting a breakpoint in a dynamically loaded library which is
+# manually loaded and unloaded
+#
+
+gdb_test_multiple "break shrfunc1" "set pending breakpoint" {
+     -re ".*Make breakpoint pending.*y or \\\[n\\\]. $" {
+	    gdb_test "y" "Breakpoint.*shrfunc1.*pending." "set pending breakpoint"
+     }
+}
+
+gdb_test "info break" \
+    "Num Type\[ \]+Disp Enb Address\[ \]+What.*
+\[0-9\]+\[\t \]+breakpoint     keep y.*PENDING.*shrfunc1.*" \
+"single pending breakpoint info"
+
+set unloadshr_line [gdb_get_line_number "unloadshr break" ${srcdir}/${subdir}/${libsrcfile}]
+
+gdb_test "run" \
+"Starting program.*unload.*
+Breakpoint.*at.*
+Pending breakpoint \"shrfunc1\" resolved.*
+Breakpoint.*, shrfunc1 \\\(x=3\\\).*unloadshr.c:$unloadshr_line.*" \
+"running program"
+
+gdb_test "continue" \
+"Continuing.*y is 7.*warning: Temporarily disabling unloaded shared library breakpoints.*warning: breakpoint #.*Program exited normally." \
+"continuing to end of program"
+
+#
+# Try to rerun program and verify that shared breakpoint is reset properly
+#
+
+gdb_test "run" \
+".*Breakpoint.*shrfunc1.*at.*unloadshr.c:$unloadshr_line.*" \
+"rerun to shared library breakpoint"
+
+gdb_test "continue" \
+"Continuing.*y is 7.*warning: Temporarily disabling unloaded shared library breakpoints.*warning: breakpoint #.*Program exited normally." \
+"continuing to end of program second time"
Index: gdb.base/unloadshr.c
===================================================================
RCS file: gdb.base/unloadshr.c
diff -N gdb.base/unloadshr.c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gdb.base/unloadshr.c	12 Aug 2004 17:46:15 -0000
@@ -0,0 +1,24 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2004 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+ 
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#include <stdio.h>
+
+int shrfunc1 (int x)
+{
+  return x + 4; /* unloadshr break */
+}

  reply	other threads:[~2004-08-12 17:47 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-08-10 19:09 Jeff Johnston
2004-08-10 19:45 ` Kevin Buettner
2004-08-11  4:07 ` Eli Zaretskii
2004-08-11 15:58   ` Jeff Johnston
2004-08-11 16:58     ` Andrew Cagney
2004-08-11 17:59       ` Eli Zaretskii
2004-08-11 20:42         ` Andrew Cagney
2004-08-11 20:47           ` Daniel Jacobowitz
2004-08-11 22:19             ` Andrew Cagney
2004-08-12 12:58               ` Daniel Jacobowitz
2004-08-12 13:16                 ` New observer objfile_mapped; was Andrew Cagney
2004-08-12 13:18                   ` Daniel Jacobowitz
2004-08-12  3:45           ` [RFA]: Fix for pending breakpoints in manually loaded/unloaded shlibs Eli Zaretskii
2004-08-12 12:10             ` Andrew Cagney
2004-08-12 18:49               ` Eli Zaretskii
2004-08-12 20:44                 ` Andrew Cagney
2004-08-14 11:50                   ` Eli Zaretskii
2004-08-18 13:45                     ` Daniel Jacobowitz
2004-08-19  3:57                       ` Eli Zaretskii
2004-08-11  8:09 ` Michael Chastain
2004-08-11 15:42   ` Jeff Johnston
2004-08-12 13:05     ` Michael Chastain
2004-08-12 13:33     ` Michael Chastain
2004-08-12 17:47       ` Jeff Johnston [this message]
2004-08-12 18:59         ` Michael Chastain
2004-08-12 20:23           ` Jeff Johnston
2004-08-11 17:12 ` Daniel Jacobowitz
2004-08-11 20:12   ` Jeff Johnston
2004-08-18 13:56     ` Daniel Jacobowitz
2004-08-18 19:22       ` Jeff Johnston
2004-08-18 19:39         ` Daniel Jacobowitz
2004-08-18 20:03           ` Jeff Johnston
2004-08-19  4:01             ` Eli Zaretskii
2004-09-01 15:15               ` Andrew Cagney
2004-09-01 18:01                 ` Jeff Johnston
2004-09-01 19:30                   ` Michael Chastain
2004-09-01 20:44                     ` Jeff Johnston
2004-09-01 20:59                       ` Michael Chastain
2004-09-01 23:27                         ` Jeff Johnston
2004-09-02  3:54                 ` Eli Zaretskii
2004-08-23 21:33             ` Jeff Johnston
2004-08-23 22:09               ` Michael Chastain
2004-08-23 22:35                 ` Jeff Johnston
2004-08-24  2:26                   ` Michael Chastain
2004-08-24 15:51                     ` Jeff Johnston
2004-08-24 16:04                       ` Michael Chastain
2004-08-12  2:48 ` Andrew Cagney
2004-08-12  3:54   ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=411BAD29.7080805@redhat.com \
    --to=jjohnstn@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=mec.gnu@mindspring.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox