problems with gnu make and stdout with uclibc nptl

Timo Teräs timo.teras at iki.fi
Mon Apr 12 10:02:34 UTC 2010


Peter Kjellerstedt wrote:
> Unless it has changed in the last years, there are no expressed 
> guarantees regarding API and ABI stability for the 0.x.y releases of 
> uClibc. AFAIK the stable API/ABI is intended for the 1.0.0 release. 
> And with the upcoming integration of the NPTL support, I do not see 
> this as the right time to go to 1.0.0 and lock down the API/ABI... 

Could the uclibc project then start using appropriate soname, so
we can install multiple versions of the library if needed (e.g.
when doing package based upgrade).

# objdump -p /lib/libuClibc-0.9.30.1.so  |grep SONAME
  SONAME               libc.so.0

Would indicate that all 0.x are compatible. Basically, soname
should be 0.x.y if all 0.x.y.z are supposed to be ABI compatible.

Currently it seems that link.so and linkm.so macros explicitly
set soname according to $(2).

define link.so
        $(Q)$(INSTALL) -d $(dir $@)
        $(Q)$(RM) $@ $@.$(2) $(dir $@)$(1)
        @$(disp_ld)
        $(Q)$(CC) $(LDFLAGS-$(notdir $@)) -Wl,-soname=$(notdir $@).$(2) \
                $(NOSTDLIB_CFLAGS) -o $(dir $@)$(1) $(START_FILE-$(notdir $@)) \
                -Wl,--whole-archive $(firstword $^) -Wl,--no-whole-archive \
                $(LIBS-$(notdir $@)) $(LIBGCC) $(END_FILE-$(notdir $@))
        $(Q)$(LN) -sf $(1) $@.$(2)
        $(Q)$(LN) -sf $(1) $@
endef

Those get called like:

./libc/Makefile.in:	$(call linkm.so,$(libc_FULL_NAME),$(MAJOR_VERSION))

And that's defined like:

Rules.mak:MAJOR_VERSION := 0

Resulting in above mentioned soname, which is completely broken regarding
to how shared object ABI compatibility should be handled.

Please fix soname.

Thanks,
  Timo


More information about the uClibc mailing list