summaryrefslogtreecommitdiffstats
path: root/toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch')
-rw-r--r--toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch68
1 files changed, 0 insertions, 68 deletions
diff --git a/toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch b/toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch
deleted file mode 100644
index 27aa5a59c..000000000
--- a/toolchain/uClibc/uClibc-0.9.29-load-got-pointer-at-the-beginning-of-init-and-fini.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From: Haavard Skinnemoen <hskinnemoen@atmel.com>
-Date: Wed, 19 Sep 2007 10:03:35 +0200
-Subject: [Avr-gnu-toolchain] [uClibc PATCH] Load GOT pointer at the
- beginning of .init and .fini
-
-I don't know why this seems to have worked before, but the .init and
-.fini sections typically consist of a bunch of mcalls using r6 as the
-base pointer. This can cause "interesting" behaviour when r6 hasn't
-been initialized to point to the GOT.
-
-Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
----
- libc/sysdeps/linux/avr32/crti.S | 15 ++++++++++++---
- libc/sysdeps/linux/avr32/crtn.S | 4 ++--
- 2 files changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/libc/sysdeps/linux/avr32/crti.S b/libc/sysdeps/linux/avr32/crti.S
-index 3e132d0..660f47c 100644
---- a/libc/sysdeps/linux/avr32/crti.S
-+++ b/libc/sysdeps/linux/avr32/crti.S
-@@ -4,14 +4,23 @@
- .global _init
- .type _init, @function
- _init:
-- /* Use a four-byte instruction to avoid NOPs */
-- stm --sp, r0-r7,lr
-+ stm --sp, r6, lr
-+ lddpc r6, 2f
-+1: rsub r6, pc
-+ rjmp 3f
- .align 2
-+2: .long 1b - _GLOBAL_OFFSET_TABLE_
-+3:
-
- .section .fini
- .align 2
- .global _fini
- .type _fini, @function
- _fini:
-- stm --sp, r0-r7,lr
-+ stm --sp, r6, lr
-+ lddpc r6, 2f
-+1: rsub r6, pc
-+ rjmp 3f
- .align 2
-+2: .long 1b - _GLOBAL_OFFSET_TABLE_
-+3:
-diff --git a/libc/sysdeps/linux/avr32/crtn.S b/libc/sysdeps/linux/avr32/crtn.S
-index 577adcc..f7d1040 100644
---- a/libc/sysdeps/linux/avr32/crtn.S
-+++ b/libc/sysdeps/linux/avr32/crtn.S
-@@ -3,12 +3,12 @@
- .align 2
- .global _init
- .type _init, @function
-- ldm sp++, r0-r7,pc
-+ ldm sp++, r6, pc
- .size _init, . - _init
-
- .section .fini
- .align 2
- .global _fini
- .type _fini, @function
-- ldm sp++, r0-r7,pc
-+ ldm sp++, r6, pc
- .size _fini, . - _fini
---
-1.5.3.1