diff --git a/libc-test/build.rs b/libc-test/build.rs
index 3bc7782..d7ee75b 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -9,18 +9,19 @@
     let windows = target.contains("windows");
     let mingw = target.contains("windows-gnu");
     let linux = target.contains("unknown-linux");
+    let android = target.contains("android");
     let mut cfg = ctest::TestGenerator::new();
 
     // Pull in extra goodies on linux/mingw
     if target.contains("unknown-linux-gnu") {
         cfg.define("_GNU_SOURCE", None);
-    } else if target.contains("windows") {
+    } else if windows {
         cfg.define("_WIN32_WINNT", Some("0x8000"));
     }
 
     // Android doesn't actually have in_port_t but it's much easier if we
     // provide one for us to test against
-    if target.contains("android") {
+    if android {
         cfg.define("in_port_t", Some("uint16_t"));
     }
 
@@ -39,13 +40,12 @@
     if target.contains("apple-darwin") {
         cfg.header("mach-o/dyld.h");
         cfg.header("mach/mach_time.h");
-    } else if target.contains("unknown-linux") ||
-              target.contains("android") {
+    } else if linux || android {
         cfg.header("linux/if_packet.h");
         cfg.header("net/ethernet.h");
     }
 
-    if target.contains("windows") {
+    if windows {
         cfg.header("winsock2.h"); // must be before windows.h
 
         cfg.header("direct.h");
@@ -67,6 +67,7 @@
         cfg.header("netinet/ip.h");
         cfg.header("netinet/tcp.h");
         cfg.header("pthread.h");
+        cfg.header("dlfcn.h");
         cfg.header("signal.h");
         cfg.header("string.h");
         cfg.header("sys/file.h");
@@ -81,13 +82,15 @@
         cfg.header("utime.h");
         cfg.header("pwd.h");
         cfg.header("grp.h");
+        cfg.header("malloc.h");
 
-        if target.contains("android") {
+        if android {
             cfg.header("arpa/inet.h");
         } else {
             cfg.header("glob.h");
             cfg.header("ifaddrs.h");
             cfg.header("sys/sysctl.h");
+            cfg.header("execinfo.h");
         }
 
     }
@@ -193,9 +196,13 @@
 
             "getrlimit" |                    // non-int in 1st arg
             "setrlimit" |                    // non-int in 1st arg
-            "gettimeofday" |                 // typed 2nd arg on linux
             "strerror_r" if linux => true,   // actually xpg-something-or-other
 
+            // typed 2nd arg on linux and android
+            "gettimeofday" if linux || android => true,
+
+            "dlerror" if android => true, // const-ness is added
+
             _ => false,
         }
     });
diff --git a/src/lib.rs b/src/lib.rs
index 8ee87ea..8d0211a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -150,6 +150,7 @@
                    base: c_int) -> c_ulong;
     pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
     pub fn malloc(size: size_t) -> *mut c_void;
+    pub fn memalign(align: size_t, size: size_t) -> *mut c_void;
     pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
     pub fn free(p: *mut c_void);
     pub fn exit(status: c_int) -> !;
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 2dabfd1..eee5289 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -297,8 +297,8 @@
 
     pub fn ftruncate(fd: c_int, length: off_t) -> c_int;
 
-    pub fn signal(signum: c_int,
-                  handler: sighandler_t) -> sighandler_t;
+    #[cfg_attr(target_os = "android", link_name = "bsd_signal")]
+    pub fn signal(signum: c_int, handler: sighandler_t) -> sighandler_t;
 
     pub fn getrlimit(resource: c_int, rlim: *mut rlimit) -> c_int;
     pub fn setrlimit(resource: c_int, rlim: *const rlimit) -> c_int;
@@ -310,70 +310,7 @@
                     -> *mut ::c_char;
 
     pub fn flock(fd: c_int, operation: c_int) -> c_int;
-}
 
