From 8c17da6e594c61837ef20620791a2e55d323d3d2 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 4 Jul 2003 10:25:14 +0000 Subject: [PATCH] * elf32-h8300.c (R_H8_DIR32A16): Fix name field. (elf32_h8_relax_section) : Adjust position of relocation. : Fix type of relocation. * ld-h8300/h8300.exp: Replace loop with explicit list. Run relax.d unconditionally. Run relax-2.d for *-elf targets. * ld-h8300/relax.d: Fix typo. * ld-h8300/relax.s: Add 0x prefixes. * ld-h8300/relad-2.[sd]: New test. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-h8300.c | 7 +++++-- ld/testsuite/ChangeLog | 8 ++++++++ ld/testsuite/ld-h8300/h8300.exp | 11 +++++------ ld/testsuite/ld-h8300/relax-2.d | 11 +++++++++++ ld/testsuite/ld-h8300/relax-2.s | 8 ++++++++ ld/testsuite/ld-h8300/relax.d | 6 +++--- 7 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 ld/testsuite/ld-h8300/relax-2.d create mode 100644 ld/testsuite/ld-h8300/relax-2.s diff --git a/bfd/ChangeLog b/bfd/ChangeLog index be245f0..712976c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2003-07-04 Paul + + * elf32-h8300.c (R_H8_DIR32A16): Fix name field. + (elf32_h8_relax_section) : Adjust position of relocation. + : Fix type of relocation. + 2003-07-04 Kaz Kojima * elf32-sh.c (sh_elf_create_dynamic_sections): Return if dynamic diff --git a/bfd/elf32-h8300.c b/bfd/elf32-h8300.c index 1b623f2..386c92f 100644 --- a/bfd/elf32-h8300.c +++ b/bfd/elf32-h8300.c @@ -183,7 +183,7 @@ static reloc_howto_type h8_elf_howto_table[] = { 0, /* bitpos */ complain_overflow_dont,/* complain_on_overflow */ special, /* special_function */ - "R_H8_DIR32", /* name */ + "R_H8_DIR32A16", /* name */ FALSE, /* partial_inplace */ 0, /* src_mask */ 0xffffffff, /* dst_mask */ @@ -1076,6 +1076,9 @@ elf32_h8_relax_section (abfd, sec, link_info, again) irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), R_H8_DIR8); + /* Move the relocation. */ + irel->r_offset--; + /* Delete two bytes of data. */ if (!elf32_h8_relax_delete_bytes (abfd, sec, irel->r_offset + 1, 2)) @@ -1187,7 +1190,7 @@ elf32_h8_relax_section (abfd, sec, link_info, again) /* Fix the relocation's type. */ irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info), - R_H8_DIR16A8); + R_H8_DIR16); /* Delete two bytes of data. */ if (!elf32_h8_relax_delete_bytes (abfd, sec, diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index a9ad45f..d7149f8 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2003-07-04 Richard Sandiford + + * ld-h8300/h8300.exp: Replace loop with explicit list. Run relax.d + unconditionally. Run relax-2.d for *-elf targets. + * ld-h8300/relax.d: Fix typo. + * ld-h8300/relax.s: Add 0x prefixes. + * ld-h8300/relad-2.[sd]: New test. + 2003-06-29 Thiemo Seufer * ld-mips-elf/mips-elf.exp: Use is_elf_format. diff --git a/ld/testsuite/ld-h8300/h8300.exp b/ld/testsuite/ld-h8300/h8300.exp index 99542f4..af457ab 100644 --- a/ld/testsuite/ld-h8300/h8300.exp +++ b/ld/testsuite/ld-h8300/h8300.exp @@ -1,5 +1,5 @@ # Expect script for ld-h8300 tests -# Copyright 2002 Free Software Foundation, Inc. +# Copyright 2002, 2003 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,9 +24,8 @@ if ![istarget h8300-*-*] { return } -set test_list [lsort [glob -nocomplain $srcdir/$subdir/*.d]] -foreach test $test_list { - # We need to strip the ".d", but can leave the dirname. - verbose [file rootname $test] - run_dump_test [file rootname $test] +run_dump_test relax + +if {[istarget *-elf]} { + run_dump_test relax-2 } diff --git a/ld/testsuite/ld-h8300/relax-2.d b/ld/testsuite/ld-h8300/relax-2.d new file mode 100644 index 0000000..d32c5b4 --- /dev/null +++ b/ld/testsuite/ld-h8300/relax-2.d @@ -0,0 +1,11 @@ +# name: H8300 Relaxation Test 2 +# ld: --relax -m h8300helf +# objdump: -d --no-show-raw-insn + +.*: file format .*-h8300 + +Disassembly of section .text: + +00000100 <_start>: + *100: 28 67 * mov.b @0x67:8,r0l + *102: 6a 08 43 21 * mov.b @0x4321:16,r0l diff --git a/ld/testsuite/ld-h8300/relax-2.s b/ld/testsuite/ld-h8300/relax-2.s new file mode 100644 index 0000000..aa82dba --- /dev/null +++ b/ld/testsuite/ld-h8300/relax-2.s @@ -0,0 +1,8 @@ + .h8300h + .globl _start +_start: + mov.b @foo:16,r0l + mov.b @bar:32,r0l + + .equ foo,0xffff67 + .equ bar,0x4321 diff --git a/ld/testsuite/ld-h8300/relax.d b/ld/testsuite/ld-h8300/relax.d index a5672a5..2bf61c7 100644 --- a/ld/testsuite/ld-h8300/relax.d +++ b/ld/testsuite/ld-h8300/relax.d @@ -1,4 +1,4 @@ -# name: H8300 Relxation Test +# name: H8300 Relaxation Test # ld: --relax # objdump: -d --no-show-raw-insn @@ -11,8 +11,8 @@ Disassembly of section .text: 00000100 <_start>: 100: 0d 00 mov.w r0,r0 - 102: 47 02 beq .+2 \(106\) - 104: 55 02 bsr .+2 \(108\) + 102: 47 02 beq .+2 \(0x106\) + 104: 55 02 bsr .+2 \(0x108\) 00000106 <.L1>: 106: 54 70 rts -- 2.7.4