diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-09 20:48:06 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-09 20:48:06 -0800 |
commit | 2d2cd51564c7fa6f82677e9f4baab8e6996380b5 (patch) | |
tree | 0a4ddd2c985725ef6138a1cc38b652df985834d5 /sysdeps/sparc/sparc32/dl-machine.h | |
parent | 9a07f9d01f1689e99e89bbb5ec48e6930da755f1 (diff) | |
download | glibc-2d2cd51564c7fa6f82677e9f4baab8e6996380b5.tar.gz glibc-2d2cd51564c7fa6f82677e9f4baab8e6996380b5.tar.xz glibc-2d2cd51564c7fa6f82677e9f4baab8e6996380b5.zip |
Fix bugs in sparc PLT profiling register management, and add sparc sotruss support.
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela): Protect local variables with appropriate CPP guards. * sysdeps/sparc/sparc32/dl-trampoline.S: Propagate the stack_ptr from the frame pointer, not the stack pointer. Correct layout comments. Fix test on resulting framesize and the management of the outregs buffer for pltexit. Preserve floating point return values across _dl_call_pltexit call. * sysdeps/sparc/sparc64/dl-trampoline.S: Fix test on resulting framesize and the management of the outregs buffer for pltexit. Preserve floating point return values across _dl_call_pltexit call. * elf/sotruss-lib.c (la_sparc32_gnu_pltenter, la_sparc64_gnu_pltenter, la_sparc32_gnu_pltexit, la_sparc64_gnu_pltexit): New functions. (print_exit): Fix format string for return register value.
Diffstat (limited to 'sysdeps/sparc/sparc32/dl-machine.h')
-rw-r--r-- | sysdeps/sparc/sparc32/dl-machine.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index 1620ca54df..f85683d1b0 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. SPARC version. - Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010, 2011 + Copyright (C) 1996-2003, 2004, 2005, 2006, 2007, 2010, 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -341,10 +341,14 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, void *const reloc_addr_arg, int skip_ifunc) { Elf32_Addr *const reloc_addr = reloc_addr_arg; +#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP const Elf32_Sym *const refsym = sym; +#endif Elf32_Addr value; const unsigned int r_type = ELF32_R_TYPE (reloc->r_info); +#if !defined RESOLVE_CONFLICT_FIND_MAP struct link_map *sym_map = NULL; +#endif #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC /* This is defined in rtld.c, but nowhere in the static libc.a; make the |