On 2/9/22 06:45, Christian Jullien wrote:
Hi Herman,
As just tested, your recent patch fixes the __Thread_local issue we
have otherwise with <ctype.h>
I think, the two following patches proposed by David are also needed,
wdyt?
diff --git a/include/tccdefs.h b/include/tccdefs.h
index 2d42bea..1bef382 100644
--- a/include/tccdefs.h
+++ b/include/tccdefs.h
@@ -91,6 +91,11 @@
# if __SIZEOF_POINTER__ == 8
/* FIXME, __int128_t is used by setjump */
#define __int128_t struct { unsigned char _dummy[16]
__attribute((aligned(16))); }
+ #define __SIZEOF_SIZE_T__ 8
+ #define __SIZEOF_PTRDIFF_T__ 8
+#else
+ #define __SIZEOF_SIZE_T__ 4
+ #define __SIZEOF_PTRDIFF_T__ 4
# endif
#elif defined __FreeBSD_kernel__
diff --git a/lib/bcheck.c b/lib/bcheck.c
index 0379b6e..3f66b1c 100644
--- a/lib/bcheck.c
+++ b/lib/bcheck.c
@@ -226,10 +226,13 @@ typedef struct alloca_list_struct {
#elif defined(__OpenBSD__)
#define BOUND_TID_TYPE pid_t
#define BOUND_GET_TID syscall (SYS_getthrid)
-#elif defined(__FreeBSD__) || defined(__NetBSD__)
+#elif defined(__FreeBSD__)
#define BOUND_TID_TYPE pid_t
-#define BOUND_GET_TID 0
-#elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) ||
defined(__aarch64__) || defined(__riscv)
+#define BOUND_GET_TID syscall (SYS_thr_self)
+#elif defined(__NetBSD__)
+#define BOUND_TID_TYPE pid_t
+#define BOUND_GET_TID syscall (SYS_lwp_self)
+#elif defined(__linux__)
#define BOUND_TID_TYPE pid_t
#define BOUND_GET_TID syscall (SYS_gettid)
#else
There is a typo in the netbsd part. See attached corrected patch.
The other parts are ok.
Herman
*From:*Tinycc-devel
[mailto:tinycc-devel-bounces+eligis=orange...@nongnu.org] *On Behalf
Of *Herman ten Brugge via Tinycc-devel
*Sent:* Tuesday, February 08, 2022 19:03
*To:* tinycc-devel@nongnu.org
*Cc:* Herman ten Brugge
*Subject:* Re: [Tinycc-devel] Fwd: [PATCH] freebsd support update proposal
On 2/7/22 10:54, grischka wrote:
David CARLIER wrote:
Hi if nobody objects, I may apply the last aforementioned patch
sometime next week.
Since you asked:
--- a/tests/tests2/46_grep.c
+++ b/tests/tests2/46_grep.c
@@ -14,6 +14,9 @@
* included and reference made to the fact that reproduction
* privileges were granted by DECUS.
*/
+#if defined(__FreeBSD__)
+#include <sys/cdefs.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h> // tolower()
- what is this (nobody will know without a comment)
- sys/cdefs.h is not that a user file should include
- 46_grep.c looks really "innocent" enough that it should compile
OOTB on any C and platform
- in general, when tests fail, we want the problem be fixed, not
the test
Maybe you can find a better solution, or maybe someone else can...
-- gr
I checked the stdio.h file on freebsd 12.2 and 13.0 and see:
.....
#ifndef _STDIO_H_
#define _STDIO_H_
#include <sys/cdefs.h>
.....
So the file is included in stdio.h for freebsd.
What version of freebsd are you using?
Herman
PS:
I just added a fix for freebsd 13.0 in mob.
Kind regards.
diff --git a/include/tccdefs.h b/include/tccdefs.h
index 2d42bea..83e3c38 100644
--- a/include/tccdefs.h
+++ b/include/tccdefs.h
@@ -88,9 +88,15 @@
#define __GNUC_PATCHLEVEL__ 0
#define __GNUC_STDC_INLINE__ 1
#define __NO_TLS 1
+ #define __RUNETYPE_INTERNAL 1
# if __SIZEOF_POINTER__ == 8
/* FIXME, __int128_t is used by setjump */
#define __int128_t struct { unsigned char _dummy[16]
__attribute((aligned(16))); }
+ #define __SIZEOF_SIZE_T__ 8
+ #define __SIZEOF_PTRDIFF_T__ 8
+#else
+ #define __SIZEOF_SIZE_T__ 4
+ #define __SIZEOF_PTRDIFF_T__ 4
# endif
#elif defined __FreeBSD_kernel__
diff --git a/lib/bcheck.c b/lib/bcheck.c
index 0379b6e..91b7b12 100644
--- a/lib/bcheck.c
+++ b/lib/bcheck.c
@@ -226,10 +226,13 @@ typedef struct alloca_list_struct {
#elif defined(__OpenBSD__)
#define BOUND_TID_TYPE pid_t
#define BOUND_GET_TID syscall (SYS_getthrid)
-#elif defined(__FreeBSD__) || defined(__NetBSD__)
+#elif defined(__FreeBSD__)
#define BOUND_TID_TYPE pid_t
-#define BOUND_GET_TID 0
-#elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) ||
defined(__aarch64__) || defined(__riscv)
+#define BOUND_GET_TID syscall (SYS_thr_self)
+#elif defined(__NetBSD__)
+#define BOUND_TID_TYPE pid_t
+#define BOUND_GET_TID syscall (SYS__lwp_self)
+#elif defined(__linux__)
#define BOUND_TID_TYPE pid_t
#define BOUND_GET_TID syscall (SYS_gettid)
#else
_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel