Silence compiler warning on

Mark Kettenis mark.kettenis@xs4all.nl
Tue Apr 18 09:40:00 GMT 2006


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.

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	18 Apr 2006 08:58:52 -0000
@@ -783,6 +783,9 @@ bfd_assert (const char *file, int line)
 void
 _bfd_abort (const char *file, int line, const char *fn)
 {
+  /* Make sure the compiler knows _exit doesn't return.  */
+  extern void _exit (int) ATTRIBUTE_NORETURN;
+
   if (fn != NULL)
     (*_bfd_error_handler)
       (_("BFD %s internal error, aborting at %s line %d in %s\n"),



More information about the Binutils mailing list