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
_______________________________________________
uClibc mailing list
uClibc@uclibc.org
http://lists.busybox.net/mailman/listinfo/uclibc

Reply via email to