From 683158e0c42dc68e3c43a32b6e5d832c5280e94e Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 3 Dec 1995 10:00:22 +0000 Subject: * sysdeps/mach/hurd/brk.c (DATA_SIZE): Bump to 128MB. (_hurd_set_brk): Try to allocate more space when we run out. * sysdeps/generic/sbrk.c: If __curbrk is zero, call __brk with zero and examine it again. * sysdeps/unix/sysv/linux/i386/brk.c: New file. * sysdeps/unix/sysv/linux/i386/brk.S: File removed. * sysdeps/unix/sysv/linux/i386/sbrk.S: File removed. * sysdeps/unix/sysv/linux/dl-sysdep.c: New file. --- sysdeps/unix/sysv/linux/dl-sysdep.c | 44 +++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/dl-sysdep.c (limited to 'sysdeps/unix/sysv/linux/dl-sysdep.c') diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c new file mode 100644 index 0000000000..94e1879f2d --- /dev/null +++ b/sysdeps/unix/sysv/linux/dl-sysdep.c @@ -0,0 +1,44 @@ +/* Dynamic linker system dependencies for Linux. +Copyright (C) 1995 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 Library General Public License as +published by the Free Software Foundation; either version 2 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +/* Linux needs some special initialization, but otherwise uses + the generic dynamic linker system interface code. */ + +#include + +#define DL_SYSDEP_INIT frob_brk () + +static inline void +frob_brk (void) +{ + extern void _end; + __brk (0); /* Initialize the break. */ + if (__sbrk (0) == &_end) + { + /* The dynamic linker was run as a program, and so the initial break + starts just after our bss, at &_end. The malloc in dl-minimal.c + will consume the rest of this page, so tell the kernel to move the + break up that far. When the user program examines its break, it + will see this new value and not clobber our data. */ + size_t pg = __getpagesize (); + __sbrk (pg - ((&_end - (void *) 0) & pg)); + } +} + +#include -- cgit v1.2.3