From d5eb1e273273dbce5455be7c49484030fde89fe1 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Fri, 12 Apr 2019 09:30:02 -0600
Subject: [PATCH] Add dl-tls.h, required for shared libraries

---
 src/header/dl-tls/cbindgen.toml |  7 +++++++
 src/header/dl-tls/mod.rs        | 15 +++++++++++++++
 src/header/mod.rs               |  2 ++
 3 files changed, 24 insertions(+)
 create mode 100644 src/header/dl-tls/cbindgen.toml
 create mode 100644 src/header/dl-tls/mod.rs

diff --git a/src/header/dl-tls/cbindgen.toml b/src/header/dl-tls/cbindgen.toml
new file mode 100644
index 00000000..a29e5ec0
--- /dev/null
+++ b/src/header/dl-tls/cbindgen.toml
@@ -0,0 +1,7 @@
+sys_includes = []
+include_guard = "_DL_TLS_H"
+language = "C"
+style = "Tag"
+
+[enum]
+prefix_with_name = true
diff --git a/src/header/dl-tls/mod.rs b/src/header/dl-tls/mod.rs
new file mode 100644
index 00000000..f1a44b6f
--- /dev/null
+++ b/src/header/dl-tls/mod.rs
@@ -0,0 +1,15 @@
+//! dl-tls implementation for Redox
+
+use platform::types::*;
+
+#[repr(C)]
+pub struct dl_tls_index {
+    pub ti_module: u64,
+    pub ti_offset: u64,
+}
+
+#[no_mangle]
+pub extern "C" fn __tls_get_addr(ti: *mut dl_tls_index) -> *mut c_void {
+    //TODO: Figure out how to implement this
+    unimplemented!();
+}
diff --git a/src/header/mod.rs b/src/header/mod.rs
index 34a1eae1..316433d1 100644
--- a/src/header/mod.rs
+++ b/src/header/mod.rs
@@ -5,6 +5,8 @@ pub mod assert;
 pub mod ctype;
 pub mod dirent;
 pub mod dlfcn;
+#[path = "dl-tls/mod.rs"]
+pub mod dl_tls;
 pub mod errno;
 pub mod fcntl;
 pub mod float;
-- 
GitLab