|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 2/3] libdruntime: Expose standard file descriptors symbols to the runtime
---
gluecode.c | 10 +++
...ndard-descriptors-visibility-problem.patch | 62 +++++++++++++++++++
2 files changed, 72 insertions(+)
create mode 100644
patches/0002-Solve-standard-descriptors-visibility-problem.patch
diff --git a/gluecode.c b/gluecode.c
index 952d14d..7bd174c 100644
--- a/gluecode.c
+++ b/gluecode.c
@@ -45,6 +45,16 @@
#include <math.h>
+FILE *_stdin;
+FILE *_stdout;
+FILE *_stderr;
+
+void initStdIO() {
+ _stdin = stdin;
+ _stdout = stdout;
+ _stderr = stderr;
+}
+
typedef __sigset_t sigset_t;
int sigfillset(sigset_t *set)
{
diff --git a/patches/0002-Solve-standard-descriptors-visibility-problem.patch
b/patches/0002-Solve-standard-descriptors-visibility-problem.patch
new file mode 100644
index 0000000..1b9722f
--- /dev/null
+++ b/patches/0002-Solve-standard-descriptors-visibility-problem.patch
@@ -0,0 +1,62 @@
+From 356f85a077adfcb4a1c66163b7d3a2c38a1667b3 Mon Sep 17 00:00:00 2001
+From: Marius-Cristian Baciu <2309bmcristi@xxxxxxxxx>
+Date: Sat, 18 Jul 2020 23:58:35 +0300
+Subject: [PATCH] Solve standard descriptors visibility problem
+
+initStdio() is a routine we have defined in D runtime lib's gluecode.c
+---
+ libphobos/libdruntime/core/stdc/stdio.d | 10 +++++++---
+ libphobos/libdruntime/rt/dmain2.d | 7 +++++++
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/libphobos/libdruntime/core/stdc/stdio.d
b/libphobos/libdruntime/core/stdc/stdio.d
+index 6ce3f9d13..8ed585bcb 100644
+--- a/libphobos/libdruntime/core/stdc/stdio.d
++++ b/libphobos/libdruntime/core/stdc/stdio.d
+@@ -907,11 +907,15 @@ else version (CRuntime_Glibc)
+ }
+
+ ///
+- extern shared FILE* stdin;
++ extern shared FILE* _stdin;
+ ///
+- extern shared FILE* stdout;
++ extern shared FILE* _stdout;
+ ///
+- extern shared FILE* stderr;
++ extern shared FILE* _stderr;
++
++ alias _stdin stdin;
++ alias _stdout stdout;
++ alias _stderr stderr;
+ }
+ else version (Darwin)
+ {
+diff --git a/libphobos/libdruntime/rt/dmain2.d
b/libphobos/libdruntime/rt/dmain2.d
+index f45565c97..7e42b63fb 100644
+--- a/libphobos/libdruntime/rt/dmain2.d
++++ b/libphobos/libdruntime/rt/dmain2.d
+@@ -156,6 +156,10 @@ extern (C) __gshared bool rt_trapExceptions = true;
+
+ alias void delegate(Throwable) ExceptionHandler;
+
++version (UNIKRAFT) {
++ extern (C) void initStdIO();
++}
++
+ /**
+ * Keep track of how often rt_init/rt_term were called.
+ */
+@@ -168,6 +172,9 @@ shared size_t _initCount;
+ */
+ extern (C) int rt_init()
+ {
++ version (UNIKRAFT) {
++ initStdIO();
++ }
+ /* @@BUG 11380 @@ Need to synchronize rt_init/rt_term calls for
+ version (Shared) druntime, because multiple C threads might
+ initialize different D libraries without knowing about the
+--
+2.17.1
+
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |