Re: V2 [PATCH 1/2] GCC: Check if AR works with --plugin and rc
On Mon, Jan 11, 2021 at 4:22 PM Alan Modra wrote: > > On Mon, Jan 11, 2021 at 04:07:22PM -0800, H.J. Lu wrote: > > These are not fatal errors. Here is the updated patch to use > > AC_MSG_WARN instead. OK for master? > > OK by me. Please squash the two patches. > I will keep 2 separate since I am hoping the first one can go into GCC. -- H.J.
Re: V2 [PATCH 1/2] GCC: Check if AR works with --plugin and rc
On Mon, Jan 11, 2021 at 04:07:22PM -0800, H.J. Lu wrote: > These are not fatal errors. Here is the updated patch to use > AC_MSG_WARN instead. OK for master? OK by me. Please squash the two patches. -- Alan Modra Australia Development Lab, IBM
V2 [PATCH 1/2] GCC: Check if AR works with --plugin and rc
On Mon, Jan 11, 2021 at 3:27 PM Alan Modra wrote: > > On Mon, Jan 11, 2021 at 08:57:05AM -0800, H.J. Lu via Binutils wrote: > > diff --git a/config/gcc-plugin.m4 b/config/gcc-plugin.m4 > > index c5b72e9a13d..798a2054edd 100644 > > --- a/config/gcc-plugin.m4 > > +++ b/config/gcc-plugin.m4 > > @@ -145,6 +145,18 @@ for plugin in $plugin_names; do > > break > >fi > > done > > +dnl Check if ${AR} $plugin_option rc works. > > +AC_CHECK_TOOL(AR, ar) > > +if test "${AR}" = "" ; then > > + AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.]) > > +fi > > +touch conftest.c > > +${AR} $plugin_option rc conftest.a conftest.c > > +if test "$?" != 0; then > > + echo "Failed: ${AR} $plugin_option rc" > > Use AC_MSG_ERROR rather than echo. > > > + plugin_option= > > +fi > > +rm -f conftest.* > > if test -n "$plugin_option"; then > >$1="$plugin_option" > >AC_MSG_RESULT($plugin_option) > > > diff --git a/libtool.m4 b/libtool.m4 > > index 3672e9516e2..150971974c1 100644 > > --- a/libtool.m4 > > +++ b/libtool.m4 > > @@ -1340,7 +1340,14 @@ AC_CHECK_TOOL(AR, ar, false) > > test -z "$AR" && AR=ar > > if test -n "$plugin_option"; then > >if $AR --help 2>&1 | grep -q "\--plugin"; then > > -AR="$AR $plugin_option" > > +touch conftest.c > > +$AR $plugin_option rc conftest.a conftest.c > > +if test "$?" != 0; then > > + echo "Failed: $AR $plugin_option rc" > > AC_MSG_ERROR again. These are not fatal errors. Here is the updated patch to use AC_MSG_WARN instead. OK for master? -- H.J. From 90e4f853ef5b0291d7cc514fffc80794a91b7012 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 11 Jan 2021 08:22:35 -0800 Subject: [PATCH] GCC: Check if AR works with --plugin and rc AR from older binutils doesn't work with --plugin and rc: [hjl@gnu-cfl-2 bin]$ touch foo.c [hjl@gnu-cfl-2 bin]$ ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c [hjl@gnu-cfl-2 bin]$ ./ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c ./ar: no operation specified [hjl@gnu-cfl-2 bin]$ ./ar --version GNU ar (Linux/GNU Binutils) 2.29.51.0.1.20180112 Copyright (C) 2018 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. [hjl@gnu-cfl-2 bin]$ Check if AR works with --plugin and rc before passing --plugin to AR and RANLIB. PR ld/27173 * configure: Regenerated. * libtool.m4 (_LT_CMD_OLD_ARCHIVE): Check if AR works with --plugin and rc before enabling --plugin. config/ PR ld/27173 * gcc-plugin.m4 (GCC_PLUGIN_OPTION): Check if AR works with --plugin and rc before enabling --plugin. libiberty/ PR ld/27173 * configure: Regenerated. zlib/ PR ld/27173 * configure: Regenerated. --- config/gcc-plugin.m4 | 12 + configure| 103 +++ libiberty/configure | 103 +++ libtool.m4 | 9 +++- zlib/configure | 14 -- 5 files changed, 237 insertions(+), 4 deletions(-) diff --git a/config/gcc-plugin.m4 b/config/gcc-plugin.m4 index c5b72e9a13d..ca98d674912 100644 --- a/config/gcc-plugin.m4 +++ b/config/gcc-plugin.m4 @@ -145,6 +145,18 @@ for plugin in $plugin_names; do break fi done +dnl Check if ${AR} $plugin_option rc works. +AC_CHECK_TOOL(AR, ar) +if test "${AR}" = "" ; then + AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.]) +fi +touch conftest.c +${AR} $plugin_option rc conftest.a conftest.c +if test "$?" != 0; then + AC_MSG_WARN([Failed: $AR $plugin_option rc]) + plugin_option= +fi +rm -f conftest.* if test -n "$plugin_option"; then $1="$plugin_option" AC_MSG_RESULT($plugin_option) diff --git a/configure b/configure index a75bc26978c..5437ef12c72 100755 --- a/configure +++ b/configure @@ -10120,6 +10120,109 @@ for plugin in $plugin_names; do break fi done +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +ac_cv_prog_AR="${ac_tool_prefix}ar" +$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
Re: [PATCH 1/2] GCC: Check if AR works with --plugin and rc
On Mon, Jan 11, 2021 at 08:57:05AM -0800, H.J. Lu via Binutils wrote: > diff --git a/config/gcc-plugin.m4 b/config/gcc-plugin.m4 > index c5b72e9a13d..798a2054edd 100644 > --- a/config/gcc-plugin.m4 > +++ b/config/gcc-plugin.m4 > @@ -145,6 +145,18 @@ for plugin in $plugin_names; do > break >fi > done > +dnl Check if ${AR} $plugin_option rc works. > +AC_CHECK_TOOL(AR, ar) > +if test "${AR}" = "" ; then > + AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.]) > +fi > +touch conftest.c > +${AR} $plugin_option rc conftest.a conftest.c > +if test "$?" != 0; then > + echo "Failed: ${AR} $plugin_option rc" Use AC_MSG_ERROR rather than echo. > + plugin_option= > +fi > +rm -f conftest.* > if test -n "$plugin_option"; then >$1="$plugin_option" >AC_MSG_RESULT($plugin_option) > diff --git a/libtool.m4 b/libtool.m4 > index 3672e9516e2..150971974c1 100644 > --- a/libtool.m4 > +++ b/libtool.m4 > @@ -1340,7 +1340,14 @@ AC_CHECK_TOOL(AR, ar, false) > test -z "$AR" && AR=ar > if test -n "$plugin_option"; then >if $AR --help 2>&1 | grep -q "\--plugin"; then > -AR="$AR $plugin_option" > +touch conftest.c > +$AR $plugin_option rc conftest.a conftest.c > +if test "$?" != 0; then > + echo "Failed: $AR $plugin_option rc" AC_MSG_ERROR again. > +else > + AR="$AR $plugin_option" > +fi > +rm -f conftest.* >fi > fi > test -z "$AR_FLAGS" && AR_FLAGS=cru -- Alan Modra Australia Development Lab, IBM
[PATCH 1/2] GCC: Check if AR works with --plugin and rc
AR from older binutils doesn't work with --plugin and rc: [hjl@gnu-cfl-2 bin]$ touch foo.c [hjl@gnu-cfl-2 bin]$ ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c [hjl@gnu-cfl-2 bin]$ ./ar --plugin /usr/libexec/gcc/x86_64-redhat-linux/10/liblto_plugin.so rc libfoo.a foo.c ./ar: no operation specified [hjl@gnu-cfl-2 bin]$ ./ar --version GNU ar (Linux/GNU Binutils) 2.29.51.0.1.20180112 Copyright (C) 2018 Free Software Foundation, Inc. This program is free software; you may redistribute it under the terms of the GNU General Public License version 3 or (at your option) any later version. This program has absolutely no warranty. [hjl@gnu-cfl-2 bin]$ Check if AR works with --plugin and rc before passing --plugin to AR and RANLIB. PR ld/27173 * configure: Regenerated. config/ PR ld/27173 * gcc-plugin.m4 (GCC_PLUGIN_OPTION): Check if AR works with --plugin and rc before enabling --plugin. libiberty/ PR ld/27173 * configure: Regenerated. zlib/ PR ld/27173 * configure: Regenerated. --- config/gcc-plugin.m4 | 12 + configure| 102 +++ libiberty/configure | 102 +++ libtool.m4 | 9 +++- zlib/configure | 13 -- 5 files changed, 234 insertions(+), 4 deletions(-) diff --git a/config/gcc-plugin.m4 b/config/gcc-plugin.m4 index c5b72e9a13d..798a2054edd 100644 --- a/config/gcc-plugin.m4 +++ b/config/gcc-plugin.m4 @@ -145,6 +145,18 @@ for plugin in $plugin_names; do break fi done +dnl Check if ${AR} $plugin_option rc works. +AC_CHECK_TOOL(AR, ar) +if test "${AR}" = "" ; then + AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.]) +fi +touch conftest.c +${AR} $plugin_option rc conftest.a conftest.c +if test "$?" != 0; then + echo "Failed: ${AR} $plugin_option rc" + plugin_option= +fi +rm -f conftest.* if test -n "$plugin_option"; then $1="$plugin_option" AC_MSG_RESULT($plugin_option) diff --git a/configure b/configure index a75bc26978c..c44184f72ff 100755 --- a/configure +++ b/configure @@ -10120,6 +10120,108 @@ for plugin in $plugin_names; do break fi done +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +ac_cv_prog_AR="${ac_tool_prefix}ar" +$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +ac_cv_prog_ac_ct_AR="ar" +$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then +AR="" + else +case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac +AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test "${AR}" = "" ; then + as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5 +fi +touch conftest.c +${AR} $plugin_op