[PATCH] buildsys: set up ASNEEDED entries for libubacktrace.so correctly.

William Pitcock nenolod at dereferenced.org
Wed Nov 16 10:31:59 UTC 2011


Hi Carmelo,

On Wed, 16 Nov 2011 11:14:00 +0100
Carmelo AMOROSO <carmelo.amoroso at st.com> wrote:

> Hi William,
> 
> On 16/11/2011 11.05, William Pitcock wrote:
> > The linker script that is generated does not pull in the right file
> > for libubacktrace.so in the event that $(ABI_VERSION) is not
> > $(MAJOR_VERSION).
> > 
> > This is the case for Alpine where multiple versions of uClibc are
> > provided in slotted form, with distinct ABI versions.
> > 
> > The correct variable to use is $(ABI_VERSION), which is what is
> > used in other instances in the buildsys when referring to the
> > SONAME instance of the files.
> > 
> > Signed-off-by: William Pitcock <nenolod at dereferenced.org>
> > ---
> >  Makefile.in |    2 +-
> >  Rules.mak   |    2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/Makefile.in b/Makefile.in
> > index 0a4347b..0f8b48e 100644
> > --- a/Makefile.in
> > +++ b/Makefile.in
> > @@ -345,7 +345,7 @@ else
> >  endif
> >  ifeq ($(UCLIBC_HAS_BACKTRACE),y)
> >  # Add the AS_NEEDED entry for libubacktrace.so
> > -	if [ -f $(top_builddir)lib/libc.so -a -f
> > $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ;
> > then \
> > +	if [ -f $(top_builddir)lib/libc.so -a -f
> > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so ] ; then \ echo
> > "GROUP ( $(UBACKTRACE_ASNEEDED) )" >>
> > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \ fi endif
> 
> why this change ?

Without this change, the libc.so linker script does not get updated by
the build system (at least on Alpine it does not).  The reason why is
because the linker script is installed into $(DEVEL_PREFIX), not
$(RUNTIME_PREFIX).

On Alpine, $(DEVEL_PREFIX) is /usr/lib, while $(RUNTIME_PREFIX) is /lib
for libc.

In other configurations, it is possible for $(RUNTIME_PREFIX) to be the
same as $(DEVEL_PREFIX), but this is not the case in all
configurations, so we should honour $(DEVEL_PREFIX) where appropriate
instead of assuming they are the same, which is simply not the case.

> 
> > diff --git a/Rules.mak b/Rules.mak
> > index 4e4baf9..a5b6901 100644
> > --- a/Rules.mak
> > +++ b/Rules.mak
> > @@ -118,7 +118,7 @@ export MAJOR_VERSION MINOR_VERSION SUBLEVEL
> > VERSION ABI_VERSION LC_ALL 
> >  LIBC := libc
> >  SHARED_LIBNAME := $(LIBC).so.$(ABI_VERSION)
> > -UBACKTRACE_DSO := libubacktrace.so.$(MAJOR_VERSION)
> > +UBACKTRACE_DSO := libubacktrace.so.$(ABI_VERSION)
> 
> ok for this, instead.

Would you prefer I split these changes into two different patches?

William


More information about the uClibc mailing list