shithub: riscv

Download patch

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;