diff options
author | Zack Weinberg <zackw@panix.com> | 2017-05-11 20:28:07 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2017-05-20 08:09:10 -0400 |
commit | 42a844c6a213f9219a4baa013c7305679d5dcaaa (patch) | |
tree | 95270b369244dec03eeb01a75e9018e97f5c6694 /sysdeps/nacl/brk.c | |
parent | a429d2ff07fcb6620269fc0ee46ea5066451fdff (diff) | |
download | glibc-42a844c6a213f9219a4baa013c7305679d5dcaaa.tar.gz |
Remove the bulk of the NaCl port.
The NaCl port has not been actively maintained since before the 2.25
release. The complementary GCC back-end was never contributed to GCC,
and we are given to understand that the current NaCl SDK has switched
to Clang and therefore cannot be used to build glibc anymore, so we
doubt that the port remains useful.
This commit simply removes the sysdeps/arm/nacl and sysdeps/nacl
directories and the abi-tags entry.
Remove the NaCl port.
* abi-tags: Remove .*-.*-nacl.* entry.
* sysdeps/arm/nacl: Remove directory and contents.
* sysdeps/nacl: Likewise.
Diffstat (limited to 'sysdeps/nacl/brk.c')
-rw-r--r-- | sysdeps/nacl/brk.c | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/sysdeps/nacl/brk.c b/sysdeps/nacl/brk.c deleted file mode 100644 index c96c66f3b8..0000000000 --- a/sysdeps/nacl/brk.c +++ /dev/null @@ -1,92 +0,0 @@ -/* brk -- Adjust the "break" at the end of initial data. NaCl version. - Copyright (C) 2015-2017 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 <stdint.h> -#include <sys/mman.h> -#include <sys/param.h> -#include <unistd.h> - -/* sbrk.c expects this. */ -void *__curbrk; - -static uintptr_t -page_above (void *addr) -{ - return ALIGN_UP ((uintptr_t) addr, EXEC_PAGESIZE); -} - -/* Set the end of the process's data space to ADDR. - Return 0 if successful, -1 if not. */ -int -__brk (void *addr) -{ - /* The NaCl sysbrk call is deprecated, so we do not use it here. Other - libc code expects that __sbrk can be used at least a little bit, so - rather than a plain stub we have a minimal __brk implementation here. - It just uses mmap/munmap to grow or shrink the break area, punting as - soon as mmap fails to use the same contiguous area. */ - - if (__glibc_unlikely (__curbrk == NULL)) - { - /* This is the first call. We must initialize the record - of the current position. It starts out at the end of the - main program's data segment. */ - - /* XXX dynamic case??? */ - extern char _end[]; - __curbrk = _end; - } - - if (__glibc_unlikely (addr == NULL)) - /* This is a call just to ensure that __curbrk is set up. */ - return 0; - - uintptr_t old_limit = page_above (__curbrk); - uintptr_t new_limit = page_above (addr); - - if (old_limit > new_limit) - { - /* We're shrinking the old heap enough to release some pages. */ - if (__munmap ((void *) new_limit, old_limit - new_limit) != 0) - return -1; - } - else if (old_limit < new_limit) - { - /* We're growing the old heap enough to need some more pages. - See if they are available. */ - void *new_space = __mmap ((void *) old_limit, new_limit - old_limit, - PROT_READ | PROT_WRITE, MAP_ANON, -1, 0); - if (new_space != (void *) old_limit) - { - if (new_space != MAP_FAILED) - { - /* mmap chose some different place for the pages - because the contiguous area was not available. - Oh well. We can't use that. */ - __munmap (new_space, new_limit - old_limit); - __set_errno (ENOMEM); - } - return -1; - } - } - - __curbrk = addr; - return 0; -} -weak_alias (__brk, brk) |