From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Esben Haabendal 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 --- 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 bdaa5238e84..3c8cf963c31 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 diff --git a/inc/arm/efibind.h b/inc/arm/efibind.h index 40a5a9cd428..7a22b9c8458 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 diff --git a/inc/ia32/efibind.h b/inc/ia32/efibind.h index 1b11f10a6d3..dd0138573d9 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 #endif diff --git a/inc/ia64/efibind.h b/inc/ia64/efibind.h index b415461b10c..b9b2e624657 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 #endif diff --git a/inc/mips64el/efibind.h b/inc/mips64el/efibind.h index 4adbca31d63..32241e5ad46 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 diff --git a/inc/x86_64/efibind.h b/inc/x86_64/efibind.h index 4309f9f0e17..ae40595be0b 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 #endif