NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

toolchain/52859: ld.elf_so relocation failure



>Number:         52859
>Category:       toolchain
>Synopsis:       ld.elf_so relocation failure
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 24 20:40:00 +0000 2017
>Originator:     Martin Husemann
>Release:        NetBSD 8.99.9
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD thirdstage.duskware.de 8.99.9 NetBSD 8.99.9 (MODULAR) #40: Sat Dec 23 21:52:55 CET 2017 martin%thirdstage.duskware.de@localhost:/usr/src/sys/arch/sparc64/compile/MODULAR sparc64
Architecture: sparc64
Machine: sparc64
>Description:

The /usr/tests/libexec/ld.elf_so/t_ifunc test program crashes during
initialization:

cd /usr/tests/libexec/ld.elf_so/
./t_ifunc -l

Doing this under gdb shows:

(gdb) bt
#0  atf_dynstr_init_ap (ad=ad@entry=0xffffffffffffd4d8, fmt=fmt@entry=0x0, 
    ap=ap@entry=0xffffffffffffd648)
    at /usr/src/external/bsd/atf/dist/atf-c/detail/dynstr.c:147
#1  0x000000004070b5b8 in atf_text_format_ap (
    dest=dest@entry=0xffffffffffffd5a0, fmt=fmt@entry=0x0, 
    ap=ap@entry=0xffffffffffffd648)
    at /usr/src/external/bsd/atf/dist/atf-c/detail/text.c:88
#2  0x0000000040709608 in atf_tc_set_md_var (tc=0x40305360 <_rtld_exit>, 
    name=0x0, fmt=0x0) at /usr/src/external/bsd/atf/dist/atf-c/tc.c:778
#3  0x00000000001012a4 in ___start ()
#4  0x00000000403017ac in _rtld_start () from /usr/libexec/ld.elf_so

but:

(gdb) x/16i 0x00000000001012a4
   0x1012a4 <___start+292>:     call  0x202ba0 <_libc_init@plt>
   0x1012a8 <___start+296>:     nop 
   0x1012ac <___start+300>:     sethi  %hi(0), %o0
   0x1012b0 <___start+304>:     or  %o0, 0x140, %o0     ! 0x140
   0x1012b4 <___start+308>:     call  0x202b40 <atexit@plt>
   0x1012b8 <___start+312>:     ldx  [ %l7 + %o0 ], %o0
   0x1012bc <___start+316>:     call  0x101138 <_init>
   0x1012c0 <___start+320>:     nop 
[..]

so the _libc_init call goes wild and calls the wrong function.

>How-To-Repeat:
s/a

>Fix:
n/a



Home | Main Index | Thread Index | Old Index