diff options
author | Ulrich Drepper <drepper@redhat.com> | 2005-06-14 00:56:49 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2005-06-14 00:56:49 +0000 |
commit | c63d8f809b816fa51d2448a46fbf0ca6ec253b43 (patch) | |
tree | b8c03533b22dde8bdc2ff71a696c144285614c7d /elf/rtld.c | |
parent | 74780cf659d1e5cd91e82b6e5314dcfc7bba033b (diff) | |
download | glibc-c63d8f809b816fa51d2448a46fbf0ca6ec253b43.tar glibc-c63d8f809b816fa51d2448a46fbf0ca6ec253b43.tar.gz glibc-c63d8f809b816fa51d2448a46fbf0ca6ec253b43.tar.bz2 glibc-c63d8f809b816fa51d2448a46fbf0ca6ec253b43.zip |
[BZ #966]
2005-06-13 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/clock_gettime.c (clock_gettime): Implement case
where HANDLED_REALTIME is not defined. [BZ #966]
2005-06-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/netlinkaccess.h (__netlink_sendreq,
__netlink_receive): Remove prototypes.
(__netlink_request): New prototype.
* sysdeps/unix/sysv/linux/ifaddrs.c: Include <alloca.h> and
<stdint.h>.
(__netlink_sendreq): Make static.
(__netlink_receive): Rename to...
(__netlink_request): ... this. Add type argument, call
__netlink_sendreq. If MSG_TRUNC is set after recvmsg, retry
with a bigger buffer. Don't record buffers that contain no
messages we are expecting.
(getifaddrs): Use __netlink_request instead of __netlink_sendreq
and __netlink_receive pairs. Formatting.
* sysdeps/unix/sysv/linux/if_index.c (if_nameindex_netlink): Use
__netlink_request instead of __netlink_sendreq and __netlink_receive
pair.
2005-06-13 Thorsten Kukuk <kukuk@suse.de>
* sysdeps/unix/sysv/linux/netinet/if_tr.h: Don't include kernel
headers, instead copy important structs/defines.
2005-06-13 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (dl_main): Move DT_DEBUG setup before first
_dl_debug_state call.
Diffstat (limited to 'elf/rtld.c')
-rw-r--r-- | elf/rtld.c | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/elf/rtld.c b/elf/rtld.c index 03096a38d8..bd171e977d 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1558,6 +1558,23 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", } } + /* Set up debugging before the debugger is notified for the first time. */ +#ifdef ELF_MACHINE_DEBUG_SETUP + /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ + ELF_MACHINE_DEBUG_SETUP (main_map, r); + ELF_MACHINE_DEBUG_SETUP (&GL(dl_rtld_map), r); +#else + if (main_map->l_info[DT_DEBUG] != NULL) + /* There is a DT_DEBUG entry in the dynamic section. Fill it in + with the run-time address of the r_debug structure */ + main_map->l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; + + /* Fill in the pointer in the dynamic linker's own dynamic section, in + case you run gdb on the dynamic linker directly. */ + if (GL(dl_rtld_map).l_info[DT_DEBUG] != NULL) + GL(dl_rtld_map).l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; +#endif + /* We start adding objects. */ r->r_state = RT_ADD; _dl_debug_state (); @@ -2076,30 +2093,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n", } - { - struct link_map *l = main_map; - -#ifdef ELF_MACHINE_DEBUG_SETUP - - /* Some machines (e.g. MIPS) don't use DT_DEBUG in this way. */ - - ELF_MACHINE_DEBUG_SETUP (l, r); - ELF_MACHINE_DEBUG_SETUP (&GL(dl_rtld_map), r); - -#else - - if (l->l_info[DT_DEBUG] != NULL) - /* There is a DT_DEBUG entry in the dynamic section. Fill it in - with the run-time address of the r_debug structure */ - l->l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; - - /* Fill in the pointer in the dynamic linker's own dynamic section, in - case you run gdb on the dynamic linker directly. */ - if (GL(dl_rtld_map).l_info[DT_DEBUG] != NULL) - GL(dl_rtld_map).l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; -#endif - } - /* Now set up the variable which helps the assembler startup code. */ GL(dl_ns)[LM_ID_BASE]._ns_main_searchlist = &main_map->l_searchlist; GL(dl_ns)[LM_ID_BASE]._ns_global_scope[0] = &main_map->l_searchlist; |