git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/3] Add option to disable NORETURN

From
AKAndi Kleen <andi@firstfloor.org>
Date
Jun 19, 2011, 01:07 UTC
Message-ID
<1308445625-30667-1-git-send-email-andi@firstfloor.org>
From: Junio C Hamano <gitster@pobox.com>

Due to a bug in gcc 4.6+ it can crash when doing profile feedback with a noreturn function pointer

(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49299)
This adds a Makefile variable to disable noreturns.
[Patch by Junio, description by Andi Kleen]
Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
 Makefile          |    6 ++++++
 git-compat-util.h |    2 +-
 2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/Makefile b/Makefile
index e40ac0c..03b4499 100644
--- a/Makefile
+++ b/Makefile
@@ -153,6 +153,9 @@ all::
 # that tells runtime paths to dynamic libraries;
 # "-Wl,-rpath=/path/lib" is used instead.
 #
+# Define NO_NORETURN if using buggy versions of gcc 4.6+ and profile feedback,
+# as the compiler can crash (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49299)
+#
 # Define USE_NSEC below if you want git to care about sub-second file mtimes
 # and ctimes. Note that you need recent glibc (at least 2.2.4) for this, and
 # it will BREAK YOUR LOCAL DIFFS! show-diff and anything using it will likely
@@ -1374,6 +1377,9 @@ endif
 ifdef USE_ST_TIMESPEC
 	BASIC_CFLAGS += -DUSE_ST_TIMESPEC
 endif
+ifdef NO_NORETURN
+	BASIC_CFLAGS += -DNO_NORETURN
+endif
 ifdef NO_NSEC
 	BASIC_CFLAGS += -DNO_NSEC
 endif
diff --git a/git-compat-util.h b/git-compat-util.h
index e0bb81e..9925cf0 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -218,7 +218,7 @@ extern char *gitbasename(char *);
 #if __HP_cc >= 61000
 #define NORETURN __attribute__((noreturn))
 #define NORETURN_PTR
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && !defined(NO_NORETURN)
 #define NORETURN __attribute__((__noreturn__))
 #define NORETURN_PTR __attribute__((__noreturn__))
 #elif defined(_MSC_VER)
-- 
1.7.4.4
Next: Andi Kleen
Message 1 of 20 in “Add option to disable NORETURN”
  1. 1/3 Add option to disable NORETURNAndi Kleen, Jun 19, 2011
  2. 2/3 Add a lot of dummy returns to avoid warnings with NO_NORETURNAndi Kleen, Jun 19, 2011
  3. Junio C HamanoJun 20, 2011
  4. Andi KleenJun 20, 2011
  5. Junio C HamanoJun 20, 2011
  6. Andi KleenJun 20, 2011
  7. Jonathan NiederJun 20, 2011
  8. Andi KleenJun 20, 2011
  9. Jonathan NiederJun 20, 2011
  10. Jonathan NiederJun 20, 2011
  11. Andi KleenJun 21, 2011
  12. Jonathan NiederJun 21, 2011
  13. Junio C HamanoJun 20, 2011
  14. Andi KleenJun 21, 2011
  15. Junio C HamanoJun 20, 2011
  16. Andi KleenJun 20, 2011
  17. Junio C HamanoJun 20, 2011
  18. Andi KleenJun 20, 2011
  19. Junio C HamanoJun 21, 2011
  20. 3/3 Add profile feedback build to git v2Andi Kleen, Jun 19, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.