This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: Add testcase for PR ld/251


It has been long overdue. I will check it in shortly.


H.J.
----
binutils/testsuite/

2005-10-20  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/251
	* binutils-all/group.s: New file.

	* binutils-all/objcopy.exp (objcopy_test_readelf): New
	procedure.
	Use it to test ELF group.

ld/testsuite/

2005-10-20  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/251
	* ld-elf/group.2d: New file.

--- binutils/binutils/testsuite/binutils-all/group.s.group	2005-10-19 14:51:21.000000000 -0700
+++ binutils/binutils/testsuite/binutils-all/group.s	2005-10-19 14:50:57.000000000 -0700
@@ -0,0 +1,8 @@
+	.section .text,"axG",%progbits,foo_group,comdat
+	.global foo
+foo:
+	.word 0
+	.section .data,"awG",%progbits,foo_group,comdat
+	.global bar
+bar:
+	.word 0
--- binutils/binutils/testsuite/binutils-all/objcopy.exp.group	2005-10-19 12:13:44.000000000 -0700
+++ binutils/binutils/testsuite/binutils-all/objcopy.exp	2005-10-20 09:22:11.000000000 -0700
@@ -661,6 +661,52 @@ switch [copy_setup] {
     }
 }
 
+proc objcopy_test_readelf {testname srcfile} {
+    global OBJCOPY
+    global OBJCOPYFLAGS
+    global READELF
+    global srcdir
+    global subdir
+
+    if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
+	unresolved "objcopy ($testname)"
+	return
+    }
+
+    verbose -log "$OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o"
+    catch "exec $OBJCOPY $OBJCOPYFLAGS tmpdir/bintest.o tmpdir/copy.o" exec_output
+    if ![string match "" $exec_output] then {
+	fail "objcopy ($testname)"
+	return;
+    }
+
+    verbose -log "$READELF -a tmpdir/bintest.o > tmpdir/bintest.o.out"
+    catch "exec $READELF -a tmpdir/bintest.o > tmpdir/bintest.o.out" exec_output
+    set exec_output [prune_warnings $exec_output]
+    if ![string match "" $exec_output] then {
+	unresolved "objcopy ($testname)"
+	return
+    }
+
+    verbose -log "$READELF -a tmpdir/copy.o > tmpdir/copy.o.out"
+    catch "exec $READELF -a tmpdir/copy.o > tmpdir/copy.o.out" exec_output
+    set exec_output [prune_warnings $exec_output]
+    if ![string match "" $exec_output] then {
+	unresolved "objcopy ($testname)"
+	return
+    }
+
+    verbose -log "diff tmpdir/bintest.o.out tmpdir/copy.o.out"
+    catch "exec diff tmpdir/bintest.o.out tmpdir/copy.o.out" exec_output
+    set exec_output [prune_warnings $exec_output]
+
+    if [string match "" $exec_output] then {
+	pass "objcopy ($testname)"
+    } else {
+	fail "objcopy ($testname)"
+    }
+}
+
 # ia64 specific tests
 if { ([istarget "ia64-*-elf*"]
        || [istarget "ia64-*-linux*"]) } {
@@ -670,4 +716,5 @@ if { ([istarget "ia64-*-elf*"]
 # ELF specific tests
 if [is_elf_format] {
     objcopy_test "ELF unknown section type" unknown.s
+    objcopy_test_readelf "ELF group" group.s
 }
--- binutils/ld/testsuite/ld-elf/group2.d.group	2005-10-20 09:33:30.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/group2.d	2005-10-20 09:52:31.000000000 -0700
@@ -0,0 +1,16 @@
+#source: ../../../binutils/testsuite/binutils-all/group.s
+#ld: -r
+#readelf: -Sg --wide
+
+#...
+  \[[ 0-9]+\] foo_group[ \t]+GROUP[ \t]+.*
+#...
+  \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG.*
+#...
+  \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG.*
+#...
+COMDAT group section \[[ 0-9]+\] `foo_group' \[foo_group\] contains 2 sections:
+   \[Index\]    Name
+   \[[ 0-9]+\]   .text.*
+   \[[ 0-9]+\]   .data.*
+#pass


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]