Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Unity-Technologies/bdwgc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Ederer <88375058+aceunity@users.noreply.github.com>2021-12-02 19:25:24 +0300
committerGitHub <noreply@github.com>2021-12-02 19:25:24 +0300
commitb994dff67511d4014867d55794ca392eb58ee694 (patch)
treeb2499c58934db9e7395fe73c62af7cc9317dffb6
parentb8a4d0dfcd7545e2a422237db0af75f72cf10e96 (diff)
parent037cecfcebd8a9e6c005af092f49133507179dd8 (diff)
Merge pull request #67 from Unity-Technologies/platform/hmi/qnx
QNX Platform
-rw-r--r--include/private/gcconfig.h22
-rw-r--r--os_dep.c11
2 files changed, 27 insertions, 6 deletions
diff --git a/include/private/gcconfig.h b/include/private/gcconfig.h
index 242f0a0a..7ecaf955 100644
--- a/include/private/gcconfig.h
+++ b/include/private/gcconfig.h
@@ -106,10 +106,20 @@ EXTERN_C_BEGIN
/* And one for QNX: */
# if defined(__QNX__)
-# define I386
+# define QNX_STACKBOTTOM 1
+# if defined(__aarch64__)
+# define AARCH64
+# elif defined(__arm__) || defined(__ARM__)
+# define ARM32
+# elif defined(__amd64) || defined(__X86_64__)
+# define X86_64
+# elif defined(__X86__)
+# define I386
+# else
+# error Unknown QNX target architecture detected.
+# endif
# define OS_TYPE "QNX"
# define SA_RESTART 0
-# define HEURISTIC1
extern char etext[];
extern int _end[];
# define DATASTART ((ptr_t)(etext))
@@ -155,7 +165,7 @@ EXTERN_C_BEGIN
# if defined(__aarch64__)
# define AARCH64
# if !defined(LINUX) && !defined(DARWIN) && !defined(FREEBSD) \
- && !defined(NN_BUILD_TARGET_PLATFORM_NX)
+ && !defined(NN_BUILD_TARGET_PLATFORM_NX) && !defined(__QNX__)
# define NOSYS
# define mach_type_known
# endif
@@ -169,7 +179,7 @@ EXTERN_C_BEGIN
&& !defined(__CEGCC__) && !defined(NN_PLATFORM_CTR) \
&& !defined(NN_BUILD_TARGET_PLATFORM_NX) \
&& !defined(GC_NO_NOSYS) && !defined(SN_TARGET_PSP2) \
- && !defined(SYMBIAN)
+ && !defined(SYMBIAN) && !defined(__QNX__)
# define NOSYS
# define mach_type_known
# endif
@@ -3022,7 +3032,7 @@ EXTERN_C_BEGIN
#if defined(SVR4) || defined(LINUX) || defined(IRIX5) || defined(HPUX) \
|| defined(OPENBSD) || defined(NETBSD) || defined(FREEBSD) \
|| defined(DGUX) || defined(BSD) || defined(HAIKU) || defined(HURD) \
- || defined(AIX) || defined(DARWIN) || defined(OSF1)
+ || defined(AIX) || defined(DARWIN) || defined(OSF1) || defined(__QNX__)
# define UNIX_LIKE /* Basic Unix-like system calls work. */
#endif
@@ -3146,7 +3156,7 @@ EXTERN_C_BEGIN
#if ((defined(UNIX_LIKE) && (defined(DARWIN) || defined(HAIKU) \
|| defined(HURD) || defined(OPENBSD) \
- || defined(ARM32) \
+ || defined(ARM32) || defined(__QNX__) \
|| defined(AVR32) || defined(MIPS) \
|| defined(NIOS2) || defined(OR1K))) \
|| (defined(LINUX) && !defined(__gnu_linux__)) \
diff --git a/os_dep.c b/os_dep.c
index ea65b02c..1f8a7863 100644
--- a/os_dep.c
+++ b/os_dep.c
@@ -1169,6 +1169,15 @@ GC_INNER size_t GC_page_size = 0;
}
#endif /* LINUX_STACKBOTTOM */
+#ifdef QNX_STACKBOTTOM
+
+ STATIC ptr_t GC_qnx_main_stack_base(void)
+ {
+ return (ptr_t)__builtin_frame_address(0);
+ }
+
+#endif /* QNX_STACKBOTTOM */
+
#ifdef FREEBSD_STACKBOTTOM
/* This uses an undocumented sysctl call, but at least one expert */
/* believes it will stay. */
@@ -1268,6 +1277,8 @@ GC_INNER size_t GC_page_size = 0;
# endif
# elif defined(LINUX_STACKBOTTOM)
result = GC_linux_main_stack_base();
+# elif defined(QNX_STACKBOTTOM)
+ result = GC_qnx_main_stack_base();
# elif defined(FREEBSD_STACKBOTTOM)
result = GC_freebsd_main_stack_base();
# elif defined(HEURISTIC2)