>From 40813812c4e721bf02e9d65e589238ed559991f6 Mon Sep 17 00:00:00 2001 From: Michael Haubenwallner Date: Tue, 15 Mar 2016 16:10:41 +0100 Subject: [PATCH] AIX: use -X32_64 flag in search for toolchain The AIX toolchain does accept only 32 bit objects by default. They either need the -X32_64 flag to accept both, or the OBJECT_MODE=64 environment variable to switch to 64 bit only. We rely on the new gl_AIX_OBJECT_MODE early gnulib macro to set gl_cv_aix_object_mode and use the -X32_64 flag to search for various tools. * gnulib: Bump, for gl_AIX_OBJECT_MODE macro. * m4/libtool.m4 (_LT_PROG_AR): Use -X32_64 upon gl_cv_aix_object_mode. (LT_PATH_NM): Ditto. (_LT_CMD_OLD_ARCHIVE): Ditto for strip, ranlib. (LT_PATH_LD): Use -b flag for non-GNU ld upon gl_cv_aix_object_mode. --- gnulib | 2 +- m4/libtool.m4 | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/gnulib b/gnulib index 5be7728..382a70e 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 5be7728cf7c0fb61be1ccbfbd302764ef7e6b72d +Subproject commit 382a70efd75241ea495737faeffc32b09f75de31 diff --git a/m4/libtool.m4 b/m4/libtool.m4 index ee292af..28ccb3f 100644 --- a/m4/libtool.m4 +++ b/m4/libtool.m4 @@ -1491,7 +1491,11 @@ need_locks=$enable_libtool_lock # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) +[if test no != "$gl_cv_aix_object_mode"; then + AC_CHECK_TOOLS(AR, ["ar -X32_64"], false) +else + AC_CHECK_TOOLS(AR, [ar], false) +fi : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) @@ -1543,11 +1547,19 @@ _LT_DECL([], [archiver_list_spec], [1], m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR -AC_CHECK_TOOL(STRIP, strip, :) +if test no != "$gl_cv_aix_object_mode"; then + AC_CHECK_TOOL(STRIP, strip -X32_64, :) +else + AC_CHECK_TOOL(STRIP, strip, :) +fi test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) -AC_CHECK_TOOL(RANLIB, ranlib, :) +if test no != "$gl_cv_aix_object_mode"; then + AC_CHECK_TOOL(RANLIB, ranlib -X32_64, :) +else + AC_CHECK_TOOL(RANLIB, ranlib, :) +fi test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) @@ -3331,6 +3343,9 @@ AC_CACHE_VAL(lt_cv_path_LD, fi done IFS=$lt_save_ifs + if test no = $with_gnu_ld && no != "$gl_cv_aix_object_mode"; then + lt_cv_path_LD="$lt_cv_path_LD -b$gl_cv_aix_object_mode" + fi else lt_cv_path_LD=$LD # Let the user override the test with a path. fi]) @@ -3701,13 +3716,18 @@ else # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + # AIX nm needs -X32_64 to accept both 32 and 64 bit objects + tmp_nmflags=-B + if test no != "$gl_cv_aix_object_mode"; then + tmp_nmflags='-X32_64 -B' + fi case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + case `"$tmp_nm" $tmp_nmflags $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" + lt_cv_path_NM="$tmp_nm $tmp_nmflags" break 2 ;; *) -- 2.4.6