diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sbrk.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/sbrk.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/sbrk.c b/mdk-stage1/dietlibc/lib/sbrk.c new file mode 100644 index 000000000..945ad5a16 --- /dev/null +++ b/mdk-stage1/dietlibc/lib/sbrk.c @@ -0,0 +1,20 @@ +#include <unistd.h> + +extern int __brk(void *end_data_segment); + +extern void* __curbrk; + +void* __sbrk(ptrdiff_t increment) { + void* oldbrk; + if (__curbrk==0) + if (__brk(0) < 0) + return (void*)-1; + if (increment==0) + return __curbrk; + oldbrk=__curbrk; + if (__brk(oldbrk+increment)<0) + return (void*)-1; + return oldbrk; +} + +void* sbrk (ptrdiff_t increment) __attribute__((weak,alias("__sbrk"))); |