This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: set sysroot command on AIX has no effect.
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: sangamesh dot swamy at in dot ibm dot com (Sangamesh Mallayya)
- Cc: gdb-patches at sourceware dot org
- Date: Fri, 30 Sep 2016 16:15:03 +0200 (CEST)
- Subject: Re: set sysroot command on AIX has no effect.
- Authentication-results: sourceware.org; auth=none
Hi Sangamesh,
> If we call solib_bfd_open for .a files then the call to open file using
> gdb_open_cloexec inside solib_find function is failing.
> The reason for this is,
> we will be getting library information from ld_info in the form of
> "/usr/lib/libc.a(shr.o)", but actually we will be having the
> file in filesystem as /usr/lib/libc.a. This is the reason initially i
> didn't use solib_bfd_open.
Yes, I understand why you cannot use solib_bfd_open directly. That's why
I suggested to use *solib_bfd_fopen* (note the "f") :-)
> But i experimented some more and tried to see how gdb behaves if we pass
> modified pathname exactly as the file which we are having in the machine,
> like "/usr/lib/libc.a".
> Then bfd bfd_check_format is failing with the error "not in executable
> format".
> Looks like bfd isn't able to recognise the .a archives.
> I can have a look on why bfd check is failing.
That's because solib_bfd_open uses the bfd_object argument to
bfd_check_format, which is explicitly supposed to reject .a archives.
Instead, to check for archives, you need to use bfd_archive, like
solib_aix_bfd_open does. I'm not suggesting to change that, just to
open the bfd using solib_find and solib_bfd_fopen before performing
the check, instead of using gdb_bfd_open.
Bye,
Ulrich
--
Dr. Ulrich Weigand
GNU/Linux compilers and toolchain
Ulrich.Weigand@de.ibm.com