Skip to content

Commit

Permalink
[BZ #966]
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Ulrich Drepper committed Jun 14, 2005
1 parent 74780cf commit c63d8f8
Show file tree
Hide file tree
Showing 7 changed files with 257 additions and 86 deletions.
34 changes: 34 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@
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.

2005-06-12 Ulrich Drepper <drepper@redhat.com>

* elf/dl-error.c (_dl_signal_error): Store information about use of
Expand Down
41 changes: 17 additions & 24 deletions elf/rtld.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ();
Expand Down Expand Up @@ -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;
Expand Down
5 changes: 4 additions & 1 deletion sysdeps/unix/clock_gettime.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ int
clock_gettime (clockid_t clock_id, struct timespec *tp)
{
int retval = -1;
struct timeval tv;

switch (clock_id)
{
Expand All @@ -102,7 +103,9 @@ clock_gettime (clockid_t clock_id, struct timespec *tp)

#ifndef HANDLED_REALTIME
case CLOCK_REALTIME:
HANDLE_REALTIME;
retval = gettimeofday (&tv, NULL);
if (retval == 0)
TIMEVAL_TO_TIMESPEC (&tv, tp);
break;
#endif

Expand Down
12 changes: 4 additions & 8 deletions sysdeps/unix/sysv/linux/if_index.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* Copyright (C) 1997,98,99,2000,2002,2003,2004 Free Software Foundation, Inc.
/* Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 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
Expand Down Expand Up @@ -188,12 +189,8 @@ if_nameindex_netlink (void)


/* Tell the kernel that we wish to get a list of all
active interfaces. */
if (__netlink_sendreq (&nh, RTM_GETLINK) < 0)
goto exit_close;

/* Collect all data for every interface. */
if (__netlink_receive (&nh) < 0)
active interfaces. Collect all data for every interface. */
if (__netlink_request (&nh, RTM_GETLINK) < 0)
goto exit_free;

/* Count the interfaces. */
Expand Down Expand Up @@ -290,7 +287,6 @@ if_nameindex_netlink (void)

exit_free:
__netlink_free_handle (&nh);
exit_close:
__netlink_close (&nh);

return idx;
Expand Down
Loading

0 comments on commit c63d8f8

Please sign in to comment.