Subject: lib/8793: ld.elf_so symbol breakage
To: None <gnats-bugs@gnats.netbsd.org>
From: None <mason@primenet.com.au>
List: netbsd-bugs
Date: 11/13/1999 21:06:42
>Number: 8793
>Category: lib
>Synopsis: recent ld.elf_so changes break some binaries
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: lib-bug-people (Library Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Sat Nov 13 21:06:00 1999
>Last-Modified:
>Originator: Geoff C. Wing
>Organization:
Geoff Wing : <gcw@pobox.com> Work URL: http://www.primenet.com.au/
Rxvt Stuff : <gcw@rxvt.org> Ego URL : http://pobox.com/~gcw/
Zsh Stuff : <gcw@zsh.org> Phone : (Australia) 0413 431 874
>Release: 19991112
>Environment:
System: NetBSD c.primenet.com.au 1.4M NetBSD 1.4M (C) #0: Fri Nov 12 10:55:10 EST 1999 mason@c.primenet.com.au:/usr/netbsd/src/sys/arch/i386/compile/C i386
>Description:
changes to ld.elf_so break my apache binary which does dynamic loading.
I suspect the one with log:
"Changes from msaitoh to fix local/global symbol confusion, and to fix
weak symbol support"
% gdb apache
.....
(gdb) run -X
.....
(gdb) bt
Program received signal SIGSEGV, Segmentation fault.
0x48087e44 in _rtld_symlook_obj (name=0x4811c5d0 "strncasecmp",
hash=166920448, obj=0x48091a00, in_plt=true) at symbol.c:122
122 unsigned long symnum = obj->buckets[hash % obj->nbuckets];
(gdb) bt
#0 0x48087e44 in _rtld_symlook_obj (name=0x4811c5d0 "strncasecmp",
hash=166920448, obj=0x48091a00, in_plt=true) at symbol.c:122
#1 0x48087ddd in _rtld_symlook_list (name=0x4811c5d0 "strncasecmp",
hash=166920448, objlist=0x4808d9c4, defobj_out=0xefbfb548, in_plt=true)
at symbol.c:91
#2 0x4808804b in _rtld_find_symdef (obj_list=0x48091000, r_info=7687,
name=0x4811c5d0 "strncasecmp", refobj=0x48091800, defobj_out=0xefbfb57c,
in_plt=true) at symbol.c:217
#3 0x48087a37 in _rtld_relocate_plt_object (obj=0x48091800, rela=0xefbfb5ac,
addrp=0x0, bind_now=true, dodebug=true) at reloc.c:404
#4 0x48087c86 in _rtld_relocate_objects (first=0x48091800, bind_now=true,
dodebug=true) at reloc.c:554
#5 0x480872be in _rtld_dlopen (
name=0x8091b24 "/usr/local/apache/libexec/mod_log_config.so", mode=258)
at rtld.c:671
.....
(gdb) p obj->nbuckets
$3 = 17
(gdb) p obj->buckets
$4 = (Elf32_Word *) 0x4812009c
(gdb) p *(obj->buckets)
Error accessing memory address 0x4812009c: Invalid argument.
>How-To-Repeat:
Not sure. Some programs break, some don't.
>Fix:
?
>Audit-Trail:
>Unformatted: