On 12/24/2021 3:25 AM, FX via Gcc-patches wrote:
Hi, Libbacktrace fails to run “make check" on macOS (*-apple-darwin21), where the system make is GNU Make 3.81. But I think it would occur on all platforms that are not ELF and use make < 4. Running `make check` leads to this failure: elf_32.c:144:26: error: extra tokens at end of #undef directive [-Werror] 144 | #undef BACKTRACE_ELF_SIZE#define BACKTRACE_ELF_SIZE 32 | ^ where the invalid elf_32.c is generated by this command: SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \ REPLACE='#undef BACKTRACE_ELF_SIZE\ #define BACKTRACE_ELF_SIZE'; \ /usr/bin/sed "s/^$SEARCH\$/$REPLACE 32/" \ /tmp/gcc-darwin-arm64/libbacktrace/elf.c \ > elf_32.c.tmp mv elf_32.c.tmp elf_32.c This tries to have a newline inside the REPLACE string, and pass it to sed. This fails with GNU Make < 4. And GCC requires "GNU make version 3.80 (or later)". The portable solution is given in the autoconf manual: https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Newlines-in-Make-Rules.html Attached is a patch that fixes it. Tested on x86_64-apple-darwin21. OK to commit?
OK jeff