diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-01-21 02:39:29 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-01-21 02:39:29 +0000 |
commit | 55497563115712ac1ec2c70713357a7489291037 (patch) | |
tree | 725de76ccf89cc82389dae206db3a77f8f86c9cf /libc/sysdeps/linux/i386 | |
parent | 84fd661079f473310ea6f05771d5deea6d3c8e9c (diff) |
Make sbrk common, add arm/brk.c, cleanup leftover damage
Diffstat (limited to 'libc/sysdeps/linux/i386')
-rw-r--r-- | libc/sysdeps/linux/i386/Makefile | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/i386/brk.c | 6 | ||||
-rw-r--r-- | libc/sysdeps/linux/i386/sbrk.c | 45 |
3 files changed, 3 insertions, 50 deletions
diff --git a/libc/sysdeps/linux/i386/Makefile b/libc/sysdeps/linux/i386/Makefile index 6178c662c..a54685726 100644 --- a/libc/sysdeps/linux/i386/Makefile +++ b/libc/sysdeps/linux/i386/Makefile @@ -42,7 +42,7 @@ ifeq ($(UNIFIED_SYSCALL),true) endif SOBJS=$(patsubst %.S,%.o, $(SSRC)) -CSRC=brk.c sbrk.c longjmp.c #jmp-unwind.c +CSRC=brk.c longjmp.c #jmp-unwind.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(SOBJS) $(COBJS) diff --git a/libc/sysdeps/linux/i386/brk.c b/libc/sysdeps/linux/i386/brk.c index 9ae565631..7575ebcf0 100644 --- a/libc/sysdeps/linux/i386/brk.c +++ b/libc/sysdeps/linux/i386/brk.c @@ -21,16 +21,14 @@ #include <unistd.h> #include <sys/syscall.h> -#ifndef __ptrvalue -#define __ptrvalue -#endif /* This must be initialized data because commons can't have aliases. */ void *___brk_addr = 0; + int brk (void *addr) { - void *newbrk, *scratch; + void *__unbounded newbrk, *__unbounded scratch; asm ("movl %%ebx, %1\n" /* Save %ebx in scratch register. */ "movl %3, %%ebx\n" /* Put ADDR in %ebx to be syscall arg. */ diff --git a/libc/sysdeps/linux/i386/sbrk.c b/libc/sysdeps/linux/i386/sbrk.c deleted file mode 100644 index a3b1c07b5..000000000 --- a/libc/sysdeps/linux/i386/sbrk.c +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright (C) 1991, 1995, 1996, 1997, 2000 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, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <unistd.h> -#include <errno.h> - -/* Defined in brk.c. */ -extern void *___brk_addr; -extern int brk (void *addr); - -/* Extend the process's data space by INCREMENT. - If INCREMENT is negative, shrink data space by - INCREMENT. - Return start of new space allocated, or -1 for errors. */ -void * sbrk (intptr_t increment) -{ - void *oldbrk; - - if (___brk_addr == NULL) - if (brk (0) < 0) /* Initialize the break. */ - return (void *) -1; - - if (increment == 0) - return ___brk_addr; - - oldbrk = ___brk_addr; - if (brk (oldbrk + increment) < 0) - return (void *) -1; - - return oldbrk; -} |