From c41da74d1e501a63434f9db90f065dd563c4a609 Mon Sep 17 00:00:00 2001
From: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Date: Fri, 19 Jul 2019 10:49:55 +0900
Subject: [PATCH 1/2] Fix SIGILL on nightly rustc

---
 x11-dl/src/link.rs | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/x11-dl/src/link.rs b/x11-dl/src/link.rs
index bf1c89e..c3213e7 100644
--- a/x11-dl/src/link.rs
+++ b/x11-dl/src/link.rs
@@ -55,12 +55,11 @@ macro_rules! x11_link {
         unsafe {
           let libdir = $crate::link::config::libdir::$pkg_name;
           let lib = try!($crate::link::DynamicLibrary::open_multi(libdir, &[$($lib_name),*]));
-          let mut this: ::std::mem::ManuallyDrop<$struct_name>
-              = ::std::mem::uninitialized();
-          let this_ptr = &mut this as *mut _ as *mut $struct_name;
+          let mut this = ::std::mem::MaybeUninit::<$struct_name>::uninit();
+          let this_ptr = this.as_mut_ptr();
           ::std::ptr::write(&mut (*this_ptr).lib, lib);
           try!(Self::init(this_ptr));
-          Ok(::std::mem::ManuallyDrop::into_inner(this))
+          Ok(this.assume_init())
         }
       }
     }

From e9cc5bbf311c6dbd0295b18cd413efbfa0d9d695 Mon Sep 17 00:00:00 2001
From: Tatsuyuki Ishi <ishitatsuyuki@gmail.com>
Date: Mon, 22 Jul 2019 17:47:07 +0900
Subject: [PATCH 2/2] Swtich to maybe-uninit for backward compatibility

---
 x11-dl/Cargo.toml  | 1 +
 x11-dl/src/lib.rs  | 1 +
 x11-dl/src/link.rs | 2 +-
 3 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/x11-dl/Cargo.toml b/x11-dl/Cargo.toml
index fd11faa..550c7c1 100644
--- a/x11-dl/Cargo.toml
+++ b/x11-dl/Cargo.toml
@@ -15,6 +15,7 @@ workspace = ".."
 [dependencies]
 lazy_static = "1"
 libc = "0.2"
+maybe-uninit = "2.0.0"
 
 [build-dependencies]
 pkg-config = "0.3.8"
diff --git a/x11-dl/src/lib.rs b/x11-dl/src/lib.rs
index cef9ceb..65a89e6 100644
--- a/x11-dl/src/lib.rs
+++ b/x11-dl/src/lib.rs
@@ -10,6 +10,7 @@
 extern crate lazy_static;
 
 extern crate libc;
+extern crate maybe_uninit;
 
 #[macro_use]
 mod link;
diff --git a/x11-dl/src/link.rs b/x11-dl/src/link.rs
index c3213e7..6a8613c 100644
--- a/x11-dl/src/link.rs
+++ b/x11-dl/src/link.rs
@@ -55,7 +55,7 @@ macro_rules! x11_link {
         unsafe {
           let libdir = $crate::link::config::libdir::$pkg_name;
           let lib = try!($crate::link::DynamicLibrary::open_multi(libdir, &[$($lib_name),*]));
-          let mut this = ::std::mem::MaybeUninit::<$struct_name>::uninit();
+          let mut this = ::maybe_uninit::MaybeUninit::<$struct_name>::uninit();
           let this_ptr = this.as_mut_ptr();
           ::std::ptr::write(&mut (*this_ptr).lib, lib);
           try!(Self::init(this_ptr));