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

* [Bug libbacktrace/103822] libbacktrace make check fails with GNU Make 3.81
  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 ` fxcoudert at gcc dot gnu.org
  2021-12-29 19:28 ` fxcoudert at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2021-12-24 10:13 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103822

--- Comment #1 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Oops wrong type of quotes, needs double quotes:

diff --git a/libbacktrace/Makefile.am b/libbacktrace/Makefile.am
index 8874f41338a..d200e3a9433 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

* [Bug libbacktrace/103822] libbacktrace make check fails with GNU Make 3.81
  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
  1 sibling, 0 replies; 3+ messages in thread
From: fxcoudert at gcc dot gnu.org @ 2021-12-29 19:28 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103822

Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |12.0

--- Comment #2 from Francois-Xavier Coudert <fxcoudert at gcc dot gnu.org> ---
Fixed by
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=0ac7bab6181cf3400ba1f53fd6aac92900eef1e5

^ 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).