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