+2001-09-29 Hans-Peter Nilsson <hp@axis.com>
+
+ * ld-linkonce/linkonce.exp: New file.
+ * ld-linkonce/x.s, ld-linkonce/y.s, ld-linkonce/zeroeh.ld,
+ ld-linkonce/zeroehl32.d: New test.
+
2001-09-25 H.J. Lu <hjl@gnu.org>
* ld-elfweak/dso.dsym: Updated for alpha.
--- /dev/null
+# Expect script for ld linkonce tests
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# Written by Hans-Peter Nilsson (hp@axis.com)
+#
+
+# Test for ELF here (or really, .gnu.linkonce functionality), so we don't
+# have to qualify on ELF specifically in every .d-file.
+
+if { ![istarget *-*-linux*] && ![istarget *-*-gnu] && ![istarget *-*-elf] } {
+ return
+}
+
+load_lib ld-lib.exp
+
+set rd_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+for { set i 0 } { $i < [llength $rd_test_list] } { incr i } {
+ # We need to strip the ".d", but can leave the dirname.
+ verbose [file rootname [lindex $rd_test_list $i]]
+ run_dump_test [file rootname [lindex $rd_test_list $i]]
+}
--- /dev/null
+;# Main file, x.s, with the program (_start) referring to two
+;# linkonce functions fn and fn2. The functions fn and fn2 are
+;# supposed to be equivalent of C++ template instantiations; the
+;# main file instantiates fn. There's the equivalent of an FDE
+;# entry in .eh_frame, referring to fn via a local label.
+
+ .text
+ .global _start
+_start:
+ .long fn
+ .long fn2
+
+ .section .gnu.linkonce.t.fn,"ax",@progbits
+ .weak fn
+ .type fn,@function
+fn:
+.La:
+ .long 1
+ .long 2
+.Lb:
+ .size fn,.Lb-.La
+
+ .section .eh_frame,"aw",@progbits
+ .long 2
+ .long .La
+ .long .Lb-.La
--- /dev/null
+;# Library file y.s has linkonce entries for fn and fn2. Note
+;# that this version of fn has different code, as if compiled
+;# with different optimization flags than the one in x.s (not
+;# important for this test, though). The reference from
+;# .eh_frame to the linkonce-excluded fn2 must be zero, or g++
+;# EH will not work.
+
+ .section .gnu.linkonce.t.fn2,"ax",@progbits
+ .weak fn2
+ .type fn2,@function
+fn2:
+.Lc:
+ .long 3
+.Ld:
+ .size fn2,.Ld-.Lc
+
+ .section .gnu.linkonce.t.fn,"ax",@progbits
+ .weak fn
+ .type fn,@function
+fn:
+.Le:
+ .long 4
+.Lf:
+ .size fn,.Lf-.Le
+
+ .section .eh_frame,"aw",@progbits
+ .long 7
+ .long .Lc
+ .long .Ld-.Lc
+
+ .long 0x6066
+ .long .Le
+ .long .Lf-.Le
--- /dev/null
+SECTIONS {
+ .text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
+ .eh_frame 0x2000 : { *(.eh_frame) }
+}
--- /dev/null
+#source: x.s
+#source: y.s
+#ld: -Ttext 0xa00 -T $srcdir/$subdir/zeroeh.ld
+#objdump: -s
+#target: cris-*-elf cris-*-linux* i?86-*-elf i?86-*-linux*
+#xfail: *-*-*
+
+# The word at address 201c, for the linkonce-excluded section, must be zero.
+
+.*: file format elf32.*
+
+Contents of section \.text:
+ 0a00 080a0000 100a0000 01000000 02000000 .*
+ 0a10 03000000 .*
+Contents of section \.eh_frame:
+ 2000 02000000 080a0000 08000000 07000000 .*
+ 2010 100a0000 04000000 66600000 00000000 .*
+ 2020 04000000 .*
+#pass