This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: PR binutils/1487: ELF input section may not be handled properly
- From: "H. J. Lu" <hjl at lucon dot org>
- To: binutils at sources dot redhat dot com
- Date: Wed, 19 Oct 2005 13:46:03 -0700
- Subject: 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