gcc/libbacktrace
Nick Alcock f330710912
libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case
My previous nm patch handled all cases but one -- if the user set NM in
the environment to a path which contained an option, libtool's nm
detection tries to run nm against a copy of nm with the options in it:
e.g. if NM was set to "nm --blargle", and nm was found in /usr/bin, the
test would try to run "/usr/bin/nm --blargle /usr/bin/nm --blargle".
This is unlikely to be desirable: in this case we should run
"/usr/bin/nm --blargle /usr/bin/nm".

Furthermore, as part of this nm has to detect when the passed-in $NM
contains a path, and in that case avoid doing a path search itself.
This too was thrown off if an option contained something that looked
like a path, e.g. NM="nm -B../prev-gcc"; libtool then tries to run
"nm -B../prev-gcc nm" which rarely works well (and indeed it looks
to see whether that nm exists, finds it doesn't, and wrongly concludes
that nm -p or whatever does not work).

Fix all of these by clipping all options (defined as everything
including and after the first " -") before deciding whether nm
contains a path (but not using the clipped value for anything else),
and then removing all options from the path-modified nm before
looking to see whether that nm existed.

NM=my-nm now does a path search and runs e.g.
  /usr/bin/my-nm -B /usr/bin/my-nm

NM=/usr/bin/my-nm now avoids a path search and runs e.g.
  /usr/bin/my-nm -B /usr/bin/my-nm

NM="my-nm -p../wombat" now does a path search and runs e.g.
  /usr/bin/my-nm -p../wombat -B /usr/bin/my-nm

NM="../prev-binutils/new-nm -B../prev-gcc" now avoids a path search:
  ../prev-binutils/my-nm -B../prev-gcc -B ../prev-binutils/my-nm

This seems to be all combinations, including those used by GCC bootstrap
(which, before this commit, fails to bootstrap when configured
--with-build-config=bootstrap-lto, because the lto plugin is now using
--export-symbols-regex, which requires libtool to find a working nm,
while also using -B../prev-gcc to point at the lto plugin associated
with the GCC just built.)

Regenerate all affected configure scripts.

ChangeLog:

	* libtool.m4 (LT_PATH_NM): Handle user-specified NM with
	options, including options containing paths.

gcc/ChangeLog:

	* configure: Regenerate.

libatomic/ChangeLog:

	* configure: Regenerate.

libbacktrace/ChangeLog:

	* configure: Regenerate.

libcc1/ChangeLog:

	* configure: Regenerate.

libffi/ChangeLog:

	* configure: Regenerate.

libgfortran/ChangeLog:

	* configure: Regenerate.

libgm2/ChangeLog:

	* configure: Regenerate.

libgomp/ChangeLog:

	* configure: Regenerate.

libitm/ChangeLog:

	* configure: Regenerate.

libobjc/ChangeLog:

	* configure: Regenerate.

libphobos/ChangeLog:

	* configure: Regenerate.

libquadmath/ChangeLog:

	* configure: Regenerate.

libsanitizer/ChangeLog:

	* configure: Regenerate.

libssp/ChangeLog:

	* configure: Regenerate.

libstdc++-v3/ChangeLog:

	* configure: Regenerate.

libvtv/ChangeLog:

	* configure: Regenerate.

lto-plugin/ChangeLog:

	* configure: Regenerate.

zlib/ChangeLog:

	* configure: Regenerate.
