This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: [PATCH]: gdb/769 - segv fault on "info shared" on GDB 5.2.1 HPUX64 11.00
- From: Kevin Buettner <kevinb at redhat dot com>
- To: Josh Martin <Josh dot Martin at abq dot sc dot philips dot com>, gdb-patches at sources dot redhat dot com
- Date: Thu, 5 Dec 2002 17:54:05 -0700
- Subject: Re: [PATCH]: gdb/769 - segv fault on "info shared" on GDB 5.2.1 HPUX64 11.00
- References: <200210092342.g99Ngrp05819@atoae450.abq.sc.philips.com>
On Oct 9, 5:42pm, Josh Martin wrote:
> Here's the ChangeLog entry that I forgot to post. Unfortunately I cannot get
> expect to work on my system, so I can neither create a test case for this bug,
> nor verify other tests after this patch.
>
> - Josh Martin
>
> 2002-09-28 Josh Martin <timeslice@iname.com>
>
> * solib.c (info_sharedlibrary_command): Added catch for potential
> dereference of NULL pointer (current_target_so_ops).
> Fix PR gdb/769.
>
> > For platforms that aren't covered by the gdb/solib-foo.c files and the gdbarch
> > platform dependancy files the "info sharedlibrary" command will cause a
> > segmentation fault by dereferencing a NULL pointer (current_target_so_ops) in
> > gdb/solib.c:update_solib_list. The patch checks if current_target_so_ops is
> > NULL, and if so it responds with a "command not implemented" message.
> >
> > What I really wanted to do was to implement support for HPUX 11.00 64-bit
> w/GCC.
> > It shouldn't be too difficult as 64-bit GCC in HPUX 11.00 uses GNU ld and the
> > "standard" elf64hppa object format. Unfortunately I had no idea how to proceed
> > or where to find the neccesary information, thus I stuck with this "band-aid"
> > patch.
I've been thinking about this patch some more.
What I'm wondering is why your hpux target uses solib.o without defining
an appropriate solib-hpux.c (or whatever) file?
Anyway, with regard to catching potential dereferences to a NULL
current_target_so_ops, I'm inclined to handle this either via
a gdb_assert() or an explicit check (perhaps in the TARGET_SO_* macros)
with a call to internal_error(). Because that's really what it is. We
shouldn't be in solib.c at all if an appropriate backend hasn't been
defined.
Kevin