diff options
| author | 2023-11-10 19:24:56 -0500 | |
|---|---|---|
| committer | 2023-11-12 20:04:01 -0500 | |
| commit | acd44bb898996ff4e36b39b10e870e40bcaf2634 (patch) | |
| tree | fa452ee2e583566a4fd28a4ac204cf62a9a1a0bc /subprojects/glad/include/KHR | |
| parent | f1a9751af6cc6aa0bac91e7f28fc43b1a4cb64fd (diff) | |
| download | mauri-acd44bb898996ff4e36b39b10e870e40bcaf2634.tar.gz mauri-acd44bb898996ff4e36b39b10e870e40bcaf2634.tar.bz2 mauri-acd44bb898996ff4e36b39b10e870e40bcaf2634.zip | |
One last push
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'subprojects/glad/include/KHR')
| -rw-r--r-- | subprojects/glad/include/KHR/khrplatform.h | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/subprojects/glad/include/KHR/khrplatform.h b/subprojects/glad/include/KHR/khrplatform.h index dd22d92..0164644 100644 --- a/subprojects/glad/include/KHR/khrplatform.h +++ b/subprojects/glad/include/KHR/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 |