mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-25 21:41:47 +08:00
PR savannah/3331:
* elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group when we couldn't relax something. * ld-m68hc11/bug-3331.d: New test. * ld-m68hc11/bug-3331.s: New file.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2003-04-26 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
|
PR savannah/3331:
|
||||||
|
* elf32-m68hc11.c (m68hc11_elf_relax_section): Clear prev_insn_group
|
||||||
|
when we couldn't relax something.
|
||||||
|
|
||||||
2003-04-25 Alan Modra <amodra@bigpond.net.au>
|
2003-04-25 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* elflink.h (elf_merge_symbol): When we find a regular definition
|
* elflink.h (elf_merge_symbol): When we find a regular definition
|
||||||
|
@ -1073,6 +1073,7 @@ m68hc11_elf_relax_section (abfd, sec, link_info, again)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
prev_insn_branch = 0;
|
prev_insn_branch = 0;
|
||||||
|
prev_insn_group = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (free_relocs != NULL)
|
if (free_relocs != NULL)
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2003-04-26 Stephane Carrez <stcarrez@nerim.fr>
|
||||||
|
|
||||||
|
* ld-m68hc11/bug-3331.d: New test.
|
||||||
|
* ld-m68hc11/bug-3331.s: New file.
|
||||||
|
|
||||||
2003-04-25 Nick Clifton <nickc@redhat.com>
|
2003-04-25 Nick Clifton <nickc@redhat.com>
|
||||||
J"orn Rennecke <joern.rennecke@superh.com>
|
J"orn Rennecke <joern.rennecke@superh.com>
|
||||||
|
|
||||||
|
14
ld/testsuite/ld-m68hc11/bug-3331.d
Normal file
14
ld/testsuite/ld-m68hc11/bug-3331.d
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#source: bug-3331.s
|
||||||
|
#as: -m68hc11
|
||||||
|
#ld: --relax
|
||||||
|
#objdump: -d --prefix-addresses -r
|
||||||
|
#target: m6811-*-* m6812-*-*
|
||||||
|
|
||||||
|
.*: +file format elf32-m68hc11
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
0+8000 <_start> ldx #0+1100 <__data_section_start>
|
||||||
|
0+8003 <_start\+0x3> bset 0,x \#\$04
|
||||||
|
0+8006 <L1> ldd \#0+2 <__bss_size\+0x2>
|
||||||
|
0+8009 <L1\+0x3> std \*0+ <__bss_size>
|
||||||
|
0+800b <L1\+0x5> rts
|
23
ld/testsuite/ld-m68hc11/bug-3331.s
Normal file
23
ld/testsuite/ld-m68hc11/bug-3331.s
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
;;; Bug #3331: Invalid group relaxation, bset uses an invalid address
|
||||||
|
;;; http://savannah.gnu.org/bugs/?func=detailbug&bug_id=3331&group_id=2424
|
||||||
|
;;;
|
||||||
|
.sect .text
|
||||||
|
.globl _start
|
||||||
|
_start:
|
||||||
|
.relax L1
|
||||||
|
ldx #foo ;; This relax group must not be changed.
|
||||||
|
bset 0,x #4
|
||||||
|
L1:
|
||||||
|
ldd #2
|
||||||
|
std table ;; This instruction uses a symbol in page0
|
||||||
|
;; and it triggered the relaxation of the
|
||||||
|
;; previous relax group
|
||||||
|
rts
|
||||||
|
|
||||||
|
.sect .page0
|
||||||
|
.globl table
|
||||||
|
table: .long 0
|
||||||
|
|
||||||
|
.sect .data
|
||||||
|
.globl foo
|
||||||
|
foo: .long 0
|
Reference in New Issue
Block a user