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

Reply via email to