code: plan9front

Download patch

ref: ff9ce8210aeaf968e08e16ab62c388b9cf555a06
parent: c09546cceafeaa04b6536e8b31278fd3a30593c2
author: Ori Bernstein <ori@eigenstate.org>
date: Fri Sep 6 14:01:52 EDT 2019

Include integer limits from generic stdint.h in system-specific stdint.h

--- a/amd64/include/ape/stdint.h
+++ b/amd64/include/ape/stdint.h
@@ -1,31 +1,9 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_ARCH_H_
+#define _STDINT_ARCH_H_ 1
 
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
+typedef long long _intptr_t;
+typedef unsigned long long _uintptr_t;
 
-typedef long long intptr_t;
-typedef unsigned long long uintptr_t;
-
-#define INT8_MIN	0x80
-#define INT16_MIN	0x8000
-#define INT32_MIN	0x80000000
-#define INT64_MIN	0x8000000000000000LL
-
-#define INT8_MAX	0x7f
-#define INT16_MAX	0x7fff
-#define INT32_MAX	0x7fffffff
-#define INT64_MAX	0x7fffffffffffffffULL
-
-#define UINT8_MAX	0xff
-#define UINT16_MAX	0xffff
-#define UINT32_MAX	0xffffffffL
-#define UINT64_MAX	0xffffffffffffffffULL
+#include "/sys/include/ape/stdint.h"
 
 #endif
--- a/arm64/include/ape/stdint.h
+++ b/arm64/include/ape/stdint.h
@@ -1,31 +1,9 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_ARCH_H_
+#define _STDINT_ARCH_H_ 1
 
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
+typedef long long _intptr_t;
+typedef unsigned long long _uintptr_t;
 
-typedef long long intptr_t;
-typedef unsigned long long uintptr_t;
-
-#define INT8_MIN	0x80
-#define INT16_MIN	0x8000
-#define INT32_MIN	0x80000000
-#define INT64_MIN	0x8000000000000000LL
-
-#define INT8_MAX	0x7f
-#define INT16_MAX	0x7fff
-#define INT32_MAX	0x7fffffff
-#define INT64_MAX	0x7fffffffffffffffULL
-
-#define UINT8_MAX	0xff
-#define UINT16_MAX	0xffff
-#define UINT32_MAX	0xffffffffL
-#define UINT64_MAX	0xffffffffffffffffULL
+#include "/sys/include/ape/stdint.h"
 
 #endif
--- a/sys/include/ape/limits.h
+++ b/sys/include/ape/limits.h
@@ -75,11 +75,12 @@
 /*#define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX */
 /*#define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX */
 /*#define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX */
+#define SSIZE_MIN LONG_MIN
 #define SSIZE_MAX LONG_MAX
-#define SIZE_MAX ULONG_MAX
 /*#define STREAM_MAX _POSIX_STREAM_MAX */
 /*#define TIMER_MAX _POSIX_TIMER_MAX */
 #define TZNAME_MAX _POSIX_TZNAME_MAX
+
 
 #ifdef _LIMITS_EXTENSION
 /* some things are just too big for pedagogy (X!) */
--- a/sys/include/ape/stdint.h
+++ b/sys/include/ape/stdint.h
@@ -1,8 +1,14 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_GENERIC_H_
+#define _STDINT_GENERIC_H_ 1
 
+/*
+ * Default for 32 bit architectures, overriden by
+ * /$objtype/include/ape/stdint.h if needed.
+ */
+#ifndef _STDINT_ARCH_H_
 typedef int _intptr_t;
 typedef unsigned int _uintptr_t;
+#endif
 
 typedef char int8_t;
 typedef short int16_t;
@@ -12,6 +18,7 @@
 typedef unsigned short uint16_t;
 typedef unsigned int uint32_t;
 typedef unsigned long long uint64_t;
+
 typedef _intptr_t intptr_t;
 typedef _uintptr_t uintptr_t;
 
@@ -34,5 +41,12 @@
 #define UINT16_MAX	0xffff
 #define UINT32_MAX	0xffffffffL
 #define UINT64_MAX	0xffffffffffffffffULL
+
+/* 
+ * Right now, all of our size_t types are 32 bit, even on
+ * 64 bit architectures.
+ */
+#define SIZE_MIN	UINT32_MIN
+#define SIZE_MAX	UINT32_MAX
 
 #endif