URL: <https://savannah.gnu.org/patch/?10469>
Summary: Add support for 32-bit mode on FreeBSD/powerpc64 Group: GNU Libtool Submitter: haible Submitted: Sat 24 Aug 2024 02:12:56 PM CEST Category: None Priority: 5 - Normal Status: None Privacy: Public Assigned to: None Originator Email: Open/Closed: Open Discussion Lock: Any _______________________________________________________ Follow-up Comments: ------------------------------------------------------- Date: Sat 24 Aug 2024 02:12:56 PM CEST By: Bruno Haible <haible> FreeBSD 14 has two PowerPC64 ports: * A little-endian one (powerpc64le), * a big-endian one (powerpc64). The latter is a bi-arch system: While "cc" creates 64-bit binaries, "cc -m32" creates 32-bit binaries. 32-bit executables have /libexec/ld-elf32.so.1 as dynamic loader. In GNU libunistring, the unit tests in the build tree are libtool wrapper scripts. In 32-bit mode, they all fail: $ ./test-accept ld-elf32.so.1: Shared object "libunistring.so.5" not found, required by "test-accept" The library was built correctly in the build tree: $ ls -lL /home/bruno/libunistring-1.2/build-32/lib/.libs/libunistring.so.5 -rwxr-xr-x 1 bruno bruno 3347152 Aug 24 04:25 /home/bruno/libunistring-1.2/build-32/lib/.libs/libunistring.so.5 The problem is that the wrapper script uses the variable 'LD_LIBRARY_PATH': $ grep LIBRARY_PATH test-accept # Add our own library path to LD_LIBRARY_PATH LD_LIBRARY_PATH="/home/bruno/libunistring-1.2/build-32/lib/.libs:$LD_LIBRARY_PATH" # Some systems cannot cope with colon-terminated LD_LIBRARY_PATH LD_LIBRARY_PATH=`$ECHO "$LD_LIBRARY_PATH" | /usr/bin/sed 's/::*$//'` export LD_LIBRARY_PATH And indeed, LD_LIBRARY_PATH seems to be ignored here: $ LD_LIBRARY_PATH=/home/bruno/libunistring-1.2/build-32/lib/.libs .libs/test-accept ld-elf32.so.1: Shared object "libunistring.so.5" not found, required by "test-accept" The documentation <https://man.freebsd.org/cgi/man.cgi?query=ld.so> says: "On 64-bit architectures, the linker for 32-bit objects recognizes all the environment variables listed below, but is being prefixed with LD_32_, for example: LD_32_TRACE_LOADED_OBJECTS." So, let's try LD_32_LIBRARY_PATH instead: $ LD_32_LIBRARY_PATH=/home/bruno/libunistring-1.2/build-32/lib/.libs .libs/test-accept (works) Or like this: $ sed -i -e 's/LD_LIBRARY_PATH/LD_32_LIBRARY_PATH/g' test-accept $ ./test-accept (works) The fix is, of course, to change the value of shlibpath_var in the generated 'libtool' script. Note: The lt_cv_* values in config.cache are the same for the 32-bit build as for the 64-bit build: $ diff build-64/config.cache build-32/config.cache 23c23 < ac_cv_env_CC_value='cc -ferror-limit=0' --- > ac_cv_env_CC_value='cc -m32 -ferror-limit=0' ... 407,408c402,403 < gl_cv_header_working_stdint_h=${gl_cv_header_working_stdint_h=no} < gl_cv_host_cpu_c_abi_32bit=${gl_cv_host_cpu_c_abi_32bit=no} --- > gl_cv_header_working_stdint_h=${gl_cv_header_working_stdint_h=yes} > gl_cv_host_cpu_c_abi_32bit=${gl_cv_host_cpu_c_abi_32bit=yes} ... Find attached: * freebsd-biarch.diff: a patch relative to libtool-2.4.7. * 0001-Fix-libtool-wrapper-programs-in-32-bit-mode-on-FreeB.patch: a commit for libtool 'master'. _______________________________________________________ File Attachments: ------------------------------------------------------- Name: freebsd-biarch.diff Size: 761B <https://file.savannah.gnu.org/file/freebsd-biarch.diff?file_id=56379> ------------------------------------------------------- Name: 0001-Fix-libtool-wrapper-programs-in-32-bit-mode-on-FreeB.patch Size: 1KiB <https://file.savannah.gnu.org/file/0001-Fix-libtool-wrapper-programs-in-32-bit-mode-on-FreeB.patch?file_id=56380> AGPL NOTICE These attachments are served by Savane. You can download the corresponding source code of Savane at https://git.savannah.nongnu.org/cgit/administration/savane.git/snapshot/savane-d29f54e45b7d24f2f4db4b8f43b4a13267e27d3b.tar.gz _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/patch/?10469> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/
signature.asc
Description: PGP signature