Commit graph

2442 commits

Author SHA1 Message Date
Tobias Bucher 8b1d846444 Theoretically test statics
There are none of them in `libc` except for `__progname` on Android, but
that one cannot be tested because it's not present in any header files.
2018-09-05 09:48:49 +02:00
bors 267375e999 Auto merge of #1072 - sfackler:more-elf, r=alexcrichton
Add some more elf types
2018-09-03 17:14:12 +00:00
Steven Fackler 063c721c96 Add some more elf types 2018-09-02 22:08:44 -07:00
bors b9a0e23e84 Auto merge of #1071 - Lytigas:master, r=alexcrichton
Add mallopt

First time contributor. Thanks for the excellent contributing guide.
I'm not quite sure I put the method in the right place. [The GNULib docs](https://www.gnu.org/software/gnulib/manual/html_node/mallopt.html) say its not on Android 7.1, but there are [mentions of it in some android headers](https://android.googlesource.com/platform/bionic/+/master/libc/include/malloc.h).
2018-09-02 15:50:32 +00:00
Josh Hejna a9590b5590 Move mallopt to exclude from musl 2018-09-02 01:56:00 -07:00
Josh Hejna 7192ecb2cd Add mallopt 2018-09-02 01:06:55 -07:00
bors ac7201bc02 Auto merge of #1070 - redox-os:relibc, r=alexcrichton
Add additional Redox OS functions

This adds `chown`, `fchown`, `setenv`, and `unsetenv` to the `redox` module, and reorders the functions by name
2018-08-24 21:38:38 +00:00
Jeremy Soller 919dd7c8fc Fix style 2018-08-24 14:49:54 -06:00
Jeremy Soller 15085c211e
Merge branch 'master' into relibc 2018-08-24 13:55:14 -06:00
Alex Crichton 1844a772b6
Merge pull request #1069 from cramertj/undo-fuchsia-repr-fix
Undo division of in6_addr on Fuchsia
2018-08-24 11:45:32 -07:00
Taylor Cramer a0a4f8cc04 Undo division of in6_addr on Fuchsia 2018-08-24 11:41:02 -07:00
bors f8e6b002b2 Auto merge of #1068 - gnzlbg:patch-1, r=alexcrichton
sparc64 tests are passing again

Closes #1064 .
2018-08-24 16:19:56 +00:00
gnzlbg 381d3e908b
sparc64 tests are passing again
Closes #1064 .
2018-08-24 13:29:30 +02:00
bors 0f2d4f993c Auto merge of #1067 - cramertj:fuchsia-fixes, r=alexcrichton
Fix and cleanup Fuchsia

Remove false support for power and mips.
Fix aarch64 definitions of nlink_t and blksize_t.

r? @alexcrichton

cc @sulanov
2018-08-22 23:14:52 +00:00
Taylor Cramer 2f593709ca Fix and cleanup Fuchsia
Remove false support for power and mips.
Fix aarch64 definitions of nlink_t and blksize_t.
2018-08-22 12:32:10 -07:00
Jeremy Soller 660a4feb87 Add chown/fchown 2018-08-19 11:37:40 -06:00
bors 7a9f031d87 Auto merge of #1065 - eeyun:eeyun/solaris_termios, r=alexcrichton
Add TIOCGWINSZ accessor to solaris module

Signed-off-by: Ian Henry <ihenry@chef.io>

