Subject: Re: nbgroff chokes on -current sparc64
To: James Chacon <jchacon@genuity.net>
From: Michael Rauch <mrauch@netbsd.org>
List: tech-toolchain
Date: 12/01/2001 22:26:58
On Sat, Dec 01, 2001 at 05:13:50AM -0500, James Chacon wrote:
> > [David Brownlee wrote:]
> >   > /usr/lib/libstdc++.so.4: Undefined symbol "" (reloc type = 54, symnum = 18)
> >   >[...]
> > 
> [Michael Rauch wrote:]
> >   just to make sure it isn't the sparc64 instance of misc/13927 (although 
> >   this libstdc++.so problem seems to be older):
> 
> I did some more testing and here's what I was able to determine.
> 
> Apply Michael's patch and the reloc errors will go away (as expected since
> the UA64 reloc's don't appear in the final output anymore). 
> [...]
Fine. So at least the first part was really that bug again.

> I also beleive the other patch posted is also needed and should be committed.
> It catches any UA64's which fall through and by that point they're misaligned
> if they got that far (as far as 64 bit alignment goes) so the resulting
> binary should core on an alignment fault (which is better in my mind than
> a reloc error).

Well, with the unpatched sources the relocations of the originally 
R_SPARC_UA64 relocations are completely wrong:
These relocations are somehow recomputed at linking time, with modifying 
the address they point to. After this recomputation they point to a 
location which is past EOF, which is clearly wrong. 

I'll mail the binutils maintainers about my patch and also ask if there's a 
more general method of determining this type of relocation errors (Looking 
at the code I suspect still more bugs of this type which don't bite us at 
the moment, but may in the future.) I'll keep this list informed about the 
outcome. 

Can't give however any really useful comments on the alignment problem. 


Michael