PR46, cygwin: FAIL: cdtest with -Ur
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.
This commit is contained in:
parent
b13e475ed2
commit
5b537ffc55
|
@ -1,3 +1,8 @@
|
||||||
|
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>
|
2019-11-19 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
PR 24499
|
PR 24499
|
||||||
|
|
|
@ -95,14 +95,17 @@ proc is_aout_format {} {
|
||||||
# True if the object format is known to be PE COFF.
|
# True if the object format is known to be PE COFF.
|
||||||
#
|
#
|
||||||
proc is_pecoff_format {} {
|
proc is_pecoff_format {} {
|
||||||
if { ![istarget *-*-mingw*]
|
if { [istarget *-*-beospe*]
|
||||||
&& ![istarget *-*-cygwin*]
|
|| [istarget *-*-cegcc*]
|
||||||
&& ![istarget *-*-cegcc*]
|
|| [istarget *-*-cygwin*]
|
||||||
&& ![istarget *-*-pe*] } {
|
|| [istarget *-*-interix*]
|
||||||
return 0
|
|| [istarget *-*-mingw*]
|
||||||
|
|| [istarget *-*-netbsdpe*]
|
||||||
|
|| [istarget *-*-pe*]
|
||||||
|
|| [istarget *-*-winnt*] } {
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
return 0
|
||||||
return 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
proc is_som_format {} {
|
proc is_som_format {} {
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
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>
|
2019-11-12 Jim Wilson <jimw@sifive.com>
|
||||||
|
|
||||||
PR 25181
|
PR 25181
|
||||||
|
|
|
@ -69,7 +69,7 @@ SECTIONS
|
||||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||||
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
||||||
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
|
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
${RELOCATING+/* ??? Why is .gcc_exc here? */}
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
${RELOCATING+ etext = .;}
|
${RELOCATING+ etext = .;}
|
||||||
${RELOCATING+ __text_end__ = .;}
|
${RELOCATING+ __text_end__ = .;}
|
||||||
|
|
|
@ -76,7 +76,7 @@ SECTIONS
|
||||||
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
${CONSTRUCTING+ ___DTOR_LIST__ = .; __DTOR_LIST__ = . ;
|
||||||
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
LONG (-1); *(.dtors); *(.dtor); LONG (0); }
|
||||||
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
|
${RELOCATING+ KEEP (*(SORT_NONE(.fini)))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
${RELOCATING+/* ??? Why is .gcc_exc here? */}
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
${RELOCATING+ etext = .;}
|
${RELOCATING+ etext = .;}
|
||||||
*(.gcc_except_table)
|
*(.gcc_except_table)
|
||||||
|
|
|
@ -104,6 +104,7 @@ SECTIONS
|
||||||
expectation that they will be overridden by the definitions
|
expectation that they will be overridden by the definitions
|
||||||
here. If we PROVIDE the symbols then they will not be
|
here. If we PROVIDE the symbols then they will not be
|
||||||
overridden and global constructors will not be run.
|
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
|
This does mean that it is not possible for a user to define
|
||||||
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
|
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
|
||||||
|
@ -113,7 +114,9 @@ SECTIONS
|
||||||
(The custom script can just be a copy of this script with the
|
(The custom script can just be a copy of this script with the
|
||||||
PROVIDE() qualifiers added).
|
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__ = .;
|
||||||
__CTOR_LIST__ = .;
|
__CTOR_LIST__ = .;
|
||||||
LONG (-1);
|
LONG (-1);
|
||||||
|
@ -134,7 +137,7 @@ SECTIONS
|
||||||
LONG (0);
|
LONG (0);
|
||||||
}
|
}
|
||||||
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
|
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
${RELOCATING+/* ??? Why is .gcc_exc here? */}
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
${RELOCATING+PROVIDE (etext = .);}
|
${RELOCATING+PROVIDE (etext = .);}
|
||||||
${RELOCATING+PROVIDE (_etext = .);}
|
${RELOCATING+PROVIDE (_etext = .);}
|
||||||
|
|
|
@ -105,6 +105,7 @@ SECTIONS
|
||||||
expectation that they will be overridden by the definitions
|
expectation that they will be overridden by the definitions
|
||||||
here. If we PROVIDE the symbols then they will not be
|
here. If we PROVIDE the symbols then they will not be
|
||||||
overridden and global constructors will not be run.
|
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
|
This does mean that it is not possible for a user to define
|
||||||
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
|
their own __CTOR_LIST__ and __DTOR_LIST__ symbols; if they do,
|
||||||
|
@ -114,7 +115,9 @@ SECTIONS
|
||||||
(The custom script can just be a copy of this script with the
|
(The custom script can just be a copy of this script with the
|
||||||
PROVIDE() qualifiers added).
|
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__ = .;
|
||||||
__CTOR_LIST__ = .;
|
__CTOR_LIST__ = .;
|
||||||
LONG (-1); LONG (-1);
|
LONG (-1); LONG (-1);
|
||||||
|
@ -135,7 +138,7 @@ SECTIONS
|
||||||
LONG (0); LONG (0);
|
LONG (0); LONG (0);
|
||||||
}
|
}
|
||||||
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
|
${RELOCATING+KEEP (*(SORT_NONE(.fini)))}
|
||||||
/* ??? Why is .gcc_exc here? */
|
${RELOCATING+/* ??? Why is .gcc_exc here? */}
|
||||||
${RELOCATING+ *(.gcc_exc)}
|
${RELOCATING+ *(.gcc_exc)}
|
||||||
${RELOCATING+PROVIDE (etext = .);}
|
${RELOCATING+PROVIDE (etext = .);}
|
||||||
${RELOCATING+ KEEP (*(.gcc_except_table))}
|
${RELOCATING+ KEEP (*(.gcc_except_table))}
|
||||||
|
|
|
@ -92,6 +92,11 @@ if ![ld_link $CC tmpdir/cdtest {tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/c
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 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}] {
|
if ![ld_relocate $ld tmpdir/cdtest.o {-Ur tmpdir/cdtest-foo.o tmpdir/cdtest-bar.o tmpdir/cdtest-main.o}] {
|
||||||
fail $test2
|
fail $test2
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue