]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* include/grub/setjmp.h: Define RETURNS_TWICE. Keep it empty for
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 18 Oct 2013 14:38:36 +0000 (16:38 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 18 Oct 2013 14:38:36 +0000 (16:38 +0200)
gcc < 4.0.
* include/grub/*/setjmp.h: USe RETURNS_TWICE.

ChangeLog
include/grub/arm/setjmp.h
include/grub/i386/setjmp.h
include/grub/ia64/setjmp.h
include/grub/mips/setjmp.h
include/grub/powerpc/setjmp.h
include/grub/setjmp.h
include/grub/sparc64/setjmp.h
include/grub/x86_64/setjmp.h

index e74072ccf067baf2f0ff8ae0f429929a2a71c0ba..54bf2d6951e73c02bd8fb37067b90c0d84cbc4d3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-10-18  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * include/grub/setjmp.h: Define RETURNS_TWICE. Keep it empty for
+       gcc < 4.0.
+       * include/grub/*/setjmp.h: USe RETURNS_TWICE.
+
 2013-10-18  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/dmraid_nvidia.c: Fix potentially uninited "layout".
index 1c1d0b54e47565a649dd08f390c55ce270a33362..7990f2eb31ece7d06028ed15218c682a17006dba 100644 (file)
@@ -21,7 +21,7 @@
 
 typedef unsigned long grub_jmp_buf[10];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
 
 #endif /* ! GRUB_SETJMP_CPU_HEADER */
index c5f94b40654626523198642fae5024057fe88796..bf959a665095ee0a230cb7e93a9fc64349ceb17e 100644 (file)
@@ -21,7 +21,7 @@
 
 typedef unsigned long grub_jmp_buf[6];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice, cdecl,
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE  __attribute__ ((cdecl,
                                                   regparm (3)));
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn, cdecl,
                                                              regparm (3)));
index 6e9bc8bef4f3201892c6756a923f69f4c44bebc0..0a62113795ef49b348613f02378185848c74f4fe 100644 (file)
@@ -24,5 +24,5 @@
 /* the __jmp_buf element type should be __float80 per ABI... */
 typedef long grub_jmp_buf[_JBLEN] __attribute__ ((aligned (16))); /* guarantees 128-bit alignment! */
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
index 5e59855860aa96dff1b889f3c326992021b4f25a..5ce45f5082a378485aa2ea5e5a1edce2e07ce004 100644 (file)
@@ -21,7 +21,7 @@
 
 typedef unsigned long grub_jmp_buf[11];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
 
 #endif /* ! GRUB_SETJMP_CPU_HEADER */
index fa16f73d253fd6420bd1570178a1be716e417f54..9beddfdb259cb9b469693e2cc231e845362d0ca2 100644 (file)
@@ -21,7 +21,7 @@
 
 typedef unsigned long grub_jmp_buf[20];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
 
 #endif /* ! GRUB_SETJMP_CPU_HEADER */
index a107b822998b861ce443a655872a5c18d2fa8b7d..4bba034f4d4858f6864260e1a07a13981c2101be 100644 (file)
@@ -25,6 +25,15 @@ typedef jmp_buf grub_jmp_buf;
 #define grub_setjmp setjmp
 #define grub_longjmp longjmp
 #else
+
+#include <grub/misc.h>
+
+#if GNUC_PREREQ(4,0)
+#define RETURNS_TWICE __attribute__ ((returns_twice))
+#else
+#define RETURNS_TWICE
+#endif
+
 /* This must define grub_jmp_buf, and declare grub_setjmp and
    grub_longjmp.  */
 # include <grub/cpu/setjmp.h>
index 6096baef18b253c56898e9ac166a8ff480558d13..00286a57421ddb5180d3fd94075b69a3d38f0fe9 100644 (file)
@@ -23,7 +23,7 @@
 
 typedef grub_uint64_t grub_jmp_buf[3];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
 
 #endif /* ! GRUB_SETJMP_CPU_HEADER */
index 4ad968ed567e51cf1ada9fcea05904e208635ed0..e9f2bac8e2c1d687e798129f779dd14553345427 100644 (file)
@@ -21,7 +21,7 @@
 
 typedef unsigned long grub_jmp_buf[8];
 
-int grub_setjmp (grub_jmp_buf env) __attribute__ ((returns_twice));
+int grub_setjmp (grub_jmp_buf env) RETURNS_TWICE;
 void grub_longjmp (grub_jmp_buf env, int val) __attribute__ ((noreturn));
 
 #endif /* ! GRUB_SETJMP_CPU_HEADER */