ref: 2f67e21393c25943f25e116fa6912b7d92dbca4e
parent: 0e1fec841e7cc9291110284a946d1d0489fc7713
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Mar 24 10:45:15 EDT 2020
turn ptrdiff_t into a 64 bit type while technically a 32 bit ptrdiff_t is in spec on systems with 64 bit ponters as long as we guarantee that individual objects are small enough, this can confuse legitimate code, so lets fix this.
--- /dev/null
+++ b/amd64/include/ape/stddef.h
@@ -1,0 +1,7 @@
+#ifndef __STDDEF_ARCH_H
+#define __STDDEF_ARCH_H
+
+typedef long long _ptrdiff_t;
+#include "/sys/include/ape/stddef.h"
+
+#endif /* __STDDEF_ARCH_H */
--- /dev/null
+++ b/arm64/include/ape/stddef.h
@@ -1,0 +1,7 @@
+#ifndef __STDDEF_ARCH_H
+#define __STDDEF_ARCH_H
+
+typedef long long _ptrdiff_t;
+#include "/sys/include/ape/stddef.h"
+
+#endif /* __STDDEF_ARCH_H */
--- a/sys/include/ape/stddef.h
+++ b/sys/include/ape/stddef.h
@@ -1,6 +1,10 @@
#ifndef __STDDEF_H
#define __STDDEF_H
+#ifndef __STDDEF_ARCH_H
+typedef long _ptrdiff_t;
+#endif
+
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
@@ -10,7 +14,7 @@
#endif
#define offsetof(ty,mem) ((size_t) &(((ty *)0)->mem))
-typedef long ptrdiff_t;
+typedef _ptrdiff_t ptrdiff_t;
#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned long size_t;