-// TODO: get rid of this #[cfg(not(...))]
-#[cfg(not(target_os = "android"))]
-extern {
-    pub fn getifaddrs(ifap: *mut *mut ifaddrs) -> c_int;
-    pub fn freeifaddrs(ifa: *mut ifaddrs);
-    pub fn glob(pattern: *const c_char,
-                flags: c_int,
-                errfunc: ::dox::Option<extern "C" fn(epath: *const c_char,
-                                                     errno: c_int) -> c_int>,
-                pglob: *mut glob_t) -> c_int;
-    pub fn globfree(pglob: *mut glob_t);
-
-    pub fn posix_madvise(addr: *mut ::c_void, len: size_t, advice: c_int)
-                         -> c_int;
-
-    pub fn shm_unlink(name: *const c_char) -> c_int;
-
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
-               link_name = "seekdir$INODE64")]
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "seekdir$INODE64$UNIX2003")]
-    pub fn seekdir(dirp: *mut ::DIR, loc: c_long);
-
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
-               link_name = "telldir$INODE64")]
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "telldir$INODE64$UNIX2003")]
-    pub fn telldir(dirp: *mut ::DIR) -> c_long;
-
-    pub fn getsid(pid: pid_t) -> pid_t;
-    pub fn madvise(addr: *mut ::c_void, len: size_t, advice: c_int)
-                   -> c_int;
-    pub fn ioctl(fd: c_int, request: c_ulong, ...) -> c_int;
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "putenv$UNIX2003")]
-    pub fn putenv(string: *mut c_char) -> c_int;
-    pub fn readlink(path: *const c_char,
-                    buf: *mut c_char,
-                    bufsz: size_t)
-                    -> ssize_t;
-
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "msync$UNIX2003")]
-    pub fn msync(addr: *mut ::c_void, len: size_t, flags: c_int) -> c_int;
-    pub fn sysconf(name: c_int) -> c_long;
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "usleep$UNIX2003")]
-    pub fn usleep(secs: c_uint) -> c_int;
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "recvfrom$UNIX2003")]
-    pub fn recvfrom(socket: c_int, buf: *mut ::c_void, len: size_t,
-                    flags: c_int, addr: *mut sockaddr,
-                    addrlen: *mut socklen_t) -> ssize_t;
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "send$UNIX2003")]
-    pub fn send(socket: c_int, buf: *const ::c_void, len: size_t,
-                flags: c_int) -> ssize_t;
-    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
-               link_name = "recv$UNIX2003")]
-    pub fn recv(socket: c_int, buf: *mut ::c_void, len: size_t,
-                flags: c_int) -> ssize_t;
-    pub fn mkfifo(path: *const c_char, mode: mode_t) -> c_int;
     pub fn gettimeofday(tp: *mut ::timeval,
                         tz: *mut ::c_void) -> ::c_int;
 
@@ -443,19 +380,94 @@
                      oldact: *mut sigaction) -> ::c_int;
     pub fn sigaltstack(ss: *const sigaltstack,
                        oss: *mut sigaltstack) -> ::c_int;
-    pub fn sigemptyset(set: *mut sigset_t) -> ::c_int;
-
-    pub fn getpwuid_r(uid: ::uid_t,
-                      pwd: *mut passwd,
-                      buf: *mut ::c_char,
-                      buflen: ::size_t,
-                      result: *mut *mut passwd) -> ::c_int;
 
     pub fn utimes(filename: *const ::c_char,
                   times: *const ::timeval) -> ::c_int;
     pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;
     pub fn setgroups(ngroups: ::size_t,
                      ptr: *const ::gid_t) -> ::c_int;
