From c42d5c855044e64b3f5cf2ca402dd63cfffdf2e2 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sun, 9 Jan 2011 14:39:48 +0100 Subject: [PATCH] updated pagesize patch --- dietlibc-0.31-pagesize.patch | 41 +++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/dietlibc-0.31-pagesize.patch b/dietlibc-0.31-pagesize.patch index 7bba7fb..5091c59 100644 --- a/dietlibc-0.31-pagesize.patch +++ b/dietlibc-0.31-pagesize.patch @@ -1,7 +1,7 @@ -From abcbc90e768b431ce4e063de8a47ab236feeacf5 Mon Sep 17 00:00:00 2001 +From 537a231d89113170b9f761f8a490389f8b1c5cee Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sat, 19 Apr 2008 17:35:14 +0200 -Subject: [PATCH 11/18] Support for dynamic PAGE_SIZE +Subject: [PATCH 13/20] Support for dynamic PAGE_SIZE This patch adds support for dynamic PAGE_SIZE values. It is a little bit invasive in several aspects: @@ -66,7 +66,7 @@ auxilary elf-info table. Now, this is not available anymore and I use a type derived from __WORD_SIZE. --- alpha/start.S | 9 +++++ - arm/start.S | 13 +++++++- + arm/start.S | 27 ++++++++++++++- dietdirent.h | 6 +++- dietelfinfo.h | 20 +++++++++++ dietfeatures.h | 14 ++++++++ @@ -99,7 +99,7 @@ use a type derived from __WORD_SIZE. test/runtests.sh | 2 +- test/sysconf.c | 80 +++++++++++++++++++++++++++++++++++++++++++++ x86_64/start.S | 16 +++++++++ - 34 files changed, 403 insertions(+), 51 deletions(-) + 34 files changed, 417 insertions(+), 51 deletions(-) create mode 100644 dietelfinfo.h create mode 100644 dietpagesize.h create mode 100644 lib/__get_elf_aux_value.c @@ -126,10 +126,28 @@ index 7e7cf9b..b13c9c9 100644 /* in v0 ($0) is the ld.so _fini pointer */ mov $0, $19 /* mov v0(dynload) to a3 */ diff --git a/arm/start.S b/arm/start.S -index ccbac48..c9cee01 100644 +index d68d49d..765021b 100644 --- a/arm/start.S +++ b/arm/start.S -@@ -59,11 +59,22 @@ _start: +@@ -25,6 +25,17 @@ _start: + add a3, a2, a1, lsl #2 @ &argv[argc] + add a3, a3, #4 @ envp + str a3, [ip, #0] @ environ = envp ++ ++#ifdef WANT_ELFINFO ++ mov r6, a3 @ work on a copy of a3 so that common ++ @ 'main(argc, argv, envp)' function ++ @ stays valid ++1: ldr r5, [r6], #4 @ load *envp and increment it ++ cmp r5, #0 @ read value==0? ++ bne 1b ++ str r6, [ip, #4] @ __elfinfo = envp ++#endif ++ + bl main + + @ +@@ -59,11 +70,25 @@ _start: #ifdef __DYN_LIB ldr sl, .L4 1: add sl, pc, sl @@ -140,13 +158,16 @@ index ccbac48..c9cee01 100644 #endif +#ifdef WANT_ELFINFO -+1: ldr r5, [a3], #4 @ load *envp and increment it ++ mov r6, a3 @ work on a copy of a3 so that common ++ @ 'main(argc, argv, envp)' function ++ @ stays valid ++1: ldr r5, [r6], #4 @ load *envp and increment it + cmp r5, #0 @ read value==0? + bne 1b +#ifdef __DYN_LIB -+ str a3, [ip, sl] @ __elfinfo = envp ++ str r6, [ip, sl] @ __elfinfo = envp +#else -+ str a3, [ip, #4] @ __elfinfo = envp ++ str r6, [ip, #4] @ __elfinfo = envp +#endif +#endif + @@ -1050,5 +1071,5 @@ index adc461a..8b4f3c9 100644 #ifdef PROFILING pushq %rdi /* save reg args */ -- -1.7.3.3 +1.7.3.4