ld/testsuite: Add comprehensive PE COFF weak external tests

Add tests covering the full matrix of weak/strong symbol interactions
for PE COFF weak externals, based on testcases by Martin Storsjo.
The archive test covers PE weak externals whose public name is backed
by a real fallback definition, and ensures weak declarations with the
null fallback are not advertised as archive providers.

ld/testsuite/

	* ld-pe/pe-compile.exp (weak_ext_test): New proc.  Compiles
	source files, links via gcc, and runs natively if possible.
	(weak_ext_archive_test): New proc.
	Add tests: normal, weak-undef, weak-defined,
	weak-decl-weak-def, strong-undef-weak-def-archive, weak-use,
	weak-override, weak-duplicate, weak-def-override, weak-def-use.
	* ld-pe/weak-ext-main.c: New file.
	* ld-pe/weak-ext-main-weak.c: New file.
	* ld-pe/weak-ext-main-weak-def.c: New file.
	* ld-pe/weak-ext-add2.c: New file.
	* ld-pe/weak-ext-add1-weak-chained.c: New file.
	* ld-pe/weak-ext-dummy.c: New file.
	* ld-pe/weak-ext-expected1.c: New file.
	* ld-pe/weak-ext-expected3.c: New file.
	* ld-pe/weak-ext-expected5.c: New file.
	* ld-pe/weak-ext-expected3-add1-weak.c: New file.
11 files changed