svn commit: r211583 - stable/8/contrib/binutils/ld/emultempl
Andriy Gapon
avg at FreeBSD.org
Sat Aug 21 18:38:57 UTC 2010
Author: avg
Date: Sat Aug 21 18:38:56 2010
New Revision: 211583
URL: http://svn.freebsd.org/changeset/base/211583
Log:
MFC r210245: binutils/ld: fix incorrect placement of __start_SECNAME in
some cases
Modified:
stable/8/contrib/binutils/ld/emultempl/elf32.em
Directory Properties:
stable/8/contrib/binutils/ (props changed)
Modified: stable/8/contrib/binutils/ld/emultempl/elf32.em
==============================================================================
--- stable/8/contrib/binutils/ld/emultempl/elf32.em Sat Aug 21 18:26:55 2010 (r211582)
+++ stable/8/contrib/binutils/ld/emultempl/elf32.em Sat Aug 21 18:38:56 2010 (r211583)
@@ -1314,26 +1314,6 @@ gld${EMULATION_NAME}_place_orphan (lang_
lang_list_init (stat_ptr);
}
- if (config.build_constructors)
- {
- /* If the name of the section is representable in C, then create
- symbols to mark the start and the end of the section. */
- for (ps = secname; *ps != '\0'; ps++)
- if (! ISALNUM (*ps) && *ps != '_')
- break;
- if (*ps == '\0')
- {
- char *symname;
- etree_type *e_align;
-
- symname = (char *) xmalloc (ps - secname + sizeof "__start_");
- sprintf (symname, "__start_%s", secname);
- e_align = exp_unop (ALIGN_K,
- exp_intop ((bfd_vma) 1 << s->alignment_power));
- lang_add_assignment (exp_assop ('=', symname, e_align));
- }
- }
-
address = NULL;
if (link_info.relocatable || (s->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
address = exp_intop ((bfd_vma) 0);
@@ -1354,6 +1334,26 @@ gld${EMULATION_NAME}_place_orphan (lang_
(etree_type *) NULL,
load_base);
+ if (config.build_constructors)
+ {
+ /* If the name of the section is representable in C, then create
+ symbols to mark the start and the end of the section. */
+ for (ps = secname; *ps != '\0'; ps++)
+ if (! ISALNUM (*ps) && *ps != '_')
+ break;
+ if (*ps == '\0')
+ {
+ char *symname;
+ etree_type *e_align;
+
+ symname = (char *) xmalloc (ps - secname + sizeof "__start_");
+ sprintf (symname, "__start_%s", secname);
+ lang_add_assignment (exp_assop ('=', symname,
+ exp_unop (ABSOLUTE,
+ exp_nameop (NAME, "."))));
+ }
+ }
+
lang_add_section (&os->children, s, os, file);
lang_leave_output_section_statement
More information about the svn-src-all
mailing list