Skip to content

Commit

Permalink
Update.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Ulrich Drepper committed Jul 15, 2002
1 parent 2acfe5d commit c3da4f0
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 15 deletions.
21 changes: 21 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
18 changes: 14 additions & 4 deletions sysdeps/arm/dl-machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 3 additions & 1 deletion sysdeps/arm/frame.h
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -24,3 +24,5 @@ struct layout
void *__unbounded sp;
void *__unbounded return_address;
};

#define FIRST_FRAME_POINTER ADVANCE_STACK_FRAME (__builtin_frame_address (0))
9 changes: 7 additions & 2 deletions sysdeps/generic/backtrace.c
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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;
Expand All @@ -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. */
Expand Down
8 changes: 0 additions & 8 deletions sysdeps/unix/sysv/linux/arm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit c3da4f0

Please sign in to comment.