2005-10-19 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 19 Oct 2005 17:39:43 +0000 (17:39 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 19 Oct 2005 17:39:43 +0000 (17:39 +0000)
PR binutils/1321
* binutils-all/link-order.s: New.

* binutils-all/objcopy.exp: Check ia64 link order.

binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/link-order.s [new file with mode: 0644]
binutils/testsuite/binutils-all/objcopy.exp

index 481ad98..cb93df2 100644 (file)
@@ -1,3 +1,10 @@
+2005-10-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/1321
+       * binutils-all/link-order.s: New.
+
+       * binutils-all/objcopy.exp: Check ia64 link order.
+
 2005-10-11  Danny Smith  <dannysmith@users.sourceforge.net>
 
        * binutils-all/windres/escapex-2.rc: New file.
diff --git a/binutils/testsuite/binutils-all/link-order.s b/binutils/testsuite/binutils-all/link-order.s
new file mode 100644 (file)
index 0000000..5994cb8
--- /dev/null
@@ -0,0 +1,13 @@
+       .text
+       .align 16
+       .global foo#
+       .proc foo#
+foo:
+       .prologue 2, 2
+       .vframe r2
+       mov r2 = r12
+       .body
+       .restore sp
+       mov r12 = r2
+       br.ret.sptk.many b0
+       .endp foo#
index f96113e..cb4c0c1 100644 (file)
@@ -648,3 +648,42 @@ switch [copy_setup] {
        strip_executable_with_saving_a_symbol "$STRIP" "-K main -K _main $STRIPFLAGS" "$test4"
     }
 }
+
+# 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]
+
+           if [string match "" $exec_output] then {
+               pass "objcopy (ia64 link order)"
+           } else {
+               fail "objcopy (ia64 link order)"
+           }
+       }
+    }
+}