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: PR binutils/1487: ELF input section may not be handled properly


I am checking in 2 tests for this.


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

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

	PR binutils/1487
	* binutils-all/objcopy.exp (objcopy_test): New procedure.
	Use it to test simple copy, ia64 link order and ELF unknown
	section type.

	* binutils-all/unknown.s: New file.

ld/testsuite/

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

	PR binutils/1487
	* ld-elf/unknown.d: New file.

--- binutils/binutils/testsuite/binutils-all/objcopy.exp.unknown	2005-10-19 10:14:01.000000000 -0700
+++ binutils/binutils/testsuite/binutils-all/objcopy.exp	2005-10-19 12:13:44.000000000 -0700
@@ -30,12 +30,6 @@ if ![is_remote host] {
 
 send_user "Version [binutil_version $OBJCOPY]"
 
-if {![binutils_assemble $srcdir/$subdir/bintest.s tmpdir/bintest.o]} then {
-    perror "unresolved 1"
-    unresolved "objcopy (simple copy)"
-    return
-}
-
 if ![is_remote host] {
     set tempfile tmpdir/bintest.o
     set copyfile tmpdir/copy
@@ -46,61 +40,79 @@ if ![is_remote host] {
 
 # Test that objcopy does not modify a file when copying it.
 
-set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"]
+proc objcopy_test {testname srcfile} {
+    global OBJCOPY
+    global OBJCOPYFLAGS
+    global srcdir
+    global subdir
+    global tempfile
+    global copyfile
 
-if ![string match "" $got] then {
-    fail "objcopy (simple copy)"
-} else {
-    send_log "cmp $tempfile ${copyfile}.o\n"
-    verbose "cmp $tempfile ${copyfile}.o"
-    if [is_remote host] {
-	set src1 tmpdir/bintest.o
-	set src2 tmpdir/copy.o
-	remote_upload host $tempfile $src1
-	remote_upload host ${copyfile}.o $src2
-    } else {
-	set src1 ${tempfile}
-	set src2 ${copyfile}.o
+    if {![binutils_assemble $srcdir/$subdir/${srcfile} tmpdir/bintest.o]} then {
+ 	perror "unresolved $testname"
+	unresolved "objcopy ($testname)"
+	return
     }
-    set status [remote_exec build cmp "${src1} ${src2}"]
-    set exec_output [lindex $status 1]
-    set exec_output [prune_warnings $exec_output]
 
-    # On some systems the result of objcopy will not be identical.
-    # Usually this is just because gas isn't using bfd to write the files
-    # in the first place, and may order things a little differently.
-    # Those systems should use setup_xfail here.
-
-    setup_xfail "h8300-*-rtems*" "h8300-*-coff"
-    setup_xfail "h8500-*-rtems*" "h8500-*-coff"
-    setup_xfail "hppa*-*-*"
-    setup_xfail "i960-*"
-    setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
-    setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
-    setup_xfail "m8*-*"
-    setup_xfail "or32-*-rtems*" "or32-*-coff"
-    setup_xfail "sh-*-coff*" "sh-*-rtems*" 
-    setup_xfail "tic4x-*-*" "tic80-*-*" "w65-*"
+    set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"]
 
-    clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
-    clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*" "m68*-*-sysv4*"
-
-    if [string match "" $exec_output] then {
-	pass "objcopy (simple copy)"
+    if ![string match "" $got] then {
+	fail "objcopy ($testname)"
     } else {
-	send_log "$exec_output\n"
-	verbose "$exec_output" 1
+	send_log "cmp $tempfile ${copyfile}.o\n"
+	verbose "cmp $tempfile ${copyfile}.o"
+	if [is_remote host] {
+	    set src1 tmpdir/bintest.o
+	    set src2 tmpdir/copy.o
+	    remote_upload host $tempfile $src1
+	    remote_upload host ${copyfile}.o $src2
+	} else {
+	    set src1 ${tempfile}
+	    set src2 ${copyfile}.o
+	}
+	set status [remote_exec build cmp "${src1} ${src2}"]
+	set exec_output [lindex $status 1]
+	set exec_output [prune_warnings $exec_output]
+
+	# On some systems the result of objcopy will not be identical.
+	# Usually this is just because gas isn't using bfd to write the
+	# files in the first place, and may order things a little
+	# differently. Those systems should use setup_xfail here.
+
+	setup_xfail "h8300-*-rtems*" "h8300-*-coff"
+	setup_xfail "h8500-*-rtems*" "h8500-*-coff"
+	setup_xfail "hppa*-*-*"
+	setup_xfail "i960-*"
+	setup_xfail "m68*-*-*coff" "m68*-*-hpux*" "m68*-*-lynxos*"
+	setup_xfail "m68*-*-sysv*" "m68*-apple-aux*"
+	setup_xfail "m8*-*"
+	setup_xfail "or32-*-rtems*" "or32-*-coff"
+	setup_xfail "sh-*-coff*" "sh-*-rtems*" 
+	setup_xfail "tic4x-*-*" "tic80-*-*" "w65-*"
+
+	clear_xfail "hppa*64*-*-hpux*" "hppa*-*-linux*" "hppa*-*-lites*"
+	clear_xfail "hppa*-*-*n*bsd*" "hppa*-*-rtems*" "*-*-*elf*"
+	clear_xfail "m68*-*-sysv4*"
 
-	# On OSF/1, this succeeds with gas and fails with /bin/as.
-	setup_xfail "alpha*-*-osf*"
+	if [string match "" $exec_output] then {
+	    pass "objcopy ($testname)"
+	} else {
+	    send_log "$exec_output\n"
+	    verbose "$exec_output" 1
+
+	    # On OSF/1, this succeeds with gas and fails with /bin/as.
+	    setup_xfail "alpha*-*-osf*"
 
-	# This fails for COFF i960-vxworks targets.
-	setup_xfail "i960-*-vxworks*"
+	    # This fails for COFF i960-vxworks targets.
+	    setup_xfail "i960-*-vxworks*"
 
-	fail "objcopy (simple copy)"
+	    fail "objcopy ($testname)"
+	}
     }
 }
 
+objcopy_test "simple copy" bintest.s
+
 # Test generating S records.
 
 # We make the srec filename 8.3 compatible. Note that the header string
@@ -652,38 +664,10 @@ switch [copy_setup] {
 # ia64 specific tests
 if { ([istarget "ia64-*-elf*"]
        || [istarget "ia64-*-linux*"]) } {
-    if {![binutils_assemble $srcdir/$subdir/link-order.s tmpdir/bintest.o]} then {
-	perror "unresolved ia64 link order."
-	unresolved "objcopy (ia64 link order)"
-    } else {
-	# Test that objcopy does not modify a file with link order bit
-	# when copying it.
-
-	set got [binutils_run $OBJCOPY "$OBJCOPYFLAGS $tempfile ${copyfile}.o"]
-
-	if ![string match "" $got] then {
-	    fail "objcopy (ia64 link order)"
-	} else {
-	    send_log "cmp $tempfile ${copyfile}.o\n"
-	    verbose "cmp $tempfile ${copyfile}.o"
-	    if [is_remote host] {
-		set src1 tmpdir/bintest.o
-		set src2 tmpdir/copy.o
-		remote_upload host $tempfile $src1
-		remote_upload host ${copyfile}.o $src2
-	    } else {
-		set src1 ${tempfile}
-		set src2 ${copyfile}.o
-	    }
-	    set status [remote_exec build cmp "${src1} ${src2}"]
-	    set exec_output [lindex $status 1]
-	    set exec_output [prune_warnings $exec_output]
+    objcopy_test "ia64 link order" link-order.s
+}
 
-	    if [string match "" $exec_output] then {
-		pass "objcopy (ia64 link order)"
-	    } else {
-		fail "objcopy (ia64 link order)"
-	    }
-	}
-    }
+# ELF specific tests
+if [is_elf_format] {
+    objcopy_test "ELF unknown section type" unknown.s
 }
--- binutils/binutils/testsuite/binutils-all/unknown.s.unknown	2005-10-19 11:49:21.000000000 -0700
+++ binutils/binutils/testsuite/binutils-all/unknown.s	2005-10-19 12:41:50.000000000 -0700
@@ -0,0 +1,4 @@
+	.section .foo,"a","note"
+	.global _start
+_start:
+	.long 0
--- binutils/ld/testsuite/ld-elf/unknown.d.unknown	2005-10-19 12:11:18.000000000 -0700
+++ binutils/ld/testsuite/ld-elf/unknown.d	2005-10-19 13:18:14.000000000 -0700
@@ -0,0 +1,7 @@
+#source: ../../../binutils/testsuite/binutils-all/unknown.s
+#ld: -r
+#readelf: -S
+
+#...
+  \[[ 0-9]+\] \.foo[ \t]+NOTE[ \t]+.*
+#pass


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