diff -p -up uClibc-0.9.30.1/Makefile.in.lib64~ uClibc-0.9.30.1/Makefile.in --- uClibc-0.9.30.1/Makefile.in.lib64~ 2008-11-17 17:38:34.000000000 -0500 +++ uClibc-0.9.30.1/Makefile.in 2009-12-08 23:08:20.422934410 -0500 @@ -190,7 +190,7 @@ $(LOCAL_INSTALL_PATH): install: install_runtime install_dev -RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)lib $(RUNTIME_PREFIX)lib) +RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME) $(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)) $(top_builddir)extra/scripts/unifdef: $(top_srcdir)extra/scripts/unifdef.c $(hcompile.u) @@ -370,41 +370,41 @@ endif # Installs development library links. install_dev: install_headers all - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib - -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/ + $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME) + -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/ ifeq ($(HAVE_SHARED),y) for i in `find lib/ -type l -name 'lib[a-zA-Z]*.so' | \ $(SED) -e 's/lib\///'` ; do \ $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \ - $(PREFIX)$(DEVEL_PREFIX)lib/$$i; \ + $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/$$i; \ done - if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \ - $(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \ - $(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME):' \ - -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME):' \ - -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)lib/$(UCLIBC_LDSO):' \ - $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \ + if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)/$(SHARED_MAJORNAME) ] ; then \ + $(RM) $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libc.so; \ + $(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/$(NONSHARED_LIBNAME):' \ + -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)/$(SHARED_MAJORNAME):' \ + -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)/$(UCLIBC_LDSO):' \ + $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libc.so; \ fi ifeq ($(UCLIBC_HAS_THREADS),y) ifneq ($(LINUXTHREADS_OLD),y) - if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) ] ; then \ - $(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \ - cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \ - echo "GROUP ( $(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)lib/libpthread_nonshared.a )" \ - >> $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \ + if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread.so.$(MAJOR_VERSION) ] ; then \ + $(RM) $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread.so; \ + cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread.so; \ + echo "GROUP ( $(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread_nonshared.a )" \ + >> $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libpthread.so; \ fi endif endif ifeq ($(PTHREADS_DEBUG_SUPPORT),y) $(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \ - $(PREFIX)$(DEVEL_PREFIX)lib/libthread_db.so + $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/libthread_db.so endif ifeq ($(DOPIC),y) # # If we build shared libraries then the static libs are PIC... # # Make _pic.a symlinks to make mklibs.py and similar tools happy. if [ -d lib ] ; then \ for i in `find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \ - $(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)lib/`echo $$i \ + $(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME)/`echo $$i \ | $(SED) -e 's/\.a$$/_pic.a/'`; \ done ; \ fi @@ -413,9 +413,9 @@ endif ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y) for file in lib/lib*.gdb; do \ if test -f $$file; then \ - $(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)lib; \ + $(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME); \ $(INSTALL) -m 755 `echo $$file | $(SED) 's/\.gdb$$//'` \ - $(PREFIX)$(DEVEL_PREFIX)lib; \ + $(PREFIX)$(DEVEL_PREFIX)$(SHARED_LIB_DIRNAME); \ fi; \ done endif @@ -423,15 +423,15 @@ endif # Installs run-time libraries install_runtime: all ifeq ($(HAVE_SHARED),y) - $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)lib + $(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME) $(INSTALL) -m 644 lib/lib*-$(VERSION).so \ - $(PREFIX)$(RUNTIME_PREFIX)lib - cd lib && $(TAR) -cf - *.so.* | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)lib + $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME) + cd lib && $(TAR) -cf - *.so.* | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME) @if [ -x lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \ set -e; \ $(SHELL_SET_X); \ $(INSTALL) -m 755 lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \ - $(PREFIX)$(RUNTIME_PREFIX)lib; \ + $(PREFIX)$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME); \ fi endif diff -p -up uClibc-0.9.30.1/Rules.mak.lib64~ uClibc-0.9.30.1/Rules.mak --- uClibc-0.9.30.1/Rules.mak.lib64~ 2009-03-02 16:10:04.000000000 -0500 +++ uClibc-0.9.30.1/Rules.mak 2009-12-08 23:08:20.425932279 -0500 @@ -75,6 +75,7 @@ TARGET_ARCH:=$(shell grep -s '^TARGET_AR TARGET_ARCH:=$(strip $(subst ",, $(strip $(TARGET_ARCH)))) TARGET_SUBARCH:=$(shell grep -s '^TARGET_SUBARCH' $(top_builddir)/.config | $(SED) -e 's/^TARGET_SUBARCH=//' -e 's/"//g') TARGET_SUBARCH:=$(strip $(subst ",, $(strip $(TARGET_SUBARCH)))) +SHARED_LIB_DIRNAME:=$(strip $(subst //,, $(subst /,, $(subst ",, $(strip $(SHARED_LIB_DIRNAME)))))) RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(subst ",, $(strip $(RUNTIME_PREFIX)))))) DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(subst ",, $(strip $(DEVEL_PREFIX)))))) KERNEL_HEADERS:=$(strip $(subst //,/, $(subst ,/, $(subst ",, $(strip $(KERNEL_HEADERS)))))) diff -p -up uClibc-0.9.30.1/extra/Configs/Config.in.lib64~ uClibc-0.9.30.1/extra/Configs/Config.in --- uClibc-0.9.30.1/extra/Configs/Config.in.lib64~ 2009-02-18 14:51:24.000000000 -0500 +++ uClibc-0.9.30.1/extra/Configs/Config.in 2009-12-08 23:08:49.394924029 -0500 @@ -1667,17 +1667,29 @@ endmenu menu "Library Installation Options" +config SHARED_LIB_DIRNAME + string "Shared library directory name" + depends on HAVE_SHARED + default "lib" + help + When using shared libraries, this will be the name of the directory + for the shared libraries. This value will be compiled into every + binary compiled with uClibc. + + For a typical target system this should be set to "lib", but for + multilib systems this might be ie. "lib32" or "lib64" etc. + config SHARED_LIB_LOADER_PREFIX string "Shared library loader path" - depends on HAVE_SHARED - default "$(RUNTIME_PREFIX)lib" + default "$(RUNTIME_PREFIX)$(SHARED_LIB_DIRNAME)" help When using shared libraries, this path is the location where the shared library will be invoked. This value will be compiled into every binary compiled with uClibc. - For a typical target system this should be set to "/lib", such that - 'make install' will install /lib/ld-uClibc.so.0. + For a typical target system this should be set to + "/$(SHARED_LIB_DIRNAME)", such that where SHARED_LIBNAME is set to + ie. "lib", 'make install' will install /lib/ld-uClibc.so.0. BIG FAT WARNING: If you do not have a shared library loader with the correct name diff -p -up uClibc-0.9.30.1/ldso/ldso/Makefile.in.lib64~ uClibc-0.9.30.1/ldso/ldso/Makefile.in --- uClibc-0.9.30.1/ldso/ldso/Makefile.in.lib64~ 2008-11-07 16:15:53.000000000 -0500 +++ uClibc-0.9.30.1/ldso/ldso/Makefile.in 2009-12-08 23:08:20.431932418 -0500 @@ -11,7 +11,7 @@ CFLAGS-ldso := -DNOT_IN_libc -DIS_IN_rtl CFLAGS-ldso += -fno-omit-frame-pointer CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso -CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" +CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_SHARED_LIB_DIRNAME=\"$(SHARED_LIB_DIRNAME)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\" CFLAGS-ldso/ldso/$(TARGET_ARCH)/ := $(CFLAGS-ldso) diff -p -up uClibc-0.9.30.1/ldso/ldso/dl-elf.c.lib64~ uClibc-0.9.30.1/ldso/ldso/dl-elf.c --- uClibc-0.9.30.1/ldso/ldso/dl-elf.c.lib64~ 2008-11-18 09:01:35.000000000 -0500 +++ uClibc-0.9.30.1/ldso/ldso/dl-elf.c 2009-12-08 23:08:20.434932242 -0500 @@ -296,10 +296,10 @@ struct elf_resolve *_dl_load_shared_libr This list must exactly match the list in uClibc/ldso/util/ldd.c */ _dl_if_debug_dprint("\tsearching full lib path list\n"); if ((tpnt1 = search_for_named_library(libname, secure, - UCLIBC_RUNTIME_PREFIX "lib:" - UCLIBC_RUNTIME_PREFIX "usr/lib" + UCLIBC_RUNTIME_PREFIX UCLIBC_SHARED_LIB_DIRNAME + ":" UCLIBC_RUNTIME_PREFIX "usr/" UCLIBC_SHARED_LIB_DIRNAME #ifndef __LDSO_CACHE_SUPPORT__ - ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" + ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" UCLIBC_SHARED_LIB_DIRNAME #endif , rpnt) ) != NULL) diff -p -up uClibc-0.9.30.1/ldso/libdl/Makefile.in.lib64~ uClibc-0.9.30.1/ldso/libdl/Makefile.in --- uClibc-0.9.30.1/ldso/libdl/Makefile.in.lib64~ 2008-11-07 16:15:53.000000000 -0500 +++ uClibc-0.9.30.1/ldso/libdl/Makefile.in 2009-12-08 23:08:20.437932067 -0500 @@ -9,7 +9,7 @@ CFLAGS-libdl := -DNOT_IN_libc -DIS_IN_li CFLAGS-libdl += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso -CFLAGS-libdl += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" +CFLAGS-libdl += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_SHARED_LIB_DIRNAME=\"$(SHARED_LIB_DIRNAME)\" ifeq ($(SUPPORT_LD_DEBUG),y) CFLAGS-libdl += -D__SUPPORT_LD_DEBUG__ diff -p -up uClibc-0.9.30.1/utils/Makefile.in.lib64~ uClibc-0.9.30.1/utils/Makefile.in --- uClibc-0.9.30.1/utils/Makefile.in.lib64~ 2009-01-14 10:54:12.000000000 -0500 +++ uClibc-0.9.30.1/utils/Makefile.in 2009-12-08 23:08:20.440934336 -0500 @@ -7,7 +7,7 @@ CFLAGS-utils := -DNOT_IN_libc $(SSP_ALL_CFLAGS) -B$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib -CFLAGS-utils-common := -I$(top_srcdir)ldso/include -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=$(UCLIBC_LDSO) +CFLAGS-utils-common := -I$(top_srcdir)ldso/include -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_SHARED_LIB_DIRNAME=\"$(SHARED_LIB_DIRNAME)\" -DUCLIBC_LDSO=$(UCLIBC_LDSO) CFLAGS-utils-shared := ifeq ($(UCLIBC_BUILD_PIE),y) CFLAGS-utils-shared := $(PIEFLAG) $(LDPIEFLAG) diff -p -up uClibc-0.9.30.1/utils/ldconfig.c.lib64~ uClibc-0.9.30.1/utils/ldconfig.c --- uClibc-0.9.30.1/utils/ldconfig.c.lib64~ 2007-04-17 19:08:20.000000000 -0400 +++ uClibc-0.9.30.1/utils/ldconfig.c 2009-12-08 23:08:20.443932206 -0500 @@ -975,10 +975,10 @@ int main(int argc, char **argv) /* look ma, no defaults */ if (!nodefault) { - scan_dir(UCLIBC_RUNTIME_PREFIX "lib"); - scan_dir(UCLIBC_RUNTIME_PREFIX "usr/lib"); + scan_dir(UCLIBC_RUNTIME_PREFIX UCLIBC_SHARED_LIB_DIRNAME); + scan_dir(UCLIBC_RUNTIME_PREFIX "usr/" UCLIBC_SHARED_LIB_DIRNAME); #ifndef __LDSO_CACHE_SUPPORT__ - scan_dir(UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib"); + scan_dir(UCLIBC_RUNTIME_PREFIX "usr/X11R6/" UCLIBC_SHARED_LIB_DIRNAME); #else /* I guess the defaults aren't good enough */ if ((extpath = get_extpath())) { @@ -989,8 +989,8 @@ int main(int argc, char **argv) while (cp[--len] == '/' && len) cp[len] = 0; /* we do the redundancy check only if cache usage is enabled */ - if (strcmp(UCLIBC_RUNTIME_PREFIX "lib", cp) == 0 - || strcmp(UCLIBC_RUNTIME_PREFIX "usr/lib", cp) == 0) { + if (strcmp(UCLIBC_RUNTIME_PREFIX UCLIBC_SHARED_LIB_DIRNAME, cp) == 0 + || strcmp(UCLIBC_RUNTIME_PREFIX "usr/" UCLIBC_SHARED_LIB_DIRNAME, cp) == 0) { if (verbose >= 0) warnx("You should remove `%s' from `%s'", cp, LDSO_CONF); continue; diff -p -up uClibc-0.9.30.1/utils/ldd.c.lib64~ uClibc-0.9.30.1/utils/ldd.c --- uClibc-0.9.30.1/utils/ldd.c.lib64~ 2008-10-29 15:40:21.000000000 -0400 +++ uClibc-0.9.30.1/utils/ldd.c 2009-12-08 23:08:20.443932206 -0500 @@ -144,6 +144,10 @@ # define UCLIBC_RUNTIME_PREFIX "/" #endif +#ifndef UCLIBC_SHARED_LIB_DIRNAME +# define UCLIBC_SHARED_LIB_DIRNAME "lib" +#endif + struct library { char *name; int resolved; @@ -480,9 +484,10 @@ void locate_library_file(ElfW(Ehdr) *ehd /* Lastly, search the standard list of paths for the library. This list must exactly match the list in uClibc/ldso/ldso/dl-elf.c */ - path = UCLIBC_RUNTIME_PREFIX "lib:" UCLIBC_RUNTIME_PREFIX "usr/lib" + path = UCLIBC_RUNTIME_PREFIX UCLIBC_SHARED_LIB_DIRNAME + ":" UCLIBC_RUNTIME_PREFIX "usr/" UCLIBC_SHARED_LIB_DIRNAME #ifndef __LDSO_CACHE_SUPPORT__ - ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" + ":" UCLIBC_RUNTIME_PREFIX "usr/X11R6/lib" UCLIBC_SHARED_LIB_DIRNAME #endif ; search_for_named_library(lib->name, buf, path);