This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [Buildroot] [PATCH 2/2] package/gdb: use stat() privided by the system
- From: Rich Felker <dalias at aerifal dot cx>
- To: Pedro Alves <palves at redhat dot com>
- Cc: Sergio Durigan Junior <sergiodj at redhat dot com>, Romain Naour <romain dot naour at smile dot fr>, Thomas Petazzoni <thomas dot petazzoni at bootlin dot com>, Romain Naour <romain dot naour at gmail dot com>, buildroot at buildroot dot org, gdb-patches at sourceware dot org
- Date: Tue, 11 Sep 2018 10:13:12 -0400
- Subject: Re: [Buildroot] [PATCH 2/2] package/gdb: use stat() privided by the system
- References: <20180909163750.14196-1-romain.naour@gmail.com> <20180909163750.14196-2-romain.naour@gmail.com> <20180910174900.0b9f4133@windsurf> <d588888e-dccc-50c8-5a6e-9c5c46a512cb@smile.fr> <20180910224128.GT1878@brightrain.aerifal.cx> <87lg88oolv.fsf@redhat.com> <13772de6-1197-4182-e13f-3b4f27dfa22d@redhat.com>
On Tue, Sep 11, 2018 at 10:51:20AM +0100, Pedro Alves wrote:
> On 09/11/2018 01:38 AM, Sergio Durigan Junior wrote:
>
> > This is happening because, before the commit mentioned above,
> > 'common-utils.c' (which gets transformed into 'common-utils-ipa.c'
> > during the gdbserver build) wasn't calling 'stat'. It doesn't seem like
> > a regression; it seems like a hidden problem that was uncovered by the
> > need of 'stat'.
> >
> > I don't know why this problem is manifesting only when compiling IPA,
> > and not when compiling 'common-utils.c' during GDB's/gdbserver's build.
>
> Because the IPA doesn't link with gnulib. And the answer to that wouldn't
> be as simple as "just link it in", because the IPA objects are supposed
> to be compiled with -fPIC and -fvisibility=hidden. So we'd need a third
> build of gnulib for the IPA.
>
> It doesn't seem like this code that calls stat (is_regular_file?) is
> useful for the IPA, so a quicker/simpler fix would be to simply move
> that function out of common-utils.c into some other file that is not
> shared with the IPA.
Eew, I just looked up what IPA is. Yes, it's buggy to be including
gnulib headers in files used for this unless you have another copy
compiled with hidden visibility. Alternatively, you could put all the
gnulib files into a static archive and link with
-Wl,--exclude-libs=ALL to make them hidden at link-time, without
having to compile them again.
As an aside, the whole idea of running in-process code
referencing/using functions in the process being debugged (like stat
in libc) seems fragile and broken; perhaps aside from this
inadvertently-added use in is_regular_file, there is no such code in
the IPA stuff?
Rich