See the comment in pe.sc to understand why ld -Ur won't work.
PR 46
binutils/
* testsuite/lib/binutils-common.exp (is_pecoff_format): Rewrite
with positive logic and add more target triples.
ld/
* scripttempl/pe.sc: Comment on ld -Ur fail. Wrap .gcc_exc comment.
* scripttempl/pep.sc: Likewise.
* testsuite/ld-cdtest/cdtest.exp (test2): xfail for pe.
+2019-11-21 Alan Modra <amodra@gmail.com>
+
+ * testsuite/lib/binutils-common.exp (is_pecoff_format): Rewrite
+ with positive logic and add more target triples.
+
2019-11-19 Alan Modra <amodra@gmail.com>
PR 24499
# True if the object format is known to be PE COFF.
#
proc is_pecoff_format {} {
- if { ![istarget *-*-mingw*]
- && ![istarget *-*-cygwin*]
- && ![istarget *-*-cegcc*]
- && ![istarget *-*-pe*] } {
- return 0
+ if { [istarget *-*-beospe*]
+ || [istarget *-*-cegcc*]
+ || [istarget *-*-cygwin*]
+ || [istarget *-*-interix*]
+ || [istarget *-*-mingw*]
+ || [istarget *-*-netbsdpe*]
+ || [istarget *-*-pe*]
+ || [istarget *-*-winnt*] } {
+ return 1
}
-
- return 1
+ return 0
}
proc is_som_format {} {
+2019-11-21 Alan Modra <amodra@gmail.com>
+
+ PR 46
+ * scripttempl/pe.sc: Comment on ld -Ur fail. Wrap .gcc_exc comment.
+ * scripttempl/pep.sc: Likewise.
+ * scripttempl/i386beos.sc: Wrap .gcc_exc comment.
+ * scripttempl/mcorepe.sc: Likewise.
+ * testsuite/ld-cdtest/cdtest.exp (test2): xfail for pe.
+
2019-11-12 Jim Wilson <jimw@sifive.com>
PR 25181
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
- /* ??? Why is .gcc_exc here? */
+ ${RELOCATING+/* ??? Why is .gcc_exc here? */}
${RELOCATING+ *(.gcc_exc)}
${RELOCATING+ etext = .;}
${RELOCATING+ __text_end__ = .;}
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
- /* ??? Why is .gcc_exc here? */
+ ${RELOCATING+/* ??? Why is .gcc_exc here? */}
${RELOCATING+ *(.gcc_exc)}
${RELOCATING+ etext = .;}
*(.gcc_except_table)
expectation that they will be overridden by the definitions
here. If we PROVIDE the symbols then they will not be
overridden and global constructors will not be run.
+ See PR 22762 for more details.
This does mean that it is not possible for a user to define
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
(The custom script can just be a copy of this script with the
PROVIDE() qualifiers added).
- See PR 22762 for more details. */
+ In particular this means that ld -Ur does not work, because
+ the proper __CTOR_LIST__ set by ld -Ur is overridden by a
+ bogus __CTOR_LIST__ set by the final link. See PR 46. */
___CTOR_LIST__ = .;
__CTOR_LIST__ = .;
LONG (-1);
LONG (0);
}
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
- /* ??? Why is .gcc_exc here? */
+ ${RELOCATING+/* ??? Why is .gcc_exc here? */}
${RELOCATING+ *(.gcc_exc)}
${RELOCATING+PROVIDE (etext = .);}
${RELOCATING+PROVIDE (_etext = .);}
expectation that they will be overridden by the definitions
here. If we PROVIDE the symbols then they will not be
overridden and global constructors will not be run.
+ See PR 22762 for more details.
This does mean that it is not possible for a user to define
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
(The custom script can just be a copy of this script with the
PROVIDE() qualifiers added).
- See PR 22762 for more details. */
+ In particular this means that ld -Ur does not work, because
+ the proper __CTOR_LIST__ set by ld -Ur is overridden by a
+ bogus __CTOR_LIST__ set by the final link. See PR 46. */
___CTOR_LIST__ = .;
__CTOR_LIST__ = .;
LONG (-1); LONG (-1);
LONG (0); LONG (0);
}
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
- /* ??? Why is .gcc_exc here? */
+ ${RELOCATING+/* ??? Why is .gcc_exc here? */}
${RELOCATING+ *(.gcc_exc)}
${RELOCATING+PROVIDE (etext = .);}
${RELOCATING+ KEEP (*(.gcc_except_table))}
}
}
+# PR 46
+if [is_pecoff_format] {
+ setup_xfail *-*-*
+}
+
if ![ld_relocate $ld tmpdir/cdtest.o {-Ur tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {
fail $test2
} else {