diff options
Diffstat (limited to 'meta/recipes-devtools/binutils/binutils/fix-pr16428.patch')
-rw-r--r-- | meta/recipes-devtools/binutils/binutils/fix-pr16428.patch | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/meta/recipes-devtools/binutils/binutils/fix-pr16428.patch b/meta/recipes-devtools/binutils/binutils/fix-pr16428.patch deleted file mode 100644 index 4584748bb2..0000000000 --- a/meta/recipes-devtools/binutils/binutils/fix-pr16428.patch +++ /dev/null @@ -1,123 +0,0 @@ -commit 4199e3b8669d0a36448687850374fdc2ad7240b6 -Author: Alan Modra <amodra@gmail.com> -Date: Wed Jan 15 21:50:55 2014 +1030 - - non-PIC references to __ehdr_start in pie and shared - - Rather than hacking every backend to not discard dynamic relocations - against an undefined hidden __ehdr_start, make it appear to be defined - early. We want __ehdr_start hidden before size_dynamic_sections so - that it isn't put in .dynsym, but we do need the dynamic relocations - for a PIE or shared library with a non-PIC reference. Defining it - early is wrong if we don't actually define the symbol later to its - proper value. (In some cases we want to leave the symbol undefined, - for example, when the ELF header isn't loaded, and we don't have this - infomation available in before_allocation.) - - ld/ - * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Define - __ehdr_start before size_dynamic_sections and restore afterwards. - ld/testsuite/ - * ld-elf/ehdr_start-shared.d: New. - * ld-elf/ehdr_start-userdef.d: xfail frv. - * ld-elf/ehdr_start-weak.d: Likewise. - * ld-elf/ehdr_start.d: Likewise. - -Upstream-Status: Backport - -diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em -index 9a2fe89..13f86f0 100644 ---- a/ld/emultempl/elf32.em -+++ b/ld/emultempl/elf32.em -@@ -1480,6 +1480,8 @@ gld${EMULATION_NAME}_before_allocation (void) - const char *rpath; - asection *sinterp; - bfd *abfd; -+ struct elf_link_hash_entry *ehdr_start = NULL; -+ struct bfd_link_hash_entry ehdr_start_save; - - if (is_elf_hash_table (link_info.hash)) - { -@@ -1504,6 +1506,16 @@ gld${EMULATION_NAME}_before_allocation (void) - _bfd_elf_link_hash_hide_symbol (&link_info, h, TRUE); - if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL) - h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN; -+ /* Don't leave the symbol undefined. Undefined hidden -+ symbols typically won't have dynamic relocations, but -+ we most likely will need dynamic relocations for -+ __ehdr_start if we are building a PIE or shared -+ library. */ -+ ehdr_start = h; -+ ehdr_start_save = h->root; -+ h->root.type = bfd_link_hash_defined; -+ h->root.u.def.section = bfd_abs_section_ptr; -+ h->root.u.def.value = 0; - } - } - -@@ -1620,6 +1632,14 @@ ${ELF_INTERPRETER_SET_DEFAULT} - - if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info)) - einfo ("%P%F: failed to set dynamic section sizes: %E\n"); -+ -+ if (ehdr_start != NULL) -+ { -+ /* If we twiddled __ehdr_start to defined earlier, put it back -+ as it was. */ -+ ehdr_start->root.type = ehdr_start_save.type; -+ ehdr_start->root.u = ehdr_start_save.u; -+ } - } - - EOF -diff --git a/ld/testsuite/ld-elf/ehdr_start-shared.d b/ld/testsuite/ld-elf/ehdr_start-shared.d -new file mode 100644 -index 0000000..c17516a ---- /dev/null -+++ b/ld/testsuite/ld-elf/ehdr_start-shared.d -@@ -0,0 +1,9 @@ -+#source: ehdr_start.s -+#ld: -e _start -shared -+#nm: -n -+#target: *-*-linux* *-*-gnu* *-*-nacl* -+#xfail: cris*-*-* frv-*-* -+ -+#... -+[0-9a-f]*000 [Adrt] __ehdr_start -+#pass -diff --git a/ld/testsuite/ld-elf/ehdr_start-userdef.d b/ld/testsuite/ld-elf/ehdr_start-userdef.d -index 2a88e98..b58ae3f 100644 ---- a/ld/testsuite/ld-elf/ehdr_start-userdef.d -+++ b/ld/testsuite/ld-elf/ehdr_start-userdef.d -@@ -2,6 +2,7 @@ - #ld: -e _start -T ehdr_start-userdef.t - #readelf: -Ws - #target: *-*-linux* *-*-gnu* *-*-nacl* -+#xfail: frv-*-* - - #... - Symbol table '\.symtab' contains [0-9]+ entries: -diff --git a/ld/testsuite/ld-elf/ehdr_start-weak.d b/ld/testsuite/ld-elf/ehdr_start-weak.d -index 8bd9035..24ae34c 100644 ---- a/ld/testsuite/ld-elf/ehdr_start-weak.d -+++ b/ld/testsuite/ld-elf/ehdr_start-weak.d -@@ -2,6 +2,7 @@ - #ld: -e _start -T ehdr_start-missing.t - #nm: -n - #target: *-*-linux* *-*-gnu* *-*-nacl* -+#xfail: frv-*-* - - #... - \s+[wU] __ehdr_start -diff --git a/ld/testsuite/ld-elf/ehdr_start.d b/ld/testsuite/ld-elf/ehdr_start.d -index 52e5b54..d538b66 100644 ---- a/ld/testsuite/ld-elf/ehdr_start.d -+++ b/ld/testsuite/ld-elf/ehdr_start.d -@@ -2,6 +2,7 @@ - #ld: -e _start - #nm: -n - #target: *-*-linux* *-*-gnu* *-*-nacl* -+#xfail: frv-*-* - - #... - [0-9a-f]*000 [Adrt] __ehdr_start |