aboutsummaryrefslogtreecommitdiff
path: root/gas/config.in
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2018-02-08 10:18:59 +1030
committerAlan Modra <amodra@gmail.com>2018-02-08 13:56:29 +1030
commita9479dc051ab00f311c04cdd5b299a70739f67ed (patch)
tree125d66cdbfce4db95791983657b87e297cc688fc /gas/config.in
parent02ecce62be3516c03f523b1665c9d151a16a39c6 (diff)
downloadgdb-a9479dc051ab00f311c04cdd5b299a70739f67ed.zip
gdb-a9479dc051ab00f311c04cdd5b299a70739f67ed.tar.gz
gdb-a9479dc051ab00f311c04cdd5b299a70739f67ed.tar.bz2
PR22819, powerpc gas "instruction address is not a multiple of 4"
Checks for insn alignment were hopelessly confused when misaligned data starts a new frag. The real-world testcase happened to run out of frag space in the middle of emitting a trace-back table via something like: .byte 0 /* VERSION=0 */ .byte 9 /* LANG=C++ */ .byte 34 /* Bits on: has_tboff, fp_present */ .byte 64 /* Bits on: name_present */ .byte 128 /* Bits on: stores_bc, FP_SAVED=0 */ .byte 0 /* Bits on: GP_SAVED=0 */ .byte 2 /* FIXEDPARMS=2 */ .byte 1 /* FLOATPARMS=0, parmsonstk */ .long 0 .long 768 /* tb_offset: 0x300 */ .hword 45 /* Function name length: 45 */ .long 0x334e5a5f .long 0x31766f70 .long 0x65744932 .long 0x69746172 .long 0x7a5f6e6f .long 0x64504533 .long 0x5f534e50 .long 0x72463431 .long 0x61746361 .long 0x74535f6c .long 0x74637572 .byte 0x45 .byte 0 The trigger being those misaligned .long's output for the function name. A most horrible way to output a string, especially considering endian issues.. PR 22819 * config/tc-ppc.c (md_assemble): Rewrite insn alignment checking. (ppc_frag_check): Likewise. * testsuite/gas/ppc/misalign.d, * testsuite/gas/ppc/misalign.l, * testsuite/gas/ppc/misalign.s: New test. * testsuite/gas/ppc/misalign2.d, * testsuite/gas/ppc/misalign2.s: New test. * testsuite/gas/ppc/ppc.exp: Run them.
Diffstat (limited to 'gas/config.in')
0 files changed, 0 insertions, 0 deletions