diff options
| author | Jeff Olson <olson.jeffery@gmail.com> | 2012-06-29 07:06:32 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-06-29 15:41:56 -0700 |
| commit | a3c933e0a0201c9f70ed961f1a8f8f7f9d08e50e (patch) | |
| tree | 4e62ccf94d405fbb12849cfa34fa4f5ed72bd26f /src/libstd | |
| parent | 087c4244b11f9aeb829640caa661b2dc2d976f0a (diff) | |
| download | rust-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.rs | 65 |
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 = { |
