diff --git a/modules/glad/glad.c b/modules/glad/glad.c index b0f571f..f9fd689 100644 --- a/modules/glad/glad.c +++ b/modules/glad/glad.c @@ -1,6 +1,6 @@ /* - OpenGL loader generated by glad 0.1.33 on Wed Jul 1 14:20:08 2020. + OpenGL loader generated by glad 0.1.35 on Sun Jun 5 13:01:47 2022. Language/Generator: C/C++ Specification: gl diff --git a/modules/glad/glad.h b/modules/glad/glad.h index 627e28c..e31f5a4 100644 --- a/modules/glad/glad.h +++ b/modules/glad/glad.h @@ -1,6 +1,6 @@ /* - OpenGL loader generated by glad 0.1.33 on Wed Jul 1 14:20:08 2020. + OpenGL loader generated by glad 0.1.35 on Sun Jun 5 13:01:47 2022. Language/Generator: C/C++ Specification: gl diff --git a/modules/glad/khrplatform.h b/modules/glad/khrplatform.h index dd22d92..0164644 100644 --- a/modules/glad/khrplatform.h +++ b/modules/glad/khrplatform.h @@ -153,6 +153,20 @@ typedef int64_t khronos_int64_t; typedef uint64_t khronos_uint64_t; #define KHRONOS_SUPPORT_INT64 1 #define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif #elif defined(__VMS ) || defined(__sgi) @@ -235,14 +249,21 @@ typedef unsigned short int khronos_uint16_t; * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears * to be the only LLP64 architecture in current use. */ -#ifdef _WIN64 +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) typedef signed long long int khronos_intptr_t; typedef unsigned long long int khronos_uintptr_t; -typedef signed long long int khronos_ssize_t; -typedef unsigned long long int khronos_usize_t; #else typedef signed long int khronos_intptr_t; typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else typedef signed long int khronos_ssize_t; typedef unsigned long int khronos_usize_t; #endif