summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorJeff Olson <olson.jeffery@gmail.com>2012-06-29 07:06:32 -0700
committerBrian Anderson <banderson@mozilla.com>2012-06-29 15:41:56 -0700
commita3c933e0a0201c9f70ed961f1a8f8f7f9d08e50e (patch)
tree4e62ccf94d405fbb12849cfa34fa4f5ed72bd26f /src/libstd
parent087c4244b11f9aeb829640caa661b2dc2d976f0a (diff)
downloadrust-a3c933e0a0201c9f70ed961f1a8f8f7f9d08e50e.tar.gz
rust-a3c933e0a0201c9f70ed961f1a8f8f7f9d08e50e.zip
std: uv::ll fixes for 32bit linux
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/uv_ll.rs65
1 files changed, 54 insertions, 11 deletions
diff --git a/src/libstd/uv_ll.rs b/src/libstd/uv_ll.rs
index a58ffca1dd1..4c0f3835f32 100644
--- a/src/libstd/uv_ll.rs
+++ b/src/libstd/uv_ll.rs
@@ -225,12 +225,12 @@ type sockaddr_in = {
 
 // unix size: 28 .. FIXME #1645
 // stuck with 32 becuse of rust padding structs?
-#[cfg(unix)]
+#[cfg(target_arch="x86_64")]
 type sockaddr_in6 = {
     a0: *u8, a1: *u8,
     a2: *u8, a3: *u8
 };
-#[cfg(windows)]
+#[cfg(target_arch="x86")]
 type sockaddr_in6 = {
     a0: *u8, a1: *u8,
     a2: *u8, a3: *u8,
@@ -240,16 +240,59 @@ type sockaddr_in6 = {
 
 // unix size: 28 .. FIXME #1645
 // stuck with 32 becuse of rust padding structs?
-type addr_in = {
-    a0: *u8, a1: *u8,
-    a2: *u8, a3: *u8
-};
+type addr_in = addr_in_impl::addr_in;
+#[cfg(unix)]
+mod addr_in_impl {
+    #[cfg(target_arch="x86_64")]
+    type addr_in = {
+        a0: *u8, a1: *u8,
+        a2: *u8, a3: *u8
+    };
+    #[cfg(target_arch="x86")]
+    type addr_in = {
+        a0: *u8, a1: *u8,
+        a2: *u8, a3: *u8,
+        a4: *u8, a5: *u8,
+        a6: *u8, a7: *u8,
+    };
+}
+#[cfg(windows)]
+mod addr_in_impl {
+    type addr_in = {
+        a0: *u8, a1: *u8,
+        a2: *u8, a3: *u8
+    };
+}
 
-// unix size: 48
-type addrinfo = {
-    a00: *u8, a01: *u8, a02: *u8, a03: *u8,
-    a04: *u8, a05: *u8
-};
+// unix size: 48, 32bit: 32
+type addrinfo = addrinfo_impl::addrinfo;
+#[cfg(target_os="linux")]
+mod addrinfo_impl {
+    #[cfg(target_arch="x86_64")]
+    type addrinfo = {
+        a00: *u8, a01: *u8, a02: *u8, a03: *u8,
+        a04: *u8, a05: *u8
+    };
+    #[cfg(target_arch="x86")]
+    type addrinfo = {
+        a00: *u8, a01: *u8, a02: *u8, a03: *u8,
+        a04: *u8, a05: *u8, a06: *u8, a07: *u8
+    };
+}
+#[cfg(target_os="macos")]
+mod addrinfo_impl {
+    type addrinfo = {
+        a00: *u8, a01: *u8, a02: *u8, a03: *u8,
+        a04: *u8, a05: *u8
+    };
+}
+#[cfg(windows)]
+mod addrinfo_impl {
+    type addrinfo = {
+        a00: *u8, a01: *u8, a02: *u8, a03: *u8,
+        a04: *u8, a05: *u8
+    };
+}
 
 // unix size: 72
 type uv_getaddrinfo_t = {