From: Matthew Dillon Date: Sun, 3 Apr 2011 07:23:42 +0000 (-0700) Subject: binutils221: Fix missing section start/end label generation X-Git-Tag: v2.10.0~108 X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/b133d3fde203bbf8e2c359d2be9f09c20ce732b5 binutils221: Fix missing section start/end label generation * The code to generate section __start_set and __end_set symbols was using exp_provide() instead of exp_assign(), and exp_provide() appears to silently discard the symbol due to being assigned to '.' (the origin). This resulted in the symbols not being generated in the output file. * Change to using exp_assign() and pray. --- diff --git a/contrib/binutils-2.21/ld/ldlang.c b/contrib/binutils-2.21/ld/ldlang.c index 7256495..4d5d199 100644 --- a/contrib/binutils-2.21/ld/ldlang.c +++ b/contrib/binutils-2.21/ld/ldlang.c @@ -1757,10 +1757,9 @@ lang_insert_orphan (asection *s, e_align = exp_unop (ALIGN_K, exp_intop ((bfd_vma) 1 << s->alignment_power)); lang_add_assignment (exp_assign (".", e_align)); - lang_add_assignment (exp_provide (symname, + lang_add_assignment (exp_assign (symname, exp_unop (ABSOLUTE, - exp_nameop (NAME, ".")), - FALSE)); + exp_nameop (NAME, ".")))); } } @@ -1790,9 +1789,8 @@ lang_insert_orphan (asection *s, symname = (char *) xmalloc (ps - secname + sizeof "__stop_" + 1); symname[0] = bfd_get_symbol_leading_char (link_info.output_bfd); sprintf (symname + (symname[0] != 0), "__stop_%s", secname); - lang_add_assignment (exp_provide (symname, - exp_nameop (NAME, "."), - FALSE)); + lang_add_assignment (exp_assign (symname, + exp_nameop (NAME, "."))); } /* Restore the global list pointer. */