| From 1a53d8f88a452847b25f9689f9a08dbcf82c86e4 Mon Sep 17 00:00:00 2001 |
| From: Esben Haabendal <esben@esben1.localdomain> |
| Date: Fri, 15 Mar 2019 11:57:51 +0100 |
| Subject: [PATCH] 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> |
| Signed-off-by: James Hilliard <james.hilliard1@gmail.com> |
| [Upstream status: |
| https://sourceforge.net/p/gnu-efi/code/merge-requests/5] |
| --- |
| inc/aarch64/efibind.h | 2 ++ |
| inc/arm/efibind.h | 2 ++ |
| inc/ia32/efibind.h | 2 ++ |
| inc/ia64/efibind.h | 2 ++ |
| inc/mips64el/efibind.h | 2 ++ |
| inc/x86_64/efibind.h | 2 ++ |
| 6 files changed, 12 insertions(+) |
| |
| diff --git a/inc/aarch64/efibind.h b/inc/aarch64/efibind.h |
| index bdaa523..3c8cf96 100644 |
| --- a/inc/aarch64/efibind.h |
| +++ b/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> |
| diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h |
| index 40a5a9c..7a22b9c 100644 |
| --- a/inc/arm/efibind.h |
| +++ b/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> |
| diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h |
| index 1b11f10..dd01385 100644 |
| --- a/inc/ia32/efibind.h |
| +++ b/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 |
| diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h |
| index b415461..b9b2e62 100644 |
| --- a/inc/ia64/efibind.h |
| +++ b/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 |
| diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h |
| index 4adbca3..32241e5 100644 |
| --- a/inc/mips64el/efibind.h |
| +++ b/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> |
| diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h |
| index 4309f9f..ae40595 100644 |
| --- a/inc/x86_64/efibind.h |
| +++ b/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 |
| -- |
| 2.17.1 |
| |