aboutsummaryrefslogtreecommitdiff
path: root/binutils/testsuite
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-07-10 14:20:20 -0700
committerH.J. Lu <hjl.tools@gmail.com>2015-07-10 14:27:39 -0700
commit889884731e09b46e4c2ecb051dfde1e2f69d2b47 (patch)
treea4e2caa2763562a127f970dad138ab6769b769be /binutils/testsuite
parenta0e28e54675fd92e73df71fed5d4f6c718f40102 (diff)
downloadgdb-889884731e09b46e4c2ecb051dfde1e2f69d2b47.zip
gdb-889884731e09b46e4c2ecb051dfde1e2f69d2b47.tar.gz
gdb-889884731e09b46e4c2ecb051dfde1e2f69d2b47.tar.bz2
Properly convert objects between different ELF classes
The output SHF_COMPRESSED section size is different from input if ELF classes of input and output aren't the same. We must adjust the section sizes as well as the compression headers in SHF_COMPRESSED sections when converting objects between different ELF classes. bfd/ PR binutils/18656 * bfd.c (bfd_convert_section_size): New function. (bfd_convert_section_contents): Likewise. * bfd-in2.h: Regenerated. binutils/ 2015-07-10 H.J. Lu <hongjiu.lu@intel.com> PR binutils/18656 * objcopy.c (setup_section): Call bfd_convert_section_size to get the output section size. (copy_section): Get the section size from the output section and call bfd_get_full_section_contents to convert section contents for output. binutils/testsuite/ PR binutils/18656 * binutils-all/compress.exp (convert_test): New proc. Run conversion tests between x86-64 and x32.
Diffstat (limited to 'binutils/testsuite')
-rw-r--r--binutils/testsuite/ChangeLog6
-rw-r--r--binutils/testsuite/binutils-all/compress.exp93
2 files changed, 99 insertions, 0 deletions
diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog
index ebc35c3..435961a 100644
--- a/binutils/testsuite/ChangeLog
+++ b/binutils/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2015-07-10 H.J. Lu <hongjiu.lu@intel.com>
+ PR binutils/18656
+ * binutils-all/compress.exp (convert_test): New proc.
+ Run conversion tests between x86-64 and x32.
+
+2015-07-10 H.J. Lu <hongjiu.lu@intel.com>
+
* binutils-all/dw2-3.W: Updated to accept .debug_* sections.
2015-05-20 Ed Maste <emaste@freebsd.org>
diff --git a/binutils/testsuite/binutils-all/compress.exp b/binutils/testsuite/binutils-all/compress.exp
index 43a3ce1..abff197 100644
--- a/binutils/testsuite/binutils-all/compress.exp
+++ b/binutils/testsuite/binutils-all/compress.exp
@@ -570,3 +570,96 @@ if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3gabi.W] } then {
} else {
pass "$testname"
}
+
+proc convert_test { testname as_flags objcop_flags } {
+ global srcdir
+ global subdir
+ global testfile3
+ global copyfile
+ global OBJCOPY
+ global OBJDUMP
+
+ if { ![binutils_assemble_flags $srcdir/$subdir/dw2-3.S ${testfile3}.o "$as_flags"] } then {
+ unresolved "$testname"
+ return
+ }
+
+ set got [binutils_run $OBJCOPY "$objcop_flags ${testfile3}.o ${copyfile}.o"]
+ if ![string match "" $got] then {
+ fail "objcopy ($testname)"
+ return
+ }
+
+ set got [remote_exec host "$OBJDUMP -W ${copyfile}.o" "" "/dev/null" "objdump.out"]
+
+ if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then {
+ fail "$testname (reason: unexpected output)"
+ send_log $got
+ send_log "\n"
+ return
+ }
+
+ if { [regexp_diff objdump.out $srcdir/$subdir/dw2-3.W] } then {
+ fail "$testname"
+ } else {
+ pass "$testname"
+ }
+}
+
+if { ([istarget "x86_64-*-elf*"]
+ || [istarget "x86_64-*-linux*"]) } {
+ set testname "Convert x86-64 object with zlib-gabi to x32 (1)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64"
+
+ set testname "Convert x86-64 object with zlib-gabi to x32 (2)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gnu"
+
+ set testname "Convert x86-64 object with zlib-gabi to x32 (3)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --64" "-O elf32-x86-64 --decompress-debug-sections"
+
+ set testname "Convert x86-64 object with zlib-gnu to x32 (1)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64"
+
+ set testname "Convert x86-64 object with zlib-gnu to x32 (2)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gabi"
+
+ set testname "Convert x86-64 object with zlib-gnu to x32 (3)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --64" "-O elf32-x86-64 --decompress-debug-sections"
+
+ set testname "Convert x86-64 object to x32 (1)"
+ convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64"
+
+ set testname "Convert x86-64 object to x32 (2)"
+ convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gabi"
+
+ set testname "Convert x86-64 object to x32 (3)"
+ convert_test "$testname" "--nocompress-debug-sections --64" "-O elf32-x86-64 --compress-debug-sections=zlib-gnu"
+
+
+ set testname "Convert x32 object with zlib-gabi to x86-64 (1)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64"
+
+ set testname "Convert x32 object with zlib-gabi to x86-64 (2)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gnu"
+
+ set testname "Convert x32 object with zlib-gabi to x86-64 (3)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gabi --x32" "-O elf64-x86-64 --decompress-debug-sections"
+
+ set testname "Convert x32 object with zlib-gnu to x86-64 (1)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64"
+
+ set testname "Convert x32 object with zlib-gnu to x86-64 (2)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gabi"
+
+ set testname "Convert x32 object with zlib-gnu to x86-64 (3)"
+ convert_test "$testname" "--compress-debug-sections=zlib-gnu --x32" "-O elf64-x86-64 --decompress-debug-sections"
+
+ set testname "Convert x32 object to x86-64 (1)"
+ convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64"
+
+ set testname "Convert x32 object to x86-64 (2)"
+ convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gabi"
+
+ set testname "Convert x32 object to x86-64 (3)"
+ convert_test "$testname" "--nocompress-debug-sections --x32" "-O elf64-x86-64 --compress-debug-sections=zlib-gnu"
+ }