2002-07-12  Philip Blundell  <philb@gnu.org>

	* sysdeps/generic/backtrace.c (FIRST_FRAME_POINTER): New macro.
	(__backtrace): Use it.
	* sysdeps/arm/frame.h (FIRST_FRAME_POINTER): Define.  [PR libc/2632]

2002-07-12  Philip Blundell  <philb@gnu.org>

	* sysdeps/arm/dl-machine.h (elf_machine_rel): Don't handle
	R_ARM_RELATIVE if RTLD_BOOTSTRAP and HAVE_Z_COMBRELOC.  Only check
	for rtld map if neither RTLD_BOOTSTRAP nor HAVE_Z_COMBRELOC is defined.
	(elf_machine_rela): Remove unused variable.

	* sysdeps/unix/sysv/linux/arm/Makefile [subdir=elf]
	(sysdep-rtld-routines, sysdep_routines, sysdep-dl-routines): Don't
	define.

2002-07-12  Ulrich Drepper  <drepper@redhat.com>

	* iconvdata/gconv-modules: Add aliases for ISO-8859-11.
This commit is contained in:
Ulrich Drepper 2002-07-15 03:58:49 +00:00
parent 2acfe5d64c
commit c3da4f0cba
5 changed files with 45 additions and 15 deletions

View File

@ -1,3 +1,24 @@
2002-07-12 Philip Blundell <philb@gnu.org>
* sysdeps/generic/backtrace.c (FIRST_FRAME_POINTER): New macro.
(__backtrace): Use it.
* sysdeps/arm/frame.h (FIRST_FRAME_POINTER): Define. [PR libc/2632]
2002-07-12 Philip Blundell <philb@gnu.org>
* sysdeps/arm/dl-machine.h (elf_machine_rel): Don't handle
R_ARM_RELATIVE if RTLD_BOOTSTRAP and HAVE_Z_COMBRELOC. Only check
for rtld map if neither RTLD_BOOTSTRAP nor HAVE_Z_COMBRELOC is defined.
(elf_machine_rela): Remove unused variable.
* sysdeps/unix/sysv/linux/arm/Makefile [subdir=elf]
(sysdep-rtld-routines, sysdep_routines, sysdep-dl-routines): Don't
define.
2002-07-12 Ulrich Drepper <drepper@redhat.com>
* iconvdata/gconv-modules: Add aliases for ISO-8859-11.
2002-07-14 Andreas Jaeger <aj@suse.de>
* sysdeps/x86_64/bits/link.h: Add biarch support.

View File

@ -422,10 +422,20 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
{
const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
{
# ifndef RTLD_BOOTSTRAP
if (map != &_dl_rtld_map) /* Already done in rtld itself. */
# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
/* This is defined in rtld.c, but nowhere in the static libc.a;
make the reference weak so static programs can still link.
This declaration cannot be done when compiling rtld.c
(i.e. #ifdef RTLD_BOOTSTRAP) because rtld.c contains the
common defn for _dl_rtld_map, which is incompatible with a
weak decl in the same file. */
# ifndef SHARED
weak_extern (_dl_rtld_map);
# endif
if (map != &GL(dl_rtld_map)) /* Already done in rtld itself. */
# endif
*reloc_addr += map->l_addr;
}
@ -434,6 +444,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
return;
# endif
else
#endif
{
const Elf32_Sym *const refsym = sym;
Elf32_Addr value = RESOLVE (&sym, version, r_type);
@ -483,7 +494,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
# ifndef SHARED
weak_extern (_dl_rtld_map);
# endif
if (map == &_dl_rtld_map)
if (map == &GL(dl_rtld_map))
/* Undo the relocation done here during bootstrapping.
Now we will relocate it anew, possibly using a
binding found in the user program or a loaded library
@ -541,7 +552,6 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
return;
else
{
const Elf32_Sym *const refsym = sym;
Elf32_Addr value = RESOLVE (&sym, version, r_type);
if (sym)
value += sym->st_value;

View File

@ -1,5 +1,5 @@
/* Definition of stack frame structure. ARM/APCS version.
Copyright (C) 2000 Free Software Foundation, Inc.
Copyright (C) 2000, 2002 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
@ -24,3 +24,5 @@ struct layout
void *__unbounded sp;
void *__unbounded return_address;
};
#define FIRST_FRAME_POINTER ADVANCE_STACK_FRAME (__builtin_frame_address (0))

View File

@ -1,5 +1,5 @@
/* Return backtrace of current program state. Generic version.
Copyright (C) 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -58,6 +58,11 @@ extern void *__libc_stack_end;
# define ADVANCE_STACK_FRAME(next) BOUNDED_1 ((struct layout *) (next))
#endif
/* By default, the frame pointer is just what we get from gcc. */
#ifndef FIRST_FRAME_POINTER
# define FIRST_FRAME_POINTER __builtin_frame_address (0)
#endif
int
__backtrace (array, size)
void **array;
@ -68,7 +73,7 @@ __backtrace (array, size)
void *__unbounded top_stack;
int cnt = 0;
top_frame = __builtin_frame_address (0);
top_frame = FIRST_FRAME_POINTER;
top_stack = CURRENT_STACK_FRAME;
/* We skip the call to this function, it makes no sense to record it. */

View File

@ -12,11 +12,3 @@ endif
ifeq ($(subdir),resource)
sysdep_routines += oldgetrlimit64
endif
ifeq ($(subdir),elf)
# extra shared linker files to link into dl-allobjs.so and libc
sysdep-dl-routines += dl-procinfo
sysdep_routines += dl-procinfo
# extra shared linker files to link only into dl-allobjs.so
sysdep-rtld-routines += dl-procinfo
endif