aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
authorDenis Chertykov <chertykov@gmail.com>2014-04-10 19:50:33 +0400
committerDenis Chertykov <chertykov@gmail.com>2014-04-10 19:50:33 +0400
commite4ef1b6c3fee295ab41138bf77a82dff16f1d7c3 (patch)
tree4f6ad10afb271882fe8624a082ecb088a1db0feb /ld/testsuite
parent9d497a19eabe25b3af1cdd50a957592ed22658e5 (diff)
downloadgdb-e4ef1b6c3fee295ab41138bf77a82dff16f1d7c3.zip
gdb-e4ef1b6c3fee295ab41138bf77a82dff16f1d7c3.tar.gz
gdb-e4ef1b6c3fee295ab41138bf77a82dff16f1d7c3.tar.bz2
bfd/ChangeLog
* elf32-avr.c: Add DIFF relocations for AVR. (avr_final_link_relocate): Handle the DIFF relocs. (bfd_elf_avr_diff_reloc): New. (elf32_avr_is_diff_reloc): New. (elf32_avr_adjust_diff_reloc_value): Reduce difference value. (elf32_avr_relax_delete_bytes): Recompute difference after deleting bytes. * reloc.c: Add BFD_RELOC_AVR_DIFF8/16/32 relocations gas/ChangeLog * config/tc-avr.c: Add new flag mlink-relax. (md_show_usage): Add flag and help text. (md_parse_option): Record whether link relax is turned on. (relaxable_section): New. (avr_validate_fix_sub): New. (avr_force_relocation): New. (md_apply_fix): Generate DIFF reloc. (avr_allow_local_subtract): New. * config/tc-avr.h (TC_LINKRELAX_FIXUP): Define to 0. (TC_FORCE_RELOCATION): Define. (TC_FORCE_RELOCATION_SUB_SAME): Define. (TC_VALIDATE_FIX_SUB): Define. (avr_force_relocation): Declare. (avr_validate_fix_sub): Declare. (md_allow_local_subtract): Define. (avr_allow_local_subtract): Declare. gas/testsuite/ChangeLog * gas/avr/diffreloc_withrelax.d: New testcase. * gas/avr/noreloc_withoutrelax.d: Likewise. * gas/avr/relax.s: Likewise. include/ChangeLog * elf/avr.h: Add new DIFF relocs. ld/testsuite/ChangeLog * ld-avr/norelax_diff.d: New testcase. * ld-avr/relax_diff.d: Likewise. * ld-avr/relax.s: Likewise.
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ChangeLog6
-rw-r--r--ld/testsuite/ld-avr/avr.exp31
-rw-r--r--ld/testsuite/ld-avr/norelax_diff.d13
-rw-r--r--ld/testsuite/ld-avr/relax.s12
-rw-r--r--ld/testsuite/ld-avr/relax_diff.d14
5 files changed, 76 insertions, 0 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog
index cbc12f6..e239ce8 100644
--- a/ld/testsuite/ChangeLog
+++ b/ld/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-10 Senthil Kumar Selvaraj <senthil_kumar.selvaraj@atmel.com>
+
+ * ld-avr/norelax_diff.d: New testcase.
+ * ld-avr/relax_diff.d: Likewise.
+ * ld-avr/relax.s: Likewise.
+
2014-04-05 Andreas Schwab <schwab@linux-m68k.org>
* ld-plugin/lto.exp: Make "-Wp," prefix optional when filtering
diff --git a/ld/testsuite/ld-avr/avr.exp b/ld/testsuite/ld-avr/avr.exp
new file mode 100644
index 0000000..d196d96
--- /dev/null
+++ b/ld/testsuite/ld-avr/avr.exp
@@ -0,0 +1,31 @@
+# Copyright 2014
+# Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+
+#
+# Some AVR tests
+#
+
+if {![istarget avr-*-*]} {
+ return
+}
+
+set avr_test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]]
+foreach avr_test $avr_test_list {
+ verbose [file rootname $avr_test]
+ run_dump_test [file rootname $avr_test]
+}
+
diff --git a/ld/testsuite/ld-avr/norelax_diff.d b/ld/testsuite/ld-avr/norelax_diff.d
new file mode 100644
index 0000000..1891d6e
--- /dev/null
+++ b/ld/testsuite/ld-avr/norelax_diff.d
@@ -0,0 +1,13 @@
+#name: AVR No change in behavior without relaxation
+#as: -mmcu=avrxmega2
+#ld: -mavrxmega2
+#source: relax.s
+#objdump: -s
+#target: avr-*-*
+
+.*: file format elf32-avr
+
+Contents of section .text:
+ 0000 0c940000 .*
+Contents of section .data:
+ 802000 0400 .*
diff --git a/ld/testsuite/ld-avr/relax.s b/ld/testsuite/ld-avr/relax.s
new file mode 100644
index 0000000..fbb7bae
--- /dev/null
+++ b/ld/testsuite/ld-avr/relax.s
@@ -0,0 +1,12 @@
+ .file "relax.s"
+.section .text,"ax",@progbits
+main:
+L1:
+ jmp L1
+L2:
+.global x
+ .section .data
+ .type x, @object
+ .size x, 2
+x:
+ .word L2 - L1
diff --git a/ld/testsuite/ld-avr/relax_diff.d b/ld/testsuite/ld-avr/relax_diff.d
new file mode 100644
index 0000000..b84df81
--- /dev/null
+++ b/ld/testsuite/ld-avr/relax_diff.d
@@ -0,0 +1,14 @@
+#name: AVR Account for relaxation in label differences
+#as: -mmcu=avrxmega2 -mlink-relax
+#ld: -mavrxmega2 --relax
+#source: relax.s
+#objdump: -s
+#target: avr-*-*
+
+.*: file format elf32-avr
+
+Contents of section .text:
+ 0000 ffcf .*
+Contents of section .data:
+ 802000 0200 .*
+