From 2a43e06f14cac633d87f5b213a6bacd16085967f Mon Sep 17 00:00:00 2001 From: Mahesh Bodapati Date: Wed, 17 Jun 2020 21:20:26 +0530 Subject: [PATCH 30/52] [Patch,MicroBlaze] : improper address mapping of PROVIDE directive symbols[DTOR_END] are causing runtime loops and we don't need to override PROVIDE symbols if symbols are defined in libraries and linker so I am disabling override for PROVIDE symbols. --- ld/ldlang.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ld/ldlang.c b/ld/ldlang.c index 9977195074..a2c44cf719 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -3657,10 +3657,16 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode) plugin_insert = NULL; #endif break; + /* This is from a --defsym on the command line. */ case lang_assignment_statement_enum: - if (s->assignment_statement.exp->type.node_class != etree_assert) - exp_fold_tree_no_dot (s->assignment_statement.exp); - break; + if (s->assignment_statement.exp->type.node_class != etree_assert) + { + if(!(s->assignment_statement.exp->assign.defsym) && (s->assignment_statement.exp->type.node_class == etree_provide)) + ; + else + exp_fold_tree_no_dot (s->assignment_statement.exp); + } + break; default: break; } -- 2.17.1