+    pub fn dlopen(filename: *const ::c_char,
+                  flag: ::c_int) -> *mut ::c_void;
+    pub fn dlerror() -> *mut ::c_char;
+    pub fn dlsym(handle: *mut ::c_void,
+                 symbol: *const ::c_char) -> *mut ::c_void;
+    pub fn dlclose(handle: *mut ::c_void) -> ::c_int;
+}
+
+// TODO: get rid of this #[cfg(not(...))]
+#[cfg(not(target_os = "android"))]
+extern {
+    pub fn getifaddrs(ifap: *mut *mut ifaddrs) -> c_int;
+    pub fn freeifaddrs(ifa: *mut ifaddrs);
+    pub fn glob(pattern: *const c_char,
+                flags: c_int,
+                errfunc: ::dox::Option<extern "C" fn(epath: *const c_char,
+                                                     errno: c_int) -> c_int>,
+                pglob: *mut glob_t) -> c_int;
+    pub fn globfree(pglob: *mut glob_t);
+
+    pub fn posix_madvise(addr: *mut ::c_void, len: size_t, advice: c_int)
+                         -> c_int;
+
+    pub fn shm_unlink(name: *const c_char) -> c_int;
+
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
+               link_name = "seekdir$INODE64")]
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "seekdir$INODE64$UNIX2003")]
+    pub fn seekdir(dirp: *mut ::DIR, loc: c_long);
+
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86_64"),
+               link_name = "telldir$INODE64")]
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "telldir$INODE64$UNIX2003")]
+    pub fn telldir(dirp: *mut ::DIR) -> c_long;
+
+    pub fn getsid(pid: pid_t) -> pid_t;
+    pub fn madvise(addr: *mut ::c_void, len: size_t, advice: c_int)
+                   -> c_int;
+    pub fn ioctl(fd: c_int, request: c_ulong, ...) -> c_int;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "putenv$UNIX2003")]
+    pub fn putenv(string: *mut c_char) -> c_int;
+    pub fn readlink(path: *const c_char,
+                    buf: *mut c_char,
+                    bufsz: size_t)
+                    -> ssize_t;
+
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "msync$UNIX2003")]
+    pub fn msync(addr: *mut ::c_void, len: size_t, flags: c_int) -> c_int;
+    pub fn sysconf(name: c_int) -> c_long;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "usleep$UNIX2003")]
+    pub fn usleep(secs: c_uint) -> c_int;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "recvfrom$UNIX2003")]
+    pub fn recvfrom(socket: c_int, buf: *mut ::c_void, len: size_t,
+                    flags: c_int, addr: *mut sockaddr,
+                    addrlen: *mut socklen_t) -> ssize_t;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "send$UNIX2003")]
+    pub fn send(socket: c_int, buf: *const ::c_void, len: size_t,
+                flags: c_int) -> ssize_t;
+    #[cfg_attr(all(target_os = "macos", target_arch = "x86"),
+               link_name = "recv$UNIX2003")]
+    pub fn recv(socket: c_int, buf: *mut ::c_void, len: size_t,
+                flags: c_int) -> ssize_t;
+    pub fn mkfifo(path: *const c_char, mode: mode_t) -> c_int;
+
+    pub fn getpwuid_r(uid: ::uid_t,
+                      pwd: *mut passwd,
+                      buf: *mut ::c_char,
+                      buflen: ::size_t,
+                      result: *mut *mut passwd) -> ::c_int;
+    pub fn backtrace(buf: *mut *mut ::c_void,
+                     sz: ::c_int) -> ::c_int;
+    pub fn posix_memalign(memptr: *mut *mut ::c_void,
+                          align: ::size_t,
+                          size: ::size_t) -> ::c_int;
+    pub fn sigemptyset(set: *mut sigset_t) -> ::c_int;
 }
 
 cfg_if! {
diff --git a/src/unix/notbsd/android/b32.rs b/src/unix/notbsd/android/b32.rs
new file mode 100644
index 0000000..2f3de7b
--- /dev/null
+++ b/src/unix/notbsd/android/b32.rs
@@ -0,0 +1,8 @@
+s! {
+    pub struct sigaction {
+        pub sa_sigaction: ::sighandler_t,
+        pub sa_mask: ::sigset_t,
+        pub sa_flags: ::c_ulong,
+        pub sa_restorer: Option<extern fn()>,
+    }
+}
diff --git a/src/unix/notbsd/android/b64.rs b/src/unix/notbsd/android/b64.rs
new file mode 100644
index 0000000..45dd78c
--- /dev/null
+++ b/src/unix/notbsd/android/b64.rs
@@ -0,0 +1,8 @@
+s! {
+    pub struct sigaction {
+        pub sa_flags: ::c_uint,
+        pub sa_sigaction: sighandler_t,
+        pub sa_mask: sigset_t,
+        _restorer: *mut ::c_void,
+    }
+}
diff --git a/src/unix/notbsd/android.rs b/src/unix/notbsd/android/mod.rs
similarity index 93%
rename from src/unix/notbsd/android.rs
rename to src/unix/notbsd/android/mod.rs
index 6f4833c..78e9898 100644
--- a/src/unix/notbsd/android.rs
+++ b/src/unix/notbsd/android/mod.rs
@@ -91,27 +91,6 @@
         pub si_errno: ::c_int,
         pub si_code: ::c_int,
         pub _pad: [::c_int; 29],
-        _align: [u64; 0],
-    }
-}
-
-#[cfg(target_pointer_width = "32")]
-s!{
-    pub struct sigaction {
-        pub sa_sigaction: sighandler_t,
-        pub sa_flags: libc::c_ulong,
-        _restorer: *mut libc::c_void,
-        pub sa_mask: sigset_t,
-    }
-}
-
-#[cfg(target_pointer_width = "64")]
-s!{
-    pub struct sigaction {
-        pub sa_flags: libc::c_uint,
-        pub sa_sigaction: sighandler_t,
-        pub sa_mask: sigset_t,
-        _restorer: *mut libc::c_void,
     }
 }
 
@@ -230,3 +209,17 @@
     pub fn recv(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
                 flags: ::c_uint) -> ::ssize_t;
 }
+
+cfg_if! {
+    if #[cfg(target_pointer_width = "32")] {
+        mod b32;
+        pub use self::b32::*;
+    } else if #[cfg(target_pointer_width = "64")] {
+        mod b64;
+        pub use self::b64::*;
+    } else {
+        // ...
+    }
+}
+
+