I recently noticed downstream that these request values were unavailable and needed for things like [the pb crate](https://github.com/a8m/pb). To get access to the request value I ran the following simple C code:
```
#include <sys/ioctl.h>
#include <stdio.h>
#include <sys/termios.h>

int main(int argc, char **argv) {
    printf("Code: 0x%04lx\n", TIOCGWINSZ);
    printf("Code: 0x%04lx\n", TIOCSWINSZ);
    return 0;
}
```
To then validate the change I ran the following simple rust:
```
extern crate libc;

use libc::{ioctl, winsize, STDOUT_FILENO, TIOCGWINSZ};

fn main() {
    let mut wsize = winsize {
        ws_row: 0,
        ws_col: 0,
        ws_xpixel: 0,
        ws_ypixel: 0,
    };
    unsafe {
        ioctl(STDOUT_FILENO, TIOCGWINSZ, &mut wsize);
    }
    println!("Sizes: {{ rows: {}, cols: {}, xpixel: {}, ypixel: {} }}",
             wsize.ws_row,
             wsize.ws_col,
             wsize.ws_xpixel,
             wsize.ws_ypixel);
}
```
2018-08-16 17:31:15 +00:00
Ian Henry a3c843bc7f Add TIOCGWINSZ accessor to solaris module
Signed-off-by: Ian Henry <ihenry@chef.io>
2018-08-16 12:59:52 -04:00
Alex Crichton b9c613f3dc Fix allow_failures section 2018-08-16 09:33:02 -07:00
Alex Crichton f31d0f7795 Allow sparc64 to fail on CI 2018-08-15 17:14:37 -07:00
Alex Crichton b6dacea4e7
Merge pull request #1063 from jakllsch/netbsd-time50-fixes
NetBSD: correct link_name of some time-related functions
2018-08-15 17:13:34 -07:00
Alex Crichton 78f1dd2ce3
Merge pull request #1052 from debris/exchangedata
Add exchangedata for osx
2018-08-15 17:13:04 -07:00
Jonathan A. Kollasch c0fab38966 NetBSD: correct link_name of some time-related functions
The futimes(), lutimes(), mq_timedreceive(), and mq_timedsend()
functions were linking against legacy library symbols that need 32-bit
time_t in structures, resulting in an ABI mismatch with 64-bit time_t.
2018-08-15 12:20:57 -05:00
debris 504f286960 Push function into lower modules 2018-08-15 10:49:08 +02:00
debris 56dde29582 Two variants of exchangedata 2018-08-14 16:20:15 +02:00
debris 195d63a017 Merge branch 'master' of github.com:rust-lang/libc into exchangedata 2018-08-14 16:13:13 +02:00
debris c67224eb82 Use u32 for exchangedata 2018-08-14 12:55:55 +02:00
bors 2c063c243f Auto merge of #1062 - alexcrichton:update-ctest, r=alexcrichton
Update ctest to 0.2
2018-08-13 23:59:19 +00:00
Alex Crichton e72f187cd4 Update ctest to 0.2 2018-08-13 16:58:13 -07:00
Jeremy Soller 81e250f471 Add setenv/unsetenv 2018-08-11 16:44:04 -06:00
bors 9be97c961f Auto merge of #1050 - MegatonHammer:master, r=alexcrichton
Add libc definitions for Megaton-Hammer, a Switch Homebrew toolchain

I'm working on a pure-rust toolchain to write homebrew for the Nintendo Switch called [Megaton-Hammer](http://github.com/megatonhammer/megaton-hammer). I'm hoping to get those definitions upstreamed to simplify my life :).

This toolchain does not depend on a C compiler or a libc (it reimplements everything in rust) - but given many crates in the Rust ecosystem rely on the libc crate for the definition of various common types, this is what I came up with.

I was wondering what a good target triple would be ? I currently gate the implementation behind `target_os = "switch"`, but if this goes upstream I figure that might cause trouble for people using the Nintendo SDK (they might already be using `target_os = "switch"` for some things). Would it be better to go with `target_env = "megatonhammer"`?
2018-08-07 14:01:55 +00:00
bors fc8db9602e Auto merge of #1058 - jakllsch:netbsd-283b36ac-fab0-4e5f-b620-4325f8cedc80, r=alexcrichton
NetBSD: add basic types for aarch64
2018-08-07 05:58:59 +00:00
Jonathan A. Kollasch 0478c6059b NetBSD: add basic types for aarch64 2018-08-06 14:59:35 -05:00
bors 27114a96af Auto merge of #1057 - jakllsch:netbsd-5298beff-d081-4368-ab2a-0987e84c6d02, r=alexcrichton
NetBSD: correct c_char signedness on arm and powerpc
2018-08-06 19:10:09 +00:00
Jonathan A. Kollasch 80f2d7d999 fix syntax error in previous 2018-08-06 13:41:30 -05:00
Jonathan A. Kollasch 174888fd56 NetBSD: correct c_char signedness on arm and powerpc 2018-08-06 12:15:45 -05:00
bors 6bdbf5dc93 Auto merge of #1056 - faern:release, r=alexcrichton
Bump version to 0.2.43

Would be nice to have the new align feature from #1044 available for general use. But mostly I want this released since I have problems using the align feature for a PR on libstd, and I suspect it's somehow because I try to use an unpublished libc (https://github.com/rust-lang/rust/pull/52872).
2018-08-06 01:25:19 +00:00
Linus Färnstrand add1a320b4 Bump version to 0.2.43 2018-08-06 01:35:46 +02:00
roblabla 8ff70b6a4c Add some switch-related libc typedefs 2018-08-02 13:46:37 +02:00
bors 8318a3ec1c Auto merge of #1053 - papertigers:illumos-epoll-event, r=alexcrichton
illumos epoll_event struct should be packed

While attempting to run `cargo test` within the mio crate on illumos I noticed a number of the tests fail. Digging into the various epoll calls I discovered that the epoll_event struct was misaligned due to extra padding. The fix is to pack the epoll_event struct with the same compiler setting that the linux variant is using.

A simple rust example that demonstrates the issue:
```rust
extern crate libc;
use libc::epoll_event;
use std::mem;
fn main() {
    println!("{}", mem::size_of::<u64>());
    println!("{}", mem::size_of::<epoll_event>());
}
```
Running the above code on Linux results in:
```
8
12
```
while on illumos it currently results in:
```
8
16
```
Looking at the `test_close_on_drop` test from mio I traced the `epoll_ctl`
calls and saw the following:
```
[root@rustdev ~/src/mio]# dtrace -wn 'pid$target::epoll_ctl:entry {this->ev = arg3; printf("%d\n", arg2); print((struct epoll_event *)this->ev); stop()}' -c "/root/src/mio/target/debug/deps/test-109e1422fb40f621 test_close_on_drop"
dtrace: description 'pid$target::epoll_ctl:entry ' matched 1 probe
dtrace: allowing destructive actions
running 1 test
CPU     ID                    FUNCTION:NAME
  6  92874                  epoll_ctl:entry 4
struct epoll_event * 0xfffffc7fee7feda8
test test_close_on_drop::test_close_on_drop ... test test_close_on_drop::test_close_on_drop has been running for over 60 seconds
  6  92874                  epoll_ctl:entry 6
struct epoll_event * 0xfffffc7fee7fee18
^[[A  6  92874                  epoll_ctl:entry 7
struct epoll_event * 0xfffffc7fee7fee18
```
I dumped each of the epoll_event's with mdb:
```
[root@rustdev ~/src/mio]# mdb -Fp 219856
Loading modules: [ libumem.so.1 libc.so.1 ]
> 0xfffffc7fee7feda8::print
mdb: no symbol information for 0xfffffc7fee7feda8: no symbol corresponds to address
> 0xfffffc7fee7feda8::print struct epoll_event
{
    events = 0x80000001
    data = {
        ptr = 0xfffffffffffffc7f
        fd = 0xfffffc7f
        u32 = 0xfffffc7f
        u64 = 0xfffffffffffffc7f
    }
}
>
[root@rustdev ~/src/mio]# prun 219856
[root@rustdev ~/src/mio]# mdb -Fp 219856
Loading modules: [ libumem.so.1 libc.so.1 ]
> 0xfffffc7fee7fee18::print struct epoll_event
{
    events = 0x80000001
    data = {
        ptr = 0
        fd = 0
        u32 = 0
        u64 = 0
    }
}
>
[root@rustdev ~/src/mio]# prun 219856
[root@rustdev ~/src/mio]# mdb -Fp 2198
Loading modules: [ libumem.so.1 libc.so.1 ]
> 0xfffffc7fee7fee18::print struct epoll_event
{
    events = 0x80000004
    data = {
        ptr = 0x100000000
        fd = 0
        u32 = 0
        u64 = 0x100000000
    }
}
```
The output from the last two `epoll_event`'s represent `Token(0)` the Client and `Token(1)` from the mio test. The first one however is from `AWAKEN` which is defined as `usize::MAX`.  This value should be 18446744073709551615. However if we convert the hex value we see something else:
```
> 0xfffffffffffffc7f=E
                18446744073709550719
```
Because of the extra 4 bytes of padding currently present in the illumos `epoll_event` definition the low order bits are picking up some junk from other memory.

All of the poll-related mio tests pass with this change. Two other tests are still failing, which appears to be caused by an OS bug, not a problem with mio or libc.
2018-08-01 19:39:05 +00:00
bors 7b45a7cb55 Auto merge of #1048 - ColinFinck:master, r=alexcrichton
Add libc definitions for HermitCore (https://hermitcore.org)

HermitCore is based on lwIP, newlib, and pthread-embedded.
Some definitions are similar to other targets using newlib, however some are different enough to justify an own "hermit" port and not base on the existing "newlib" port.
2018-08-01 18:03:13 +00:00
Alex Crichton 5090477133
Merge pull request #1051 from alexcrichton/fix-apple
Fix OSX builders on CI
2018-08-01 12:22:33 -05:00
Alex Crichton e6bc44b540 Allow iOS to fail 2018-08-01 07:51:33 -07:00
Alex Crichton 83f78df8c6 Fix OSX builders on CI
Looks like Travis has moved on from our old images, so we're forced to
update.
2018-08-01 07:49:22 -07:00
debris e131bd1b1d change exchangedata param c_long -> c_ulong 2018-08-01 13:29:15 +02:00
debris 3d5c968b20 exchangedata is osx only, fix the function signature 2018-08-01 10:36:41 +02:00
debris 019f429ee9 Merge branch 'master' into exchangedata 2018-08-01 10:29:38 +02:00
Mike Zeller d213c3acbd illumos epoll_event struct should be packed 2018-08-01 00:30:45 -04:00
Colin Finck 086bdf9643 Fix coding style. 2018-07-31 09:43:23 +02:00
bors e1ebfafc2f Auto merge of #1049 - alecmocatta:master, r=alexcrichton
Add the FIO* consts for *-apple-*

Previously only FIONREAD was implemented for x86_64 apple. The constant is shared between i{3..6}86 and x86_64, so I've moved it into the shared module rather than the 64 bit specific one.

They're defined like this in sys/filio.h:
```
#define FIOCLEX	     _IO('f', 1)        /* set close on exec on fd */
#define FIONCLEX     _IO('f', 2)        /* remove close on exec */
#define FIONREAD    _IOR('f', 127, int) /* get # bytes to read */
#define FIONBIO     _IOW('f', 126, int) /* set/clear non-blocking i/o */
#define FIOASYNC    _IOW('f', 125, int) /* set/clear async i/o */
#define FIOSETOWN   _IOW('f', 124, int) /* set owner */
#define FIOGETOWN   _IOR('f', 123, int) /* get owner */
#define FIODTYPE    _IOR('f', 122, int) /* get d_type */
```

Rather than decipher the C macros I got the values like so:
```
#include <stdio.h>
#include <sys/ioctl.h>

int main() {
	printf("pub const FIOCLEX: ::c_uint = 0x%x;\n", FIOCLEX);
	printf("pub const FIONCLEX: ::c_uint = 0x%x;\n", FIONCLEX);
	printf("pub const FIONREAD: ::c_ulong = 0x%lx;\n", FIONREAD);
	printf("pub const FIONBIO: ::c_ulong = 0x%lx;\n", FIONBIO);
	printf("pub const FIOASYNC: ::c_ulong = 0x%lx;\n", FIOASYNC);
	printf("pub const FIOSETOWN: ::c_ulong = 0x%lx;\n", FIOSETOWN);
	printf("pub const FIOGETOWN: ::c_ulong = 0x%lx;\n", FIOGETOWN);
	printf("pub const FIODTYPE: ::c_ulong = 0x%lx;\n", FIODTYPE);
}

$ gcc --target=i686-apple-darwin -o x x.c && file ./x && ./x
./x: Mach-O executable i386
pub const FIOCLEX: ::c_uint = 0x20006601;
pub const FIONCLEX: ::c_uint = 0x20006602;
pub const FIONREAD: ::c_ulong = 0x4004667f;
pub const FIONBIO: ::c_ulong = 0x8004667e;
pub const FIOASYNC: ::c_ulong = 0x8004667d;
pub const FIOSETOWN: ::c_ulong = 0x8004667c;
pub const FIOGETOWN: ::c_ulong = 0x4004667b;
pub const FIODTYPE: ::c_ulong = 0x4004667a;

$ gcc --target=x86_64-apple-darwin -o x x.c && file ./x && ./x
./x: Mach-O 64-bit executable x86_64
pub const FIOCLEX: ::c_uint = 0x20006601;
pub const FIONCLEX: ::c_uint = 0x20006602;
pub const FIONREAD: ::c_ulong = 0x4004667f;
pub const FIONBIO: ::c_ulong = 0x8004667e;
pub const FIOASYNC: ::c_ulong = 0x8004667d;
pub const FIOSETOWN: ::c_ulong = 0x8004667c;
pub const FIOGETOWN: ::c_ulong = 0x4004667b;
pub const FIODTYPE: ::c_ulong = 0x4004667a;
```

I'm just awaiting an XCode install to check they're the same on arm.
2018-07-31 01:25:13 +00:00