2023-08-07 22:59:39 +02:00
..
aclocal.m4 Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
alloc.c Update copyright years. 2023-01-16 11:52:17 +01:00
allocfail.c Update copyright years. 2023-01-16 11:52:17 +01:00
allocfail.sh Update copyright years. 2023-01-16 11:52:17 +01:00
atomic.c Update copyright years. 2023-01-16 11:52:17 +01:00
backtrace-supported.h.in Update copyright years. 2023-01-16 11:52:17 +01:00
backtrace.c Update copyright years. 2023-01-16 11:52:17 +01:00
backtrace.h Update copyright years. 2023-01-16 11:52:17 +01:00
btest.c Update copyright years. 2023-01-16 11:52:17 +01:00
ChangeLog Daily bump. 2023-08-04 00:17:17 +00:00
ChangeLog.jit
config.h.in libbacktrace: look for _pgmptr on Windows 2023-07-31 16:14:58 -07:00
configure libtool.m4: fix the NM="/nm/over/here -B/option/with/path" case 2023-08-07 22:59:39 +02:00
configure.ac libbacktrace: look for _pgmptr on Windows 2023-07-31 16:14:58 -07:00
dwarf.c libbacktrace: change PC variables from uint64_t to uintptr_t 2023-01-20 14:24:13 -08:00
edtest2.c Update copyright years. 2023-01-16 11:52:17 +01:00
edtest.c Update copyright years. 2023-01-16 11:52:17 +01:00
elf.c libbacktrace: minor fixes for zstd decompression 2023-03-28 13:08:42 -07:00
fileline.c libbacktrace: look for _pgmptr on Windows 2023-07-31 16:14:58 -07:00
filetype.awk libbacktrace: only match magic number at start of line 2020-09-08 12:52:29 -07:00
install-debuginfo-for-buildid.sh.in Update copyright years. 2023-01-16 11:52:17 +01:00
instrumented_alloc.c Update copyright years. 2023-01-16 11:52:17 +01:00
internal.h Update copyright years. 2023-01-16 11:52:17 +01:00
macho.c Update copyright years. 2023-01-16 11:52:17 +01:00
Makefile.am Update copyright years. 2023-01-16 11:52:17 +01:00
Makefile.in Regenerate Makefile.in files. 2023-01-17 12:20:05 +01:00
mmap.c Update copyright years. 2023-01-16 11:52:17 +01:00
mmapio.c Update copyright years. 2023-01-16 11:52:17 +01:00
mtest.c Update copyright years. 2023-01-16 11:52:17 +01:00
nounwind.c Update copyright years. 2023-01-16 11:52:17 +01:00
pecoff.c Update copyright years. 2023-01-16 11:52:17 +01:00
posix.c Update copyright years. 2023-01-16 11:52:17 +01:00
print.c Update copyright years. 2023-01-16 11:52:17 +01:00
read.c Update copyright years. 2023-01-16 11:52:17 +01:00
README libbacktrace: update README 2022-05-28 07:59:16 -07:00
simple.c Update copyright years. 2023-01-16 11:52:17 +01:00
sort.c Update copyright years. 2023-01-16 11:52:17 +01:00
state.c Update copyright years. 2023-01-16 11:52:17 +01:00
stest.c Update copyright years. 2023-01-16 11:52:17 +01:00
test_format.c Update copyright years. 2023-01-16 11:52:17 +01:00
testlib.c Update copyright years. 2023-01-16 11:52:17 +01:00
testlib.h Update copyright years. 2023-01-16 11:52:17 +01:00
ttest.c Update copyright years. 2023-01-16 11:52:17 +01:00
unittest.c Update copyright years. 2023-01-16 11:52:17 +01:00
unknown.c Update copyright years. 2023-01-16 11:52:17 +01:00
xcoff.c Update copyright years. 2023-01-16 11:52:17 +01:00
xztest.c Update copyright years. 2023-01-16 11:52:17 +01:00
zstdtest.c [libbacktrace] fix up broken test 2023-08-03 15:26:04 +02:00
ztest.c Update copyright years. 2023-01-16 11:52:17 +01:00

The libbacktrace library
Initially written by Ian Lance Taylor <iant@golang.org>

The libbacktrace library may be linked into a program or library and
used to produce symbolic backtraces.
Sample uses would be to print a detailed backtrace when an error
occurs or to gather detailed profiling information.
In general the functions provided by this library are async-signal-safe,
meaning that they may be safely called from a signal handler.

The libbacktrace library is provided under a BSD license.
See the source files for the exact license text.

The public functions are declared and documented in the header file
backtrace.h, which should be #include'd by a user of the library.

Building libbacktrace will generate a file backtrace-supported.h,
which a user of the library may use to determine whether backtraces
will work.
See the source file backtrace-supported.h.in for the macros that it
defines.

As of October 2020, libbacktrace supports ELF, PE/COFF, Mach-O, and
XCOFF executables with DWARF debugging information.
In other words, it supports GNU/Linux, *BSD, macOS, Windows, and AIX.
The library is written to make it straightforward to add support for
other object file and debugging formats.

The library relies on the C++ unwind API defined at
https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html
This API is provided by GCC and clang.