On 2013-04-27 07:58, Mike Frysinger wrote:
> The current code tries to locate a compatible nm tool. It starts with
> a prefixed nm tool (great!) and includes a plain nm too (that's fine).
> The problem is that the code searches for the prefixed nm before the
> plain nm (normally fine), but doesn't break once it has found a valid
> match. It does this so that it if it finds an "OK", but "not great",
> tool, it'll keep on searching.
I agree this sounds like the wrong this to do, but isn't it better to
just break all the way out when a "great" nm is found?
(patch untested)
Cheers,
Peter
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 3f50b0c..a8a71da 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -3383,8 +3383,9 @@ else
if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
+ lt_save_ifs=$IFS
for lt_tmp_nm in $lt_nm_to_check; do
-lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
+IFS=$PATH_SEPARATOR
for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
IFS=$lt_save_ifs
test -z "$ac_dir" && ac_dir=.
@@ -3397,13 +3398,13 @@ else
case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
*/dev/null* | *'Invalid file or object type'*)
lt_cv_path_NM="$tmp_nm -B"
- break
+ break 2
;;
*)
case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
*/dev/null*)
lt_cv_path_NM="$tmp_nm -p"
- break
+ break 2
;;
*)
lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
@@ -3416,6 +3417,7 @@ else
done
IFS=$lt_save_ifs
done
+ IFS=$lt_save_ifs
: ${lt_cv_path_NM=no}
fi])
if test no != "$lt_cv_path_NM"; then