Browse Source
* bfd-in.h (bfd_h8300_pad_address): Declare.
* bfd-in2.h: Regenerate.
* cpu-h8300.c (bfd_h8300_pad_address): New function.
* coff-h8300.c (h8300_reloc16_estimate): Use it to canonicalize
addresses before checking whether they can be relaxed.
(h8300_reloc16_extra_cases): Likewise for the R_MOVL2 sanity check.
Don't complain about overflows in general 8-bit relocations.
* elf32-h8300.c (elf32_h8_relax_section): Use bfd_h8300_pad_address.
Fix handling of R_H8_DIR24A8.
ld/testsuite/
* ld-h8300/relax-3{.s,.d,-coff.d}: New test.
* ld-h8300/h8300.exp: Run it.
ezannoni_pie-20030916-branch
10 changed files with 153 additions and 76 deletions
@ -0,0 +1,32 @@ |
|||
# name: H8300 Relaxation Test 3 |
|||
# source: relax-3.s |
|||
# ld: --relax -m h8300s |
|||
# objdump: -d --no-show-raw-insn |
|||
|
|||
.*: file format .*-h8300 |
|||
|
|||
Disassembly of section .text: |
|||
|
|||
00000100 <_start>: |
|||
# |
|||
# Relaxation of aa:16 |
|||
# |
|||
.*: 6a 08 00 00 * mov.b @0x0:16,r0l |
|||
.*: 6a 08 7f ff * mov.b @0x7fff:16,r0l |
|||
.*: 6a 08 80 00 * mov.b @0x8000:16,r0l |
|||
.*: 6a 08 fe ff * mov.b @0xfeff:16,r0l |
|||
.*: 28 00 * mov.b @0x0:8,r0l |
|||
.*: 28 ff * mov.b @0xff:8,r0l |
|||
# |
|||
# Relaxation of aa:32 |
|||
# |
|||
.*: 6a 08 00 00 * mov.b @0x0:16,r0l |
|||
.*: 6a 08 7f ff * mov.b @0x7fff:16,r0l |
|||
.*: 6a 28 00 00 80 00 * mov.b @0x8000:32,r0l |
|||
.*: 6a 28 00 00 ff 00 * mov.b @0xff00:32,r0l |
|||
.*: 6a 28 00 ff ff 00 * mov.b @0xffff00:32,r0l |
|||
.*: 6a 28 ff ff 7f ff * mov.b @0xffff7fff:32,r0l |
|||
.*: 6a 08 80 00 * mov.b @0x8000:16,r0l |
|||
.*: 6a 08 fe ff * mov.b @0xfeff:16,r0l |
|||
.*: 28 00 * mov.b @0x0:8,r0l |
|||
.*: 28 ff * mov.b @0xff:8,r0l |
|||
@ -0,0 +1,31 @@ |
|||
# name: H8300 Relaxation Test 3 |
|||
# ld: --relax -m h8300self |
|||
# objdump: -d --no-show-raw-insn |
|||
|
|||
.*: file format .*-h8300 |
|||
|
|||
Disassembly of section .text: |
|||
|
|||
00000100 <_start>: |
|||
# |
|||
# Relaxation of aa:16 |
|||
# |
|||
.*: 6a 08 00 00 * mov.b @0x0:16,r0l |
|||
.*: 6a 08 7f ff * mov.b @0x7fff:16,r0l |
|||
.*: 6a 08 80 00 * mov.b @0x8000:16,r0l |
|||
.*: 6a 08 fe ff * mov.b @0xfeff:16,r0l |
|||
.*: 28 00 * mov.b @0x0:8,r0l |
|||
.*: 28 ff * mov.b @0xff:8,r0l |
|||
# |
|||
# Relaxation of aa:32 |
|||
# |
|||
.*: 6a 08 00 00 * mov.b @0x0:16,r0l |
|||
.*: 6a 08 7f ff * mov.b @0x7fff:16,r0l |
|||
.*: 6a 28 00 00 80 00 * mov.b @0x8000:32,r0l |
|||
.*: 6a 28 00 00 ff 00 * mov.b @0xff00:32,r0l |
|||
.*: 6a 28 00 ff ff 00 * mov.b @0xffff00:32,r0l |
|||
.*: 6a 28 ff ff 7f ff * mov.b @0xffff7fff:32,r0l |
|||
.*: 6a 08 80 00 * mov.b @0x8000:16,r0l |
|||
.*: 6a 08 fe ff * mov.b @0xfeff:16,r0l |
|||
.*: 28 00 * mov.b @0x0:8,r0l |
|||
.*: 28 ff * mov.b @0xff:8,r0l |
|||
@ -0,0 +1,32 @@ |
|||
.h8300s |
|||
.globl _start |
|||
_start: |
|||
# s3-s6 aren't valid 16-bit addresses. |
|||
mov.b @s1:16,r0l |
|||
mov.b @s2:16,r0l |
|||
mov.b @s7:16,r0l |
|||
mov.b @s8:16,r0l |
|||
mov.b @s9:16,r0l |
|||
mov.b @s10:16,r0l |
|||
|
|||
mov.b @s1:32,r0l |
|||
mov.b @s2:32,r0l |
|||
mov.b @s3:32,r0l |
|||
mov.b @s4:32,r0l |
|||
mov.b @s5:32,r0l |
|||
mov.b @s6:32,r0l |
|||
mov.b @s7:32,r0l |
|||
mov.b @s8:32,r0l |
|||
mov.b @s9:32,r0l |
|||
mov.b @s10:32,r0l |
|||
|
|||
.equ s1,0 |
|||
.equ s2,0x7fff |
|||
.equ s3,0x8000 |
|||
.equ s4,0xff00 |
|||
.equ s5,0xffff00 |
|||
.equ s6,0xffff7fff |
|||
.equ s7,0xffff8000 |
|||
.equ s8,0xfffffeff |
|||
.equ s9,0xffffff00 |
|||
.equ s10,0xffffffff |
|||
Loading…
Reference in new issue