summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/i386
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-01-21 02:39:29 +0000
committerEric Andersen <andersen@codepoet.org>2002-01-21 02:39:29 +0000
commit55497563115712ac1ec2c70713357a7489291037 (patch)
tree725de76ccf89cc82389dae206db3a77f8f86c9cf /libc/sysdeps/linux/i386
parent84fd661079f473310ea6f05771d5deea6d3c8e9c (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/Makefile2
-rw-r--r--libc/sysdeps/linux/i386/brk.c6
-rw-r--r--libc/sysdeps/linux/i386/sbrk.c45
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;
-}