public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: binutils@sourceware.org
Subject: Re: Silence compiler warning on
Date: Thu, 04 May 2006 18:39:00 -0000	[thread overview]
Message-ID: <20060504183930.GA6506@nevyn.them.org> (raw)
In-Reply-To: <200604180912.k3I9Cvra015638@elgar.sibelius.xs4all.nl>

On Tue, Apr 18, 2006 at 11:12:57AM +0200, Mark Kettenis wrote:
> Right now, when I compile BFD on HP-UX 10.20, I get the following
> warning (wich is fatal because of -Werror):
> 
> /export/jive/kettenis/src/gdb/bfd/bfd.c: In function `_bfd_abort':
> /export/jive/kettenis/src/gdb/bfd/bfd.c:801: warning: `noreturn' function does return
> 
> The problem here is that the system headers don't declare _exit() with
> __attribute__((noreturn).  Previously we didn't get this warning
> because _bfd_abort() called xexit(), which was declared with
> __attribute__((noreturn)) (and xexit.c was compiled without -Werror).
> 
> The attached patch is an attempt to fix this.  Ok?
> 
> 
> Index: ChangeLog
> from  Mark Kettenis  <kettenis@jive.nl>
> 
>         * bfd.c (_bfd_abort): Provide prototype for _exit with
>         ATTRIBUTE_NORETURN.

I would like this fixed before binutils 2.17.  Does something like this
work for you?

-- 
Daniel Jacobowitz
CodeSourcery

2006-05-04  Daniel Jacobiwtz  <dan@codesourcery.com>

	* configure.in: Check if _exit with ATTRIBUTE_NORETURN is OK.
	* bfd.c (_bfd_abort): Handle USE_EXIT_NORETURN.
	* configure, config.in: Regenerated.

Index: configure.in
===================================================================
RCS file: /cvs/src/src/bfd/configure.in,v
retrieving revision 1.206
diff -u -p -r1.206 configure.in
--- configure.in	16 Apr 2006 18:01:02 -0000	1.206
+++ configure.in	4 May 2006 18:37:57 -0000
@@ -159,6 +159,19 @@ AC_CHECK_DECLS(strstr)
 AC_CHECK_DECLS(snprintf)
 AC_CHECK_DECLS(vsnprintf)
 
+# At least HP-UX 10.20 declares _exit without noreturn.  If we can
+# add the attribute ourselves, we'll do so.
+AC_CACHE_CHECK([if we can redeclare _exit], bfd_cv_exit_noreturn,
+[AC_COMPILE_IFELSE(
+  [AC_LANG_PROGRAM([#include "../include/ansidecl.h"],
+		   [[extern void _exit (int) ATTRIBUTE_NORETURN; _exit (0);]])],
+  [bfd_cv_exit_noreturn=yes],
+  [bfd_cv_exit_noreturn=no])])
+if test "$bfd_cv_exit_noreturn" = yes; then
+  AC_DEFINE(USE_EXIT_NORETURN, 1,
+    [Define if redeclaring _exit with noreturn is OK])
+fi
+
 # If we are configured native, pick a core file support file.
 COREFILE=
 COREFLAG=
Index: bfd.c
===================================================================
RCS file: /cvs/src/src/bfd/bfd.c,v
retrieving revision 1.81
diff -u -p -r1.81 bfd.c
--- bfd.c	16 Mar 2006 12:20:15 -0000	1.81
+++ bfd.c	4 May 2006 18:37:57 -0000
@@ -783,6 +783,10 @@ bfd_assert (const char *file, int line)
 void
 _bfd_abort (const char *file, int line, const char *fn)
 {
+#ifdef USE_EXIT_NORETURN
+  /* Make sure the compiler knows _exit doesn't return.  */
+  extern void _exit (int) ATTRIBUTE_NORETURN;
+#endif
   if (fn != NULL)
     (*_bfd_error_handler)
       (_("BFD %s internal error, aborting at %s line %d in %s\n"),

  parent reply	other threads:[~2006-05-04 18:39 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-04-18  9:40 Mark Kettenis
2006-04-18 23:50 ` Ian Lance Taylor
2006-04-19  7:44   ` Mark Kettenis
2006-04-19  8:22     ` Ian Lance Taylor
2006-05-04 18:39 ` Daniel Jacobowitz [this message]
2006-05-05 12:20   ` Mark Kettenis
2006-05-05 13:07     ` Daniel Jacobowitz

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=20060504183930.GA6506@nevyn.them.org \
    --to=drow@false.org \
    --cc=binutils@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    /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).