summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/sbrk.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sbrk.c')
-rw-r--r--mdk-stage1/dietlibc/lib/sbrk.c20
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")));