public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libbacktrace/103822] New: libbacktrace make check fails with GNU Make 3.81
@ 2021-12-24 10:09 fxcoudert at gcc dot gnu.org
2021-12-24 10:13 ` [Bug libbacktrace/103822] " fxcoudert at gcc dot gnu.org
2021-12-29 19:28 ` fxcoudert at gcc dot gnu.org
0 siblings, 2 replies; 3+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2021-12-24 10:09 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103822
Bug ID: 103822
Summary: libbacktrace make check fails with GNU Make 3.81
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libbacktrace
Assignee: unassigned at gcc dot gnu.org
Reporter: fxcoudert at gcc dot gnu.org
CC: ian at gcc dot gnu.org
Target Milestone: ---
The failure is observed 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 GNU Make 3.81. 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
The patch to fix it is this:
diff --git a/libbacktrace/Makefile.am b/libbacktrace/Makefile.am
index 8874f41338a..180a3b1a809 100644
--- a/libbacktrace/Makefile.am
+++ b/libbacktrace/Makefile.am
@@ -145,18 +145,18 @@ endif HAVE_OBJCOPY_DEBUGLINK
endif HAVE_ELF
elf_%.c: elf.c
+ nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
SEARCH='#error "Unknown BACKTRACE_ELF_SIZE"'; \
- REPLACE='#undef BACKTRACE_ELF_SIZE\
- #define BACKTRACE_ELF_SIZE'; \
+ REPLACE='#undef BACKTRACE_ELF_SIZE\\$${nl}#define BACKTRACE_ELF_SIZE';
\
$(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
$< \
> $@.tmp
mv $@.tmp $@
xcoff_%.c: xcoff.c
+ nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
SEARCH='#error "Unknown BACKTRACE_XCOFF_SIZE"'; \
- REPLACE='#undef BACKTRACE_XCOFF_SIZE\
- #define BACKTRACE_XCOFF_SIZE'; \
+ REPLACE='#undef BACKTRACE_XCOFF_SIZE\\$${nl}#define
BACKTRACE_XCOFF_SIZE'; \
$(SED) "s/^$$SEARCH\$$/$$REPLACE $*/" \
$< \
> $@.tmp
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-12-29 19:28 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-24 10:09 [Bug libbacktrace/103822] New: libbacktrace make check fails with GNU Make 3.81 fxcoudert at gcc dot gnu.org
2021-12-24 10:13 ` [Bug libbacktrace/103822] " fxcoudert at gcc dot gnu.org
2021-12-29 19:28 ` fxcoudert at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).