diff options
author | Timo Teräs <timo.teras@iki.fi> | 2011-12-09 09:28:48 +0200 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2011-12-09 09:28:48 +0200 |
commit | bfc02e3184e593b9cdea76f80faaa3a9e4d12bb2 (patch) | |
tree | 4484cb54f3bef04bf0755b85101326711e069d21 /main/binutils/binutils-ld-fix-static-linking.patch | |
parent | 84009e4c79006b51709b9c3a92a2e58d2121af7d (diff) | |
download | aports-bfc02e3184e593b9cdea76f80faaa3a9e4d12bb2.tar.bz2 aports-bfc02e3184e593b9cdea76f80faaa3a9e4d12bb2.tar.xz |
main/binutils: fix static linking on PIE
The linker script mistakenly assumess crtbegin, or crtbegin? for
the gcc crt glue filename. On PIE system it is called crtbeginTS
which would not match the filter. Fixes #855.
Diffstat (limited to 'main/binutils/binutils-ld-fix-static-linking.patch')
-rw-r--r-- | main/binutils/binutils-ld-fix-static-linking.patch | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/main/binutils/binutils-ld-fix-static-linking.patch b/main/binutils/binutils-ld-fix-static-linking.patch new file mode 100644 index 0000000000..b192936af7 --- /dev/null +++ b/main/binutils/binutils-ld-fix-static-linking.patch @@ -0,0 +1,37 @@ +Index: binutils-2.22/ld/scripttempl/elf.sc +=================================================================== +--- binutils-2.22.orig/ld/scripttempl/elf.sc 2011-04-11 18:38:12.000000000 +0300 ++++ binutils-2.22/ld/scripttempl/elf.sc 2011-12-09 09:11:24.000000000 +0200 +@@ -225,8 +225,8 @@ + if test "${ENABLE_INITFINI_ARRAY}" = "yes"; then + SORT_INIT_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))" + SORT_FINI_ARRAY="KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))" +- CTORS_IN_INIT_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .ctors))" +- DTORS_IN_FINI_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors))" ++ CTORS_IN_INIT_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .ctors))" ++ DTORS_IN_FINI_ARRAY="KEEP (*(EXCLUDE_FILE (*crtbegin*.o *crtend*.o $OTHER_EXCLUDE_FILES) .dtors))" + else + SORT_INIT_ARRAY="KEEP (*(SORT(.init_array.*)))" + SORT_FINI_ARRAY="KEEP (*(SORT(.fini_array.*)))" +@@ -262,8 +262,7 @@ + doesn't matter which directory crtbegin.o + is in. */ + +- KEEP (*crtbegin.o(.ctors)) +- KEEP (*crtbegin?.o(.ctors)) ++ KEEP (*crtbegin*.o(.ctors)) + + /* We don't want to include the .ctor section from + the crtend.o file until after the sorted ctors. +@@ -278,9 +277,8 @@ + DTOR=".dtors ${CONSTRUCTING-0} : + { + ${CONSTRUCTING+${DTOR_START}} +- KEEP (*crtbegin.o(.dtors)) +- KEEP (*crtbegin?.o(.dtors)) +- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o $OTHER_EXCLUDE_FILES) .dtors)) ++ KEEP (*crtbegin*.o(.dtors)) ++ KEEP (*(EXCLUDE_FILE (*crtend*.o $OTHER_EXCLUDE_FILES) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + ${CONSTRUCTING+${DTOR_END}} |