This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! On SH, GDB's gdb.dwarf2/dw2-intermix.exp currently fails as follows: Running [GDB]/testsuite/gdb.dwarf2/dw2-intermix.exp ... gdb compile failed, [GDB]/testsuite/gdb.dwarf2/dw2-intermix.S: Assembler messages: [GDB]/testsuite/gdb.dwarf2/dw2-intermix.S:139: Error: unsupported BFD relocation size 8 [GDB]/testsuite/gdb.dwarf2/dw2-intermix.S:142: Error: unsupported BFD relocation size 8 gdb.dwarf2/dw2-intermix.S: [...] 18 /* Test a minimal file containing intermixed 32-bit and 64-bit DWARF 19 formats. This is not allowed by the (draft) DWARF-3 standard, but 20 GDB should handle it gracefully nevertheless. */ [...] 135 /* Line table */ 136 .section .debug_line 137 .Lline1_begin: 138 .4byte 0xffffffff 139 .8byte .Lline1_end - .Lline1_start /* Initial length */ 140 .Lline1_start: 141 .2byte 2 /* Version */ 142 .8byte .Lline1_lines - .Lline1_hdr /* header_length */ 143 .Lline1_hdr: 144 .byte 1 /* Minimum insn length */ [...] Here is a patch for the assembler, OK to commit? gas/ [SH] Support the .8byte directive also for non-sh64 configurations. * config/tc-sh.c (sh_cons_fix_new, md_apply_fix) [!HAVE_SH64]: Handle BFD_RELOC_64. Index: gas/config/tc-sh.c =================================================================== RCS file: /cvs/src/src/gas/config/tc-sh.c,v retrieving revision 1.139 diff -u -p -r1.139 tc-sh.c --- gas/config/tc-sh.c 28 Jun 2010 14:06:57 -0000 1.139 +++ gas/config/tc-sh.c 15 Mar 2012 12:00:13 -0000 @@ -789,11 +789,9 @@ sh_cons_fix_new (fragS *frag, int off, i r_type = BFD_RELOC_32; break; -#ifdef HAVE_SH64 case 8: r_type = BFD_RELOC_64; break; -#endif default: goto error; @@ -3968,6 +3966,11 @@ md_apply_fix (fixS *fixP, valueT *valP, the other symbol. We have to adjust the relocation type here. */ if (fixP->fx_pcrel) { +#ifndef HAVE_SH64 + /* Safeguard; this must not occur for non-sh64 configurations. */ + gas_assert (fixP->fx_r_type != BFD_RELOC_64); +#endif + switch (fixP->fx_r_type) { default: @@ -4166,6 +4169,12 @@ md_apply_fix (fixS *fixP, valueT *valP, buf[highbyte] |= (val >> 8) & 0xf; break; +#ifndef HAVE_SH64 + case BFD_RELOC_64: + apply_full_field_fix (fixP, buf, *valP, 8); + break; +#endif + case BFD_RELOC_32: case BFD_RELOC_32_PCREL: apply_full_field_fix (fixP, buf, val, 4); This obviously doesn't change anything for sh64 configurations, and causes no regressions all of sh-linux-gnu toolchain testing (SH4a), and the GDB testresults then look as follows: Running [GDB]/testsuite/gdb.dwarf2/dw2-intermix.exp ... PASS: gdb.dwarf2/dw2-intermix.exp: set listsize 1 PASS: gdb.dwarf2/dw2-intermix.exp: list func_cu1 PASS: gdb.dwarf2/dw2-intermix.exp: ptype func_cu1 GrÃÃe, Thomas
Attachment:
pgp00000.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |