diff options
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.patch | 68 |
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 |