Subject: Re: sparc64 toolchain JMP_SLOT reloc/PLT lossage (aka tcl vs. XFree 4.3)
To: Martin Husemann <martin@duskware.de>
From: Rafal Boni <rafal@attbi.com>
List: port-sparc64
Date: 04/08/2003 08:43:03
In message <20030407212202.GA10966@drowsy.duskware.de>, you write: 

-> On Fri, Mar 28, 2003 at 06:28:09PM -0500, Rafal Boni wrote:
-> 
-> Sorry, took some more time to check this...
-> 
-> I have slightly newer libs, since I did a complete rebuild again after the
-> snapshot. Anyway, most of it looks exactly like your stuff, but:
-> 
-> > 0000000000120900 <.plt+0xb00>:
-> >         ...
-> >   120908:       01 00 00 00     nop 
-> >   12090c:       01 00 00 00     nop 
-> >   120910:       01 00 00 00     nop 
-> >   120914:       01 00 00 00     nop 
-> >   120918:       01 00 00 00     nop 
-> >   12091c:       01 00 00 00     nop 
-> >   120920:       03 00 0b 20     sethi  %hi(0x2c8000), %g1
-> >   120924:       30 6f fd 3f     b,a   %xcc, 11fe20 <_PROCEDURE_LINKAGE_TAB
-> LE_+0x20>
-> >   120928:       00 00 00 00     illtrap  0
-> >         ...
-> > Disassembly of section .got:
-> > 
-> > So the PLT entry we were looking for, at 0x120980, is indeed all zeroes,
-> 
-> Ummm, that address is not listed in above table - and for me the PLT entry
-> looks ok:

It isn't listed explicitly, but it falls into the "..." after 120928 as it
was just all zeroes and I didn't specify '--disassemble-zeroes' (aka -z).
I probably should have disassembled until the next non-zero entry to make
that clearer, sorry 8-)

Here's a more complete dump:
0000000000120900 <.plt+0xb00>:
  120900:       00 00 00 00     illtrap  0
  120904:       00 00 00 00     illtrap  0
  120908:       01 00 00 00     nop 
  12090c:       01 00 00 00     nop 
  120910:       01 00 00 00     nop 
  120914:       01 00 00 00     nop 
  120918:       01 00 00 00     nop 
  12091c:       01 00 00 00     nop 
  120920:       03 00 0b 20     sethi  %hi(0x2c8000), %g1
  120924:       30 6f fd 3f     b,a   %xcc, 11fe20 <_PROCEDURE_LINKAGE_TABLE_+0x20>
  120928:       00 00 00 00     illtrap  0
  12092c:       00 00 00 00     illtrap  0
  120930:       00 00 00 00     illtrap  0
  120934:       00 00 00 00     illtrap  0
  120938:       00 00 00 00     illtrap  0
  12093c:       00 00 00 00     illtrap  0
  120940:       00 00 00 00     illtrap  0
  120944:       00 00 00 00     illtrap  0
  120948:       00 00 00 00     illtrap  0
  12094c:       00 00 00 00     illtrap  0
  120950:       00 00 00 00     illtrap  0
  120954:       00 00 00 00     illtrap  0
  120958:       00 00 00 00     illtrap  0
  12095c:       00 00 00 00     illtrap  0
  120960:       00 00 00 00     illtrap  0
  120964:       00 00 00 00     illtrap  0
  120968:       00 00 00 00     illtrap  0
  12096c:       00 00 00 00     illtrap  0
  120970:       00 00 00 00     illtrap  0
  120974:       00 00 00 00     illtrap  0
  120978:       00 00 00 00     illtrap  0
  12097c:       00 00 00 00     illtrap  0
  120980:       00 00 00 00     illtrap  0
  120984:       00 00 00 00     illtrap  0
  120988:       00 00 00 00     illtrap  0
  12098c:       00 00 00 00     illtrap  0
  120990:       00 00 00 00     illtrap  0
  120994:       00 00 00 00     illtrap  0
  120998:       00 00 00 00     illtrap  0
  12099c:       00 00 00 00     illtrap  0
[...]

The PLT section in that library has a lot of these holes, where all I see
are long streams of zeroes; OTOH, the parts that aren't zeroed out look
like perfectly acceptable, working PLT entries, and the holes do not look
like they're regularly sized or located (at least in my quick look -- I
haven't gone through it exhaustively).

->   120980:       03 00 0b 80     sethi  %hi(0x2e0000), %g1
->   120984:       30 6f fd 27     b,a   %xcc, 11fe20 <_PROCEDURE_LINKAGE_TABLE
-> _+0x20>
->   120988:       01 00 00 00     nop 
->   12098c:       01 00 00 00     nop 
->   120990:       01 00 00 00     nop 
->   120994:       01 00 00 00     nop 
->   120998:       01 00 00 00     nop 
->   12099c:       01 00 00 00     nop 
-> 
-> while it gives the same results for the section you showed us:
-> 
->   120908:       01 00 00 00     nop 
->   12090c:       01 00 00 00     nop 
->   120910:       01 00 00 00     nop 
->   120914:       01 00 00 00     nop 
->   120918:       01 00 00 00     nop 
->   12091c:       01 00 00 00     nop 
->   120920:       03 00 0b 20     sethi  %hi(0x2c8000), %g1
-> 
-> ... but that is because 120908 is an unused (not yet fixed up) part of 
-> the PLT at 0x120900.
-> 
-> Am I missing something?

No, I don't think so, it just looks like your newer libraries are good 
whereas the old ones somehow got corrupted.  Can you tar up your newer
X build and push it to ftp.netbsd.org when you have a few spare cycles?

Thanks for the followup!
--rafal

----
Rafal Boni                                                     rafal@attbi.com
  We are all worms.  But I do believe I am a glowworm.  -- Winston Churchill