From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1068 invoked by alias); 14 Jan 2011 15:38:34 -0000 Received: (qmail 856 invoked by uid 22791); 14 Jan 2011 15:38:29 -0000 X-SWARE-Spam-Status: No, hits=-1.2 required=5.0 tests=AWL,BAYES_00,MSGID_MULTIPLE_AT,TW_BJ X-Spam-Check-By: sourceware.org Received: from mailhost.u-strasbg.fr (HELO mailhost.u-strasbg.fr) (130.79.200.153) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 14 Jan 2011 15:38:22 +0000 Received: from md2.u-strasbg.fr (md2.u-strasbg.fr [IPv6:2001:660:2402::187]) by mailhost.u-strasbg.fr (8.14.3/jtpda-5.5pre1) with ESMTP id p0EFcIlf074424 for ; Fri, 14 Jan 2011 16:38:18 +0100 (CET) (envelope-from pierre.muller@ics-cnrs.unistra.fr) Received: from mailserver.u-strasbg.fr (ms1.u-strasbg.fr [130.79.204.10]) by md2.u-strasbg.fr (8.14.4/jtpda-5.5pre1) with ESMTP id p0EFcHIO063687 for ; Fri, 14 Jan 2011 16:38:18 +0100 (CET) (envelope-from pierre.muller@ics-cnrs.unistra.fr) Received: from E6510Muller (gw-ics.u-strasbg.fr [130.79.210.225]) (user=mullerp mech=LOGIN) by mailserver.u-strasbg.fr (8.14.4/jtpda-5.5pre1) with ESMTP id p0EFcHlV023512 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO) for ; Fri, 14 Jan 2011 16:38:17 +0100 (CET) (envelope-from pierre.muller@ics-cnrs.unistra.fr) From: "Pierre Muller" To: Subject: [RFC] Fix hpux_major_release variable setting Date: Fri, 14 Jan 2011 16:09:00 -0000 Message-ID: <000f01cbb401$1093cdc0$31bb6940$@muller@ics-cnrs.unistra.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-01/txt/msg00328.txt.bz2 As discussed a while ago, there was an issue when trying to compile GDB with --enable-targets=all for mingw64. This was linked to the fact that sys/utsname.h header doesn't exist for mingw64, but solib-som.c code wrongly calls uname even if it is not a native hpux system. The patch below fixes that problem by moving the call to uname to hppa-hpux-nat.c Is this patch OK? I am unsure about the way to move it to the header... Would it be better to declare it without external in the header? This would then mean that I should also move DEFAULT_HPUX_MAJOR_RELEASE macro to the header, but it would have the advantage of allowing to not use hard-coded 11 in _initialize_hppa_hpux_nat. Tested on x86_64 linux machine, no regression found. Pierre Muller GDB pascal language maintainer projecttype:gdb revision:HEAD email:muller@ics.u-strasbg.fr 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. (_initialize_hppa_hpux_nat): Set hpux_major_release variable by analyzis of uname call return. Index: src/gdb/solib-som.h =================================================================== RCS file: /cvs/src/src/gdb/solib-som.h,v retrieving revision 1.9 diff -u -p -r1.9 solib-som.h --- src/gdb/solib-som.h 1 Jan 2011 15:33:15 -0000 1.9 +++ src/gdb/solib-som.h 14 Jan 2011 15:18:22 -0000 @@ -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, Index: src/gdb/solib-som.c =================================================================== RCS file: /cvs/src/src/gdb/solib-som.c,v retrieving revision 1.34 diff -u -p -r1.34 solib-som.c --- src/gdb/solib-som.c 11 Jan 2011 21:53:24 -0000 1.34 +++ src/gdb/solib-som.c 14 Jan 2011 15:18:22 -0000 @@ -26,13 +26,14 @@ #include "gdbcore.h" #include "target.h" #include "inferior.h" +#include "command.h" +#include "gdbcmd.h" #include "hppa-tdep.h" #include "solist.h" #include "solib.h" #include "solib-som.h" -#include #include #undef SOLIB_SOM_DBG @@ -131,24 +132,18 @@ som_relocate_section_addresses (struct s ; } -/* Get HP-UX major release number. Returns zero if the - release is not known. */ +/* Variable storing HP-UX major release number. + On non native system, simply suppose that the major release number is 11. + hppa-hpux-nat.c initialization code sets this number to + the real one on startup in native conditions. */ + +#define DEFAULT_HPUX_MAJOR_RELEASE 11 +int +hpux_major_release = DEFAULT_HPUX_MAJOR_RELEASE; static int get_hpux_major_release (void) { - static int hpux_major_release = -1; - - if (hpux_major_release == -1) - { - struct utsname x; - char *p; - - uname (&x); - p = strchr (x.release, '.'); - hpux_major_release = p ? atoi (p + 1) : 0; - } - return hpux_major_release; } Index: src/gdb/hppa-hpux-nat.c =================================================================== RCS file: /cvs/src/src/gdb/hppa-hpux-nat.c,v retrieving revision 1.22 diff -u -p -r1.22 hppa-hpux-nat.c --- src/gdb/hppa-hpux-nat.c 14 Jan 2011 13:38:24 -0000 1.22 +++ src/gdb/hppa-hpux-nat.c 14 Jan 2011 15:18:22 -0000 @@ -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" @@ -242,7 +244,12 @@ void _initialize_hppa_hpux_nat (void) { struct target_ops *t; + struct utsname x; + char *p; + uname (&x); + p = strchr (x.release, '.'); + hpux_major_release = p ? atoi (p + 1) : 11; #ifdef HAVE_TTRACE t = inf_ttrace_target (); #else