Skip site navigation (1)Skip section navigation (2)
Date:      01 Feb 2002 23:40:59 +0100
From:      Dag-Erling Smorgrav <des@ofug.org>
To:        John Hay <jhay@icomtek.csir.co.za>
Cc:        obrien@FreeBSD.org, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/contrib/binutils
Message-ID:  <xzpd6zo25c4.fsf@flood.ping.uio.no>
In-Reply-To: <200202011843.g11Ihsj66783@zibbi.icomtek.csir.co.za>
References:  <200202011843.g11Ihsj66783@zibbi.icomtek.csir.co.za>

next in thread | previous in thread | raw e-mail | index | archive | help
John Hay <jhay@icomtek.csir.co.za> writes:
> #0  0x2805353a in reloc_non_plt (obj=0x0, obj_rtld=0x0)
>     at /home/src/libexec/rtld-elf/i386/reloc.c:196
> 196                     *where += (Elf_Addr) obj->relocbase;
> [...]
> It seems as if the stack or something gets clobbered in reloc_non_plt()
> because obj has been used earlier in the function and didn't cause a bus
> error then.

No.  The problem isn't obj, the problem is where, which is computed a
few lines earlier, right before the switch:

            Elf_Addr *where = (Elf_Addr *) (obj->relocbase + rel->r_offset);

Try

(gdb) p where
(gdb) p *obj
(gdb) p *rel

where is probably way off in never-never land, which is possibly the
result of a bug in binutils, and possibly the result of a bug in
rtld-elf.  JDP should be able to help, given a proper backtrace.  I'll
try to reproduce the problem and produce one.

DES (who builds world with DEBUG_FLAGS=-g and STRIP="")
-- 
Dag-Erling Smorgrav - des@ofug.org

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpd6zo25c4.fsf>