public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
From: gdb-buildbot@sergiodj.net
To: gdb-testers@sourceware.org
Subject: [binutils-gdb] Fix build with GNU Make 3.81
Date: Thu, 19 Dec 2019 23:18:00 -0000	[thread overview]
Message-ID: <1ee7b812e778e4fddcfaa5f0be023dfdfb5a4d6e@gdb-build> (raw)

*** TEST RESULTS FOR COMMIT 1ee7b812e778e4fddcfaa5f0be023dfdfb5a4d6e ***

commit 1ee7b812e778e4fddcfaa5f0be023dfdfb5a4d6e
Author:     Bernd Edlinger <bernd.edlinger@hotmail.de>
AuthorDate: Fri Dec 13 17:21:21 2019 +0100
Commit:     Bernd Edlinger <bernd.edlinger@hotmail.de>
CommitDate: Thu Dec 19 20:18:32 2019 +0100

    Fix build with GNU Make 3.81
    
    GNU Make 3.81 is apparently confused when the same
    source file is processed by a pattern rule and an
    explicit rule at the same time with different output file.
    The pattern %.o: ../%.c and alloc-ipa.o: ../alloc.c
    both have the source ../alloc.c but two independent
    object files alloc.o and alloc-ipa.o, so
    while building gdbserver I see the following message:
    
    make[4]: Circular alloc-ipa.o <- ../alloc.c dependency dropped.
      CXX    alloc-ipa.o
    g++: warning: '-x c++' after last input file has no effect
    g++: fatal error: no input files
    compilation terminated.
    
    In the make debug output I see the pattern is first correct:
    
    alloc-ipa.o: ../alloc.c | config.h build-gnulib-gdbserver/import/string.h
            $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
            $(POSTCOMPILE)
    
    But after the "Circular" dependency is dropped, the pattern
    is changed to:
    
    alloc-ipa.o: | config.h build-gnulib-gdbserver/import/string.h
            $(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
            $(POSTCOMPILE)
    
    So indeed now $< is empty, and the build step fails.
    
    This happens only when alloc.o needs to be built, when alloc.o
    was already built, the build succeeds, but it takes often
    several attempts until the build succeeds.
    By rewriting the alloc-ipa.c: ../alloc.c rule into a pattern
    rule, the problem goes away.
    
    While already at it, this patch removes also the
    $(WARN_CFLAGS_NO_FORMAT) from the build rule, which is just a
    copy/paste thing that is not necessary for alloc.c at all.

diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index ecc3db53eb..8ab1f07b87 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,7 @@
+2019-12-16  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* Makefile.in: Fix build with GNU Make 3.81
+
 2019-12-16  Tom Tromey  <tromey@adacore.com>
 
 	* server.c (get_exec_file): Constify result.
diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in
index 10e004039f..9e8c213472 100644
--- a/gdb/gdbserver/Makefile.in
+++ b/gdb/gdbserver/Makefile.in
@@ -580,10 +580,6 @@ ax.o: ax.c
 	$(COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
 	$(POSTCOMPILE)
 
-alloc-ipa.o: ../alloc.c
-	$(IPAGENT_COMPILE) $(WARN_CFLAGS_NO_FORMAT) $<
-	$(POSTCOMPILE)
-
 # Rules for objects that go in the in-process agent.
 
 arch/%-ipa.o: ../arch/%.c
@@ -602,6 +598,10 @@ gdbsupport/%-ipa.o: ../gdbsupport/%.c
 	$(IPAGENT_COMPILE) $<
 	$(POSTCOMPILE)
 
+%-ipa.o: ../%.c
+	$(IPAGENT_COMPILE) $<
+	$(POSTCOMPILE)
+
 # Note: Between two matching pattern rules, GNU Make 3.81 chooses the first one.
 # Therefore, this one needs to be before "%.o: %.c" for it to be considered for
 # files such as linux-amd64-ipa.o generated from linux-amd64-ipa.c.


             reply	other threads:[~2019-12-19 23:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-19 23:18 gdb-buildbot [this message]
2019-12-19 23:04 ` Failures on Ubuntu-Aarch64-native-extended-gdbserver-m64, branch master gdb-buildbot
2019-12-21  2:00 ` Failures on Fedora-i686, " gdb-buildbot
2019-12-21  2:01 ` *** COMPILATION FAILED *** Failures on Fedora-x86_64-cc-with-index, branch master *** BREAKAGE *** gdb-buildbot
2019-12-21  2:32 ` Failures on Fedora-x86_64-m32, branch master gdb-buildbot
2019-12-21  2:42 ` Failures on Fedora-x86_64-m64, " gdb-buildbot
2019-12-21  2:57 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " gdb-buildbot
2019-12-21  3:00 ` Failures on Fedora-x86_64-native-gdbserver-m32, " gdb-buildbot
2019-12-21  3:06 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " gdb-buildbot
2019-12-21  3:15 ` Failures on Fedora-x86_64-native-gdbserver-m64, " gdb-buildbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1ee7b812e778e4fddcfaa5f0be023dfdfb5a4d6e@gdb-build \
    --to=gdb-buildbot@sergiodj.net \
    --cc=gdb-testers@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).