Bugs in s12z test suite.

John Darrington john@darrington.wattle.id.au
Sun Sep 2 07:22:00 GMT 2018


I'm trying to triage the bugs which "make check" is complaining about in
s12z and could use some help understanding what's going on.

Running objdump -Wi on tmpdir/dw2-1-compressed.o

gives:

Contents of the .debug_info section:

  Compilation Unit @ offset 0x0:
   Length:        0x4e (32-bit)
   Version:       2
   Abbrev Offset: 0x0
   Pointer Size:  4
 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <c>   DW_AT_stmt_list   : 0x0
    <10>   DW_AT_high_pc     : 0x10
    <14>   DW_AT_low_pc      : 0x8
...

whereas the test expects:

  Compilation Unit @ offset 0x0:
   Length:        0x4e (32-bit)
   Version:       2
   Abbrev Offset: 0x0
   Pointer Size:  4
 <0><b>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <c>   DW_AT_stmt_list   : 0x0
    <10>   DW_AT_high_pc     : 0x8
    <14>   DW_AT_low_pc      : 0x4


Note that these last two values are double what the test wants.

Using gdb to investigate it seems that objdump is calling apply_reloc on
these values.   This is wrong isn't it?

What is happening is that the datum is read (it's value is say 0x4) and
the reloc is applied (the addend is 0x4) so the result 0x8 and in general
many (all) of these test failures result from the value being double what
the test expects.

Why is the reloc being applied by objdump?  The value was relocated when
the  file was written.  It's not apppropriate for it to be relocated again.
Or have I missed something?

Can someone explain to me what's going on?

J'




More information about the Binutils mailing list