From 7b64a93b0333a9520ca23d3dcbaa5b6b5eb3d6f0 Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Fri, 14 Jan 2011 18:39:31 +0000 Subject: [PATCH] * solib-som.h (hpux_major_release): Declare variable here. * solib-som.c: Remove header. (DEFAULT_HPUX_MAJOR_RELEASE): New macro. (hpux_major_release): Make global, change default value to DEFAULT_HPUX_MAJOR_RELEASE. (get_hpux_major_release): Simply return HPUX_MAJOR_RELEASE. * hppa-hpux-nat.c: Add include. Add "solib-som.h" header. (set_hpux_major_release): New function. (_initialize_hppa_hpux_nat): Call set_hpux_major_release. --- gdb/ChangeLog | 13 +++++++++++++ gdb/hppa-hpux-nat.c | 19 +++++++++++++++++++ gdb/solib-som.c | 28 +++++++++++++--------------- gdb/solib-som.h | 2 ++ 4 files changed, 47 insertions(+), 15 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 24a41a367a9..1067186519a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2011-01-14 Pierre Muller + + * solib-som.h (hpux_major_release): Declare variable here. + * solib-som.c: Remove header. + (DEFAULT_HPUX_MAJOR_RELEASE): New macro. + (hpux_major_release): Make global, change default value to + DEFAULT_HPUX_MAJOR_RELEASE. + (get_hpux_major_release): Simply return HPUX_MAJOR_RELEASE. + * hppa-hpux-nat.c: Add include. + Add "solib-som.h" header. + (set_hpux_major_release): New function. + (_initialize_hppa_hpux_nat): Call set_hpux_major_release. + 2011-01-14 Mike Frysinger * configure.tgt (*-*-uclinux*): Match more Linux os targets diff --git a/gdb/hppa-hpux-nat.c b/gdb/hppa-hpux-nat.c index 4a5ac113025..7e4c670e8f3 100644 --- a/gdb/hppa-hpux-nat.c +++ b/gdb/hppa-hpux-nat.c @@ -25,6 +25,7 @@ #include "gdb_assert.h" #include +#include #include #ifdef HAVE_TTRACE @@ -32,6 +33,7 @@ #endif #include "hppa-tdep.h" +#include "solib-som.h" #include "inf-ptrace.h" #include "inf-ttrace.h" @@ -233,6 +235,21 @@ hppa_hpux_store_inferior_registers (struct target_ops *ops, hppa_hpux_store_register (regcache, regnum); } +/* Set hpux_major_release variable to the value retrieved from a call to + uname function. */ + +static void +set_hpux_major_release (void) +{ + struct utsname x; + char *p; + + uname (&x); + p = strchr (x.release, '.'); + if (p) + hpux_major_release = atoi (p + 1); +} + /* Prevent warning from -Wmissing-prototypes. */ @@ -243,6 +260,8 @@ _initialize_hppa_hpux_nat (void) { struct target_ops *t; + set_hpux_major_release (); + #ifdef HAVE_TTRACE t = inf_ttrace_target (); #else diff --git a/gdb/solib-som.c b/gdb/solib-som.c index 6dc5d140a78..dec06cfb85d 100644 --- a/gdb/solib-som.c +++ b/gdb/solib-som.c @@ -32,7 +32,6 @@ #include "solib.h" #include "solib-som.h" -#include #include #undef SOLIB_SOM_DBG @@ -131,24 +130,23 @@ som_relocate_section_addresses (struct so_list *so, ; } -/* Get HP-UX major release number. Returns zero if the - release is not known. */ -static int -get_hpux_major_release (void) -{ - static int hpux_major_release = -1; +/* Variable storing HP-UX major release number. - if (hpux_major_release == -1) - { - struct utsname x; - char *p; + On non-native system, simply assume that the major release number + is 11. On native systems, hppa-hpux-nat.c initialization code + sets this number to the real one on startup. + + We cannot compute this value here, because we need to make a native + call to "uname". We are are not allowed to do that from here, as + this file is used for both native and cross debugging. */ - uname (&x); - p = strchr (x.release, '.'); - hpux_major_release = p ? atoi (p + 1) : 0; - } +#define DEFAULT_HPUX_MAJOR_RELEASE 11 +int hpux_major_release = DEFAULT_HPUX_MAJOR_RELEASE; +static int +get_hpux_major_release (void) +{ return hpux_major_release; } diff --git a/gdb/solib-som.h b/gdb/solib-som.h index 16f7e308bbb..78a64dc4dcd 100644 --- a/gdb/solib-som.h +++ b/gdb/solib-som.h @@ -25,6 +25,8 @@ struct objfile; struct section_offsets; struct gdbarch; +extern int hpux_major_release; + void som_solib_select (struct gdbarch *gdbarch); int som_solib_section_offsets (struct objfile *objfile, -- 2.30.2