diff options
Diffstat (limited to 'meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0027-Patch-Microblaze-PR22471-undefined-reference-to-link.patch')
-rw-r--r-- | meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0027-Patch-Microblaze-PR22471-undefined-reference-to-link.patch | 363 |
1 files changed, 0 insertions, 363 deletions
diff --git a/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0027-Patch-Microblaze-PR22471-undefined-reference-to-link.patch b/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0027-Patch-Microblaze-PR22471-undefined-reference-to-link.patch deleted file mode 100644 index 002b3794..00000000 --- a/meta-xilinx-bsp/recipes-microblaze/binutils/binutils-2.31/0027-Patch-Microblaze-PR22471-undefined-reference-to-link.patch +++ /dev/null @@ -1,363 +0,0 @@ -From 059fc6d823a81602d951275ba99430550b84f8a3 Mon Sep 17 00:00:00 2001 -From: Mahesh Bodapati <mbodapat@xilinx.com> -Date: Tue, 26 Feb 2019 17:46:36 +0530 -Subject: [PATCH 27/31] [Patch,Microblaze] : "PR22471, undefined reference to - linker-defined symbols" is causing runtime loops.reverting for now. - -Signed-off-by: Mahesh Bodapati <mbodapat@xilinx.com> -Signed-off-by: Nagaraju Mekala <nagaraju.mekala@xilinx.com> ---- - bfd/elflink.c | 7 +--- - bfd/linker.c | 9 +---- - ld/ldexp.c | 64 +++++++++++++++++++------------ - ld/ldlang.c | 6 +-- - ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d | 4 +- - ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got | 2 +- - ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d | 4 +- - ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got | 2 +- - ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d | 4 +- - ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got | 2 +- - 10 files changed, 53 insertions(+), 51 deletions(-) - -diff --git a/bfd/elflink.c b/bfd/elflink.c -index b316149..3860891 100644 ---- a/bfd/elflink.c -+++ b/bfd/elflink.c -@@ -1496,15 +1496,10 @@ _bfd_elf_merge_symbol (bfd *abfd, - treated as strong if the new symbol is from a dynamic library. - This reflects the way glibc's ld.so works. - -- Also allow a weak symbol to override a linker script symbol -- defined by an early pass over the script. This is done so the -- linker knows the symbol is defined in an object file, for the -- DEFINED script function. -- - Do this before setting *type_change_ok or *size_change_ok so that - we warn properly when dynamic library symbols are overridden. */ - -- if (newdef && !newdyn && (olddyn || h->root.ldscript_def)) -+ if (newdef && !newdyn && olddyn) - newweak = FALSE; - if (olddef && newdyn) - oldweak = FALSE; -diff --git a/bfd/linker.c b/bfd/linker.c -index 6b4c8e5..8d51c2a 100644 ---- a/bfd/linker.c -+++ b/bfd/linker.c -@@ -1449,14 +1449,9 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, - do - { - enum link_action action; -- int prev; - -- prev = h->type; -- /* Treat symbols defined by early linker script pass as undefined. */ -- if (h->ldscript_def) -- prev = bfd_link_hash_undefined; - cycle = FALSE; -- action = link_action[(int) row][prev]; -+ action = link_action[(int) row][(int) h->type]; - switch (action) - { - case FAIL: -@@ -1500,7 +1495,6 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, - h->u.def.section = section; - h->u.def.value = value; - h->linker_def = 0; -- h->ldscript_def = 0; - - /* If we have been asked to, we act like collect2 and - identify all functions that might be global -@@ -1600,7 +1594,6 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, - else - h->u.c.p->section = section; - h->linker_def = 0; -- h->ldscript_def = 0; - break; - - case REF: -diff --git a/ld/ldexp.c b/ld/ldexp.c -index 6fa251e..d46a06f 100644 ---- a/ld/ldexp.c -+++ b/ld/ldexp.c -@@ -60,12 +60,15 @@ struct definedness_hash_entry - section statement, the section we'd like it relative to. */ - asection *final_sec; - -- /* Low bits of iteration count. Symbols with matching iteration have -- been defined in this pass over the script. */ -- unsigned int iteration : 8; -- - /* Symbol was defined by an object file. */ - unsigned int by_object : 1; -+ -+ /* Symbols was defined by a script. */ -+ unsigned int by_script : 1; -+ -+ /* Low bit of iteration count. Symbols with matching iteration have -+ been defined in this pass over the script. */ -+ unsigned int iteration : 1; - }; - - static struct bfd_hash_table definedness_table; -@@ -283,6 +286,7 @@ definedness_newfunc (struct bfd_hash_entry *entry, - einfo (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name); - - ret->by_object = 0; -+ ret->by_script = 0; - ret->iteration = 0; - return &ret->root; - } -@@ -316,7 +320,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h) - /* If the symbol was already defined, and not by a script, then it - must be defined by an object file or by the linker target code. */ - ret = TRUE; -- if (!h->ldscript_def -+ if (!defentry->by_script - && (h->type == bfd_link_hash_defined - || h->type == bfd_link_hash_defweak - || h->type == bfd_link_hash_common)) -@@ -328,6 +332,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h) - ret = FALSE; - } - -+ defentry->by_script = 1; - defentry->iteration = lang_statement_iteration; - defentry->final_sec = bfd_abs_section_ptr; - if (expld.phase == lang_final_phase_enum -@@ -681,9 +686,6 @@ fold_trinary (etree_type *tree) - static void - fold_name (etree_type *tree) - { -- struct bfd_link_hash_entry *h; -- struct definedness_hash_entry *def; -- - memset (&expld.result, 0, sizeof (expld.result)); - - switch (tree->type.node_code) -@@ -701,18 +703,23 @@ fold_name (etree_type *tree) - break; - - case DEFINED: -- h = bfd_wrapped_link_hash_lookup (link_info.output_bfd, -- &link_info, -- tree->name.name, -- FALSE, FALSE, TRUE); -- new_number (h != NULL -- && (h->type == bfd_link_hash_defined -- || h->type == bfd_link_hash_defweak -- || h->type == bfd_link_hash_common) -- && (!h->ldscript_def -- || (def = symbol_defined (tree->name.name)) == NULL -- || def->by_object -- || def->iteration == (lang_statement_iteration & 255))); -+ if (expld.phase != lang_first_phase_enum) -+ { -+ struct bfd_link_hash_entry *h; -+ struct definedness_hash_entry *def; -+ -+ h = bfd_wrapped_link_hash_lookup (link_info.output_bfd, -+ &link_info, -+ tree->name.name, -+ FALSE, FALSE, TRUE); -+ new_number (h != NULL -+ && (h->type == bfd_link_hash_defined -+ || h->type == bfd_link_hash_defweak -+ || h->type == bfd_link_hash_common) -+ && ((def = symbol_defined (tree->name.name)) == NULL -+ || def->by_object -+ || def->iteration == (lang_statement_iteration & 1))); -+ } - break; - - case NAME: -@@ -721,6 +728,9 @@ fold_name (etree_type *tree) - { - /* Self-assignment is only allowed for absolute symbols - defined in a linker script. */ -+ struct bfd_link_hash_entry *h; -+ struct definedness_hash_entry *def; -+ - h = bfd_wrapped_link_hash_lookup (link_info.output_bfd, - &link_info, - tree->name.name, -@@ -730,13 +740,17 @@ fold_name (etree_type *tree) - || h->type == bfd_link_hash_defweak) - && h->u.def.section == bfd_abs_section_ptr - && (def = symbol_defined (tree->name.name)) != NULL -- && def->iteration == (lang_statement_iteration & 255))) -+ && def->iteration == (lang_statement_iteration & 1))) - expld.assign_name = NULL; - } -- if (tree->name.name[0] == '.' && tree->name.name[1] == 0) -+ if (expld.phase == lang_first_phase_enum) -+ ; -+ else if (tree->name.name[0] == '.' && tree->name.name[1] == 0) - new_rel_from_abs (expld.dot); - else - { -+ struct bfd_link_hash_entry *h; -+ - h = bfd_wrapped_link_hash_lookup (link_info.output_bfd, - &link_info, - tree->name.name, -@@ -751,7 +765,7 @@ fold_name (etree_type *tree) - output_section = h->u.def.section->output_section; - if (output_section == NULL) - { -- if (expld.phase <= lang_mark_phase_enum) -+ if (expld.phase == lang_mark_phase_enum) - new_rel (h->u.def.value, h->u.def.section); - else - einfo (_("%X%P:%pS: unresolvable symbol `%s'" -@@ -943,12 +957,12 @@ is_sym_value (const etree_type *tree, bfd_vma val) - return (tree->type.node_class == etree_name - && tree->type.node_code == NAME - && (def = symbol_defined (tree->name.name)) != NULL -- && def->iteration == (lang_statement_iteration & 255) -+ && def->by_script -+ && def->iteration == (lang_statement_iteration & 1) - && (h = bfd_wrapped_link_hash_lookup (link_info.output_bfd, - &link_info, - tree->name.name, - FALSE, FALSE, TRUE)) != NULL -- && h->ldscript_def - && h->type == bfd_link_hash_defined - && h->u.def.section == bfd_abs_section_ptr - && h->u.def.value == val); -diff --git a/ld/ldlang.c b/ld/ldlang.c -index 350baf2..7e12480 100644 ---- a/ld/ldlang.c -+++ b/ld/ldlang.c -@@ -3360,7 +3360,9 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode) - #endif - break; - case lang_assignment_statement_enum: -- if (s->assignment_statement.exp->type.node_class != etree_assert) -+ if (s->assignment_statement.exp->type.node_class != etree_assert -+ && s->assignment_statement.exp->assign.defsym) -+ /* This is from a --defsym on the command line. */ - exp_fold_tree_no_dot (s->assignment_statement.exp); - break; - default: -@@ -7176,7 +7178,6 @@ lang_process (void) - - /* Create a bfd for each input file. */ - current_target = default_target; -- lang_statement_iteration++; - open_input_bfds (statement_list.head, OPEN_BFD_NORMAL); - - #ifdef ENABLE_PLUGINS -@@ -7232,7 +7233,6 @@ lang_process (void) - - /* Rescan archives in case new undefined symbols have appeared. */ - files = file_chain; -- lang_statement_iteration++; - open_input_bfds (statement_list.head, OPEN_BFD_RESCAN); - lang_list_remove_tail (&file_chain, &files); - while (files.head != NULL) -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d -index 17e42d0..011df6c 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.d -@@ -5,7 +5,7 @@ Disassembly of section .text: - - .* <__start>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7b80 addiu gp,gp,31616 -+ .*: 279c7c30 addiu gp,gp,31792 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -@@ -55,7 +55,7 @@ Disassembly of section .text: - - .* <other>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7ac0 addiu gp,gp,31424 -+ .*: 279c7b70 addiu gp,gp,31600 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got -index 508fed2..1dbcab4 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-1.got -@@ -13,6 +13,6 @@ OFFSET TYPE VALUE - - - Contents of section .got: -- 10000020 00000000 80000000 0040053c 00000000 .........@...... -+ 10000020 00000000 80000000 0040048c 00000000 .........@...... - 10000030 00000000 00000000 00000000 00000000 ................ - 10000040 00000000 00000001 00000000 ............ -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d -index 17e42d0..011df6c 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.d -@@ -5,7 +5,7 @@ Disassembly of section .text: - - .* <__start>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7b80 addiu gp,gp,31616 -+ .*: 279c7c30 addiu gp,gp,31792 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -@@ -55,7 +55,7 @@ Disassembly of section .text: - - .* <other>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7ac0 addiu gp,gp,31424 -+ .*: 279c7b70 addiu gp,gp,31600 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got -index 4a97099..fb50635 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-2.got -@@ -13,6 +13,6 @@ OFFSET TYPE VALUE - - - Contents of section .got: -- 10000020 00000000 80000000 0040053c 00000000 .* -+ 10000020 00000000 80000000 0040048c 00000000 .* - 10000030 00000000 00000000 00000000 00000000 .* - 10000040 00000000 00000001 00000000 .* -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d -index fb3750a..3828aca 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.d -@@ -5,7 +5,7 @@ Disassembly of section .text: - - .* <other>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7b80 addiu gp,gp,31616 -+ .*: 279c7c30 addiu gp,gp,31792 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -@@ -51,7 +51,7 @@ Disassembly of section .text: - - .* <__start>: - .*: 3c1c0fc0 lui gp,0xfc0 -- .*: 279c7ad0 addiu gp,gp,31440 -+ .*: 279c7b80 addiu gp,gp,31616 - .*: 0399e021 addu gp,gp,t9 - .*: 27bdfff0 addiu sp,sp,-16 - .*: afbe0008 sw s8,8\(sp\) -diff --git a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got -index d96375c..4a97099 100644 ---- a/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got -+++ b/ld/testsuite/ld-mips-elf/tlsdyn-o32-3.got -@@ -13,6 +13,6 @@ OFFSET TYPE VALUE - - - Contents of section .got: -- 10000020 00000000 80000000 004005ec 00000000 .* -+ 10000020 00000000 80000000 0040053c 00000000 .* - 10000030 00000000 00000000 00000000 00000000 .* - 10000040 00000000 00000001 00000000 .* --- -2.7.4 - |