This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[patch 0/3] Fix some FAILS for: unordered .debug_info references to .debug_ranges
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: binutils at sourceware dot org
- Date: Mon, 7 Sep 2009 05:32:18 +0200
- Subject: [patch 0/3] Fix some FAILS for: unordered .debug_info references to .debug_ranges
Hi,
as I did not run the testsuite for all the targets there are now some new
FAILs on less-usual arches for the new test:
unordered .debug_info references to .debug_ranges
from
[patch] Support unordered .debug_info references to .debug_ranges
http://sourceware.org/ml/binutils/2009-07/msg00123.html
Attached patches fix some of those, there remain the following FAILs which are
IMO bugs in the targets and I did not fix them as it is out of my scope/time.
Thanks,
Jan
------------------------------------------------------------------------------
d30v-elf FAIL
Pointers get aligned even in the .debuginfo where no alignment should occur.
The pointer at offset 8 should have been at offset 6. readelf then cannot cope
with such aligned content:
Contents of section .debug_info:
0000 00000018 00020000 00000000 04010000 ................
0010 00000010 02410000 00000000 .....A......
Relocation section '.rela.debug_info' at offset 0x494 contains 1 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000008 00000f0c R_D30V_32_NORMAL 00000000 .debug_abbrev + 0
readelf: Warning: Bogus end-of-siblings marker detected at offset b in .debug_info section
readelf: Warning: DIE at offset c refers to abbreviation number 4 which does not exist
readelf: Warning: Unable to load/parse the .debug_info section, so cannot interpret the .debug_ranges section.
------------------------------------------------------------------------------
moxie-elf FAIL
pj-elf FAIL
readelf should know how to both read and process the relocation:
readelf: Error: Missing knowledge of 32-bit reloc types used in DWARF sections of machine number 65261
Relocation section '.rela.debug_info' at offset 0x490 contains 1 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000006 00000f01 unrecognized: 1 00000000 .debug_abbrev + 0
------------------------------------------------------------------------------
ia64-hp-hpux11.23 FAIL
Like above.
readelf: Warning: unable to apply unsupported reloc type 100 to section .debug_ranges
readelf: Warning: unable to apply unsupported reloc type 100 to section .debug_ranges
readelf: Warning: unable to apply unsupported reloc type 100 to section .debug_ranges
readelf: Warning: unable to apply unsupported reloc type 100 to section .debug_ranges
readelf: Warning: unable to apply unsupported reloc type 100 to section .debug_info
readelf: Warning: There is a hole [0x8 - 0x10] in .debug_ranges section.
------------------------------------------------------------------------------
mep-elf UNRESOLVED
This error is common even for other testcases on this target.
Assembler messages:
Fatal error: selected target format 'elf32-mep-little' unknown
------------------------------------------------------------------------------
mmix-elf UNRESOLVED
This error is common even for other testcases on this target.
There are many such errors like:
ERROR: .../binutils-all/group*.s: assembly failed
testranges.s: Assembler messages:
testranges.s:11: Error: junk at end of line, first unrecognized character is `,'
testranges.s:22: Error: junk at end of line, first unrecognized character is `,'
testranges.s:41: Error: junk at end of line, first unrecognized character is `,'
------------------------------------------------------------------------------
xtensa-elf FAIL
Some fixes are attached but there still remains this FAIL. IMO because the
RELA (not REL) relocations for .debug_ranges should contain the offsets (1, 2,
0, 2) as their "Addend"s. This way RELA resolving clears .debug_ranges.
Contents of the .debug_ranges section:
Offset Begin End
00000000 <End of list>
readelf: Warning: There is a hole [0x8 - 0x10] in .debug_ranges section.
00000010 <End of list>
Contents of section .debug_ranges:
0000 00000001 00000002 00000000 00000000 ................
0010 00000000 00000002 00000000 00000000 ................
Relocation section '.rela.debug_ranges' at offset 0x4dc contains 4 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000000 00000101 R_XTENSA_32 00000000 .text + 0
00000004 00000101 R_XTENSA_32 00000000 .text + 0
00000010 00000101 R_XTENSA_32 00000000 .text + 0
00000014 00000101 R_XTENSA_32 00000000 .text + 0
On a more common arch "Addend"s are filled in:
Relocation section '.rela.debug_ranges' at offset 0x630 contains 4 entries:
Offset Info Type Symbol's Value Symbol's Name + Addend
0000000000000000 000000010000000a R_X86_64_32 0000000000000000 .text + 1
0000000000000004 000000010000000a R_X86_64_32 0000000000000000 .text + 2
0000000000000010 000000010000000a R_X86_64_32 0000000000000000 .text + 0
0000000000000014 000000010000000a R_X86_64_32 0000000000000000 .text + 2
------------------------------------------------------------------------------
sh64-superh-linux-gnu FAIL
I did not see why .text starts at 0x1 (and not 0x0 as usual). Maybe the test
should be disabled instead.
Contents of the .debug_ranges section:
Offset Begin End
00000000 00000002 00000003
00000000 <End of list>
00000010 00000001 00000003
00000010 <End of list>
Contents of section .debug_ranges:
0000 02000000 03000000 00000000 00000000 ................
0010 01000000 03000000 00000000 00000000 ................
Relocation section '.rela.debug_ranges' at offset 0x460 contains 4 entries:
Offset Info Type Sym. Value Symbol's Name + Addend
00000000 00000101 R_SH_DIR32 00000000 .text + 0
00000004 00000101 R_SH_DIR32 00000000 .text + 0
00000010 00000101 R_SH_DIR32 00000000 .text + 0
00000014 00000101 R_SH_DIR32 00000000 .text + 0
------------------------------------------------------------------------------
Targets under the test:
alpha-dec-vms alpha-linux-gnu alpha-netbsd alpha-unknown-freebsd4.7
alpha-unknown-osf4.0 am33_2.0-linux arc-elf arm-aout arm-eabi arm-elf
arm-epoc-pe arm-netbsdelf arm-nto arm-pe arm-rtems arm-vxworks arm-wince-pe
avr-elf bfin-elf c30-aout c4x-coff calmrisc16-elf calmrisc32-elf cr16-elf
cr16c-elf cris-elf crx-elf cy16-elf d10v-elf d30v-elf dlx-elf fido-elf
fr30-elf frv-elf frv-linux frv-uclinux h8300-coff h8300-elf hppa-linux-gnu
hppa64-hp-hpux11.11 hppa64-hp-hpux11.23 i386-elf i386-netware
i386-unknown-go32 i686-pc-cygwin i686-pc-elf i686-pc-linux-gnu i960-coff
ia64-elf ia64-hp-hpux11.23 ia64-linux ia64-linux-gnu ia64-x-freebsd5 ip2k-elf
ip4k-elf iq2000-elf lm32-elf m32c-elf m32r-elf m68hc11-elf m68hc12-elf
m68k-aout m68k-coff m68k-elf m68k-linux-gnu m68k-rtems m68k-uclinux m88k-coff
maxq-coff mcore-elf mcore-pe mep-elf mingw32-pe mips-elf mips-sgi-irix5
mips-wrs-vxworks mips64-linux mips64vr-elf mips64vrel-elf mipsel-linux-gnu
mipsisa32-elf mipsisa64-elf mmix-elf mmix-mmixware mn10200-elf mn10300-elf
moxie-elf msp430-elf mt-elf nios-elf ns32k-netbsd openrisc-elf or32-coff
or32-elf pdp11-dec-bsd pj-elf powerpc-eabisim powerpc-eabispe powerpc-elf
powerpc-ibm-aix4.3.3.0 powerpc-linux-gnu powerpc-nto powerpc-wrs-vxworks
powerpc64-linux-gnu ppc-linux rs6000-aix4.3.3 rx-elf s390-linux s390x-ibm-tpf
sh-coff sh-elf sh-hms sh-linux sh-nto sh-symbianelf sh64-elf
sh64-superh-linux-gnu shl-unknown-netbsdelf1.6T sparc-elf sparc-linux-gnu
sparc64-linux-gnu sparc64-netbsd spu-elf tic54x-coff tx39-elf v850-elf
v850e-elf vax-netbsdelf x86_64-linux x86_64-mingw32 x86_64-pc-linux-gnu
x86_64-pc-mingw64 xscale-elf xstormy16-elf xtensa-elf z8k-coff
------------------------------------------------------------------------------
Targets no longer supported as primary target:
c30-aout calmrisc16-elf calmrisc32-elf cr16c-elf cy16-elf h8300-coff i960-coff
ip4k-elf m68k-aout m68k-coff m88k-coff maxq-coff nios-elf or32-coff rx-elf
sh-coff sh-hms x86_64-pc-mingw64
------------------------------------------------------------------------------
These targets:
i686-pc-cygwin mingw32-pe x86_64-mingw32
fail on
./configure --target=$TARGET --enable-targets=all; make
with
config/tc-i386.c: In function 'i386_target_format':
config/tc-i386.c:8099: error: duplicate case value
config/tc-i386.c:8088: error: previously used here
This failure was already present before my patch
[patch 1/4] Fix compilation for i386-unknown-go32 with secondary as elf
http://sourceware.org/ml/binutils/2009-08/msg00152.html
and I will post a separate patch for it.