diff options
Diffstat (limited to 'misc')
-rw-r--r-- | misc/Makefile | 4 | ||||
-rw-r--r-- | misc/chflags.c | 4 | ||||
-rw-r--r-- | misc/fchflags.c | 4 | ||||
-rw-r--r-- | misc/sys/file.h | 1 | ||||
-rw-r--r-- | misc/tst-sbrk-pie.c | 3 | ||||
-rw-r--r-- | misc/tst-sbrk-static.c | 3 | ||||
-rw-r--r-- | misc/tst-sbrk.c | 49 |
7 files changed, 64 insertions, 4 deletions
diff --git a/misc/Makefile b/misc/Makefile index b039182fa0..09f619f123 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -98,6 +98,10 @@ CFLAGS-getusershell.c = -fexceptions CFLAGS-err.c = -fexceptions CFLAGS-tst-tsearch.c = $(stack-align-test-flags) +tests += tst-sbrk tst-sbrk-pie tst-sbrk-static +tests-pie += tst-sbrk-pie +tests-static += tst-sbrk-static + include ../Rules $(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib) diff --git a/misc/chflags.c b/misc/chflags.c index 011ca69e3f..581d9a00d0 100644 --- a/misc/chflags.c +++ b/misc/chflags.c @@ -21,12 +21,12 @@ /* Change the flags of FILE to FLAGS. */ -int chflags (const char *file, int flags) __THROW; +int chflags (const char *file, unsigned long int flags) __THROW; int chflags (file, flags) const char *file; - int flags; + unsigned long int flags; { if (file == NULL) { diff --git a/misc/fchflags.c b/misc/fchflags.c index c08ff51713..63c9c96e88 100644 --- a/misc/fchflags.c +++ b/misc/fchflags.c @@ -21,12 +21,12 @@ /* Change the flags of the file referenced by FD to FLAGS. */ -int fchflags (int fd, int flags) __THROW; +int fchflags (int fd, unsigned long int flags) __THROW; int fchflags (fd, flags) int fd; - int flags; + unsigned long int flags; { if (fd < 0) { diff --git a/misc/sys/file.h b/misc/sys/file.h index 3b00dc4b25..4c3e3c6698 100644 --- a/misc/sys/file.h +++ b/misc/sys/file.h @@ -40,6 +40,7 @@ __BEGIN_DECLS #define LOCK_SH 1 /* Shared lock. */ #define LOCK_EX 2 /* Exclusive lock. */ #define LOCK_UN 8 /* Unlock. */ +#define __LOCK_ATOMIC 16 /* Atomic update. */ /* Can be OR'd in to one of the above. */ #define LOCK_NB 4 /* Don't block when locking. */ diff --git a/misc/tst-sbrk-pie.c b/misc/tst-sbrk-pie.c new file mode 100644 index 0000000000..3896b9699e --- /dev/null +++ b/misc/tst-sbrk-pie.c @@ -0,0 +1,3 @@ +/* Test sbrk with -pie. */ + +#include <tst-sbrk.c> diff --git a/misc/tst-sbrk-static.c b/misc/tst-sbrk-static.c new file mode 100644 index 0000000000..fef52718cd --- /dev/null +++ b/misc/tst-sbrk-static.c @@ -0,0 +1,3 @@ +/* Test sbrk with -static. */ + +#include <tst-sbrk.c> diff --git a/misc/tst-sbrk.c b/misc/tst-sbrk.c new file mode 100644 index 0000000000..8db48ca2e9 --- /dev/null +++ b/misc/tst-sbrk.c @@ -0,0 +1,49 @@ +/* Test sbrk. + + Copyright (C) 2013-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <stdio.h> +#include <unistd.h> + +static int +do_test (void) +{ + /* Try to advance the program break by 1 MiB. */ + void *one_mib = sbrk (1 * 1024 * 1024); + if (one_mib == (void *) -1) + { + if (errno != ENOMEM) + printf ("sbrk (1 MiB) failed, and with wrong errno: %m\n"); + else + printf ("sbrk (1 MiB) failed\n"); + + return 1; + } + else + printf ("sbrk at %p\n", one_mib); + + return 0; +} + +/* TODO: fix rlimit bug. 64 MiB (test-skeleton.c's default) should be + enough. */ +#define TEST_DATA_LIMIT RLIM_INFINITY + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |