Browse Source

Fix for problem with undeclared intptr_t type

When building gnu-efi with old compilers with pre C90 compilers:

In file included from gnu-efi-3.0.9/lib/../inc/efilib.h:25:0,
                 from gnu-efi-3.0.9/lib/lib.h:24,
                 from gnu-efi-3.0.9/lib/dpath.c:25:
gnu-efi-3.0.9/lib/dpath.c: In function 'FileDevicePath':
gnu-efi-3.0.9/lib/../inc/efilink.h:145:47: error: 'intptr_t' undeclared (first use in this function)
 #define EFI_FIELD_OFFSET(TYPE,Field) ((UINTN)(intptr_t)(&(((TYPE *) 0)->Field)))

Problem introduced with commit a46a62b12b58139c31d4288384808365c4053bf2
(Fix some types gcc doesn't like).

Avoid this by adding intptr_t (and uintptr_t) typedefs for builds that does
not include stdint.h.

Signed-off-by: Esben Haabendal <esben@esben1.localdomain>
Esben Haabendal 6 years ago
parent
commit
1a53d8f88a
6 changed files with 12 additions and 0 deletions
  1. 2 0
      inc/aarch64/efibind.h
  2. 2 0
      inc/arm/efibind.h
  3. 2 0
      inc/ia32/efibind.h
  4. 2 0
      inc/ia64/efibind.h
  5. 2 0
      inc/mips64el/efibind.h
  6. 2 0
      inc/x86_64/efibind.h

+ 2 - 0
inc/aarch64/efibind.h

@@ -27,6 +27,8 @@ typedef unsigned short      uint16_t;
 typedef short               int16_t;
 typedef unsigned char       uint8_t;
 typedef signed char         int8_t;   // unqualified 'char' is unsigned on ARM
+typedef uint64_t            uintptr_t;
+typedef int64_t             intptr_t;
 
 #else
 #include <stdint.h>

+ 2 - 0
inc/arm/efibind.h

@@ -27,6 +27,8 @@ typedef unsigned short      uint16_t;
 typedef short               int16_t;
 typedef unsigned char       uint8_t;
 typedef signed char         int8_t;   // unqualified 'char' is unsigned on ARM
+typedef uint32_t            uintptr_t;
+typedef int32_t             intptr_t;
 
 #else
 #include <stdint.h>

+ 2 - 0
inc/ia32/efibind.h

@@ -75,6 +75,8 @@ Revision History
        typedef unsigned char       uint8_t;
        typedef char                int8_t;
     #endif
+    typedef uint32_t            uintptr_t;
+    typedef int32_t             intptr_t;
 #elif defined(__GNUC__)
     #include <stdint.h>
 #endif

+ 2 - 0
inc/ia64/efibind.h

@@ -62,6 +62,8 @@ Revision History
         typedef unsigned char       uint8_t;
         typedef char                int8_t;
     #endif
+    typedef uint64_t            uintptr_t;
+    typedef int64_t             intptr_t;
 #elif defined(__GNUC__)
     #include <stdint.h>
 #endif

+ 2 - 0
inc/mips64el/efibind.h

@@ -29,6 +29,8 @@ typedef unsigned short      uint16_t;
 typedef short               int16_t;
 typedef unsigned char       uint8_t;
 typedef signed char         int8_t;   // unqualified 'char' is unsigned on ARM
+typedef uint64_t            uintptr_t;
+typedef int64_t             intptr_t;
 
 #else
 #include <stdint.h>

+ 2 - 0
inc/x86_64/efibind.h

@@ -84,6 +84,8 @@ Revision History
        typedef unsigned char       uint8_t;
        typedef char                int8_t;
     #endif
+    typedef uint64_t            uintptr_t;
+    typedef int64_t             intptr_t;
 #elif defined(__GNUC__)
     #include <stdint.h>
 #endif