mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Update.
2005-01-09 Ulrich Drepper <drepper@redhat.com> * elf/dl-debug.c (_dl_debug_initialize): Take extra parameter and use it to select the r_debug structure for that namespace. * elf/dl-close.c (_dl_close): Adjust call to _dl_debug_initialize. * elf/dl-load.c (_dl_map_object_from_fd): Likewise. * elf/dl-open.c (_dl_open): Likewise. * elf/rtld.c (dl_main): Likewise. * sysdeps/generic/ldsodefs.h (struct link_namespaces): Add _ns_debug member. (_dl_debug_initialize): Add new parameter in declaration. * elf/dl-close.c (_dl_close): Make sure auditing callbacks are not called for the auditing objects themselves. * elf/dl-load.c (_dl_map_object_from_fd): Likewise.
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
/* Communicate dynamic linker state to the debugger at runtime.
|
||||
Copyright (C) 1996, 1998, 2000, 2002, 2004 Free Software Foundation, Inc.
|
||||
Copyright (C) 1996, 1998,2000,2002,2004,2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -32,20 +32,25 @@ struct r_debug _r_debug;
|
||||
|
||||
struct r_debug *
|
||||
internal_function
|
||||
_dl_debug_initialize (ElfW(Addr) ldbase)
|
||||
_dl_debug_initialize (ElfW(Addr) ldbase, Lmid_t ns)
|
||||
{
|
||||
if (_r_debug.r_brk == 0 || ldbase != 0)
|
||||
struct r_debug *r;
|
||||
|
||||
if (ns == LM_ID_BASE)
|
||||
r = &_r_debug;
|
||||
else
|
||||
r = &GL(dl_ns)[ns]._ns_debug;
|
||||
|
||||
if (r->r_brk == 0 || ldbase != 0)
|
||||
{
|
||||
/* Tell the debugger where to find the map of loaded objects. */
|
||||
_r_debug.r_version = 1 /* R_DEBUG_VERSION XXX */;
|
||||
_r_debug.r_ldbase = ldbase;
|
||||
// XXX This is problematic. It means we cannot tell the debugger
|
||||
// XXX about namespaces other than the main one.
|
||||
_r_debug.r_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
|
||||
_r_debug.r_brk = (ElfW(Addr)) &_dl_debug_state;
|
||||
r->r_version = 1 /* R_DEBUG_VERSION XXX */;
|
||||
r->r_ldbase = ldbase ?: _r_debug.r_ldbase;
|
||||
r->r_map = GL(dl_ns)[ns]._ns_loaded;
|
||||
r->r_brk = (ElfW(Addr)) &_dl_debug_state;
|
||||
}
|
||||
|
||||
return &_r_debug;
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user