diff options
Diffstat (limited to 'sysdeps/sparc/sparc64')
-rw-r--r-- | sysdeps/sparc/sparc64/dl-machine.h | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index 3f71a66774..47579cd05f 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -1,6 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. Sparc64 version. - Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, - 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 1997-2006, 2009, 2010, 2011 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 @@ -77,11 +76,11 @@ elf_machine_load_address (void) register Elf64_Addr *got __asm ("%l7"); __asm ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t" - "call 1f\n\t" - " add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t" - "call _DYNAMIC\n\t" - "call _GLOBAL_OFFSET_TABLE_\n" - "1:\tadd %1, %0, %1\n\t" : "=r" (pc), "=r" (got)); + "call 1f\n\t" + " add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t" + "call _DYNAMIC\n\t" + "call _GLOBAL_OFFSET_TABLE_\n" + "1:\tadd %1, %0, %1\n\t" : "=r" (pc), "=r" (got)); /* got is now l_addr + _GLOBAL_OFFSET_TABLE_ *got is _DYNAMIC @@ -115,17 +114,11 @@ elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc, PLT entries should not be allowed to define the value. ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one of the main executable's symbols, as for a COPY reloc. */ -#if !defined RTLD_BOOTSTRAP || USE___THREAD -# define elf_machine_type_class(type) \ +#define elf_machine_type_class(type) \ ((((type) == R_SPARC_JMP_SLOT \ || ((type) >= R_SPARC_TLS_GD_HI22 && (type) <= R_SPARC_TLS_TPOFF64)) \ * ELF_RTYPE_CLASS_PLT) \ | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY)) -#else -# define elf_machine_type_class(type) \ - ((((type) == R_SPARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT) \ - | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY)) -#endif /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ #define ELF_MACHINE_JMP_SLOT R_SPARC_JMP_SLOT @@ -168,7 +161,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) /* PLT0 looks like: - sethi %uhi(_dl_runtime_{resolve,profile}_0), %g4 + sethi %uhi(_dl_runtime_{resolve,profile}_0), %g4 sethi %hi(_dl_runtime_{resolve,profile}_0), %g5 or %g4, %ulo(_dl_runtime_{resolve,profile}_0), %g4 or %g5, %lo(_dl_runtime_{resolve,profile}_0), %g5 @@ -189,7 +182,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) /* PLT1 looks like: - sethi %uhi(_dl_runtime_{resolve,profile}_1), %g4 + sethi %uhi(_dl_runtime_{resolve,profile}_1), %g4 sethi %hi(_dl_runtime_{resolve,profile}_1), %g5 or %g4, %ulo(_dl_runtime_{resolve,profile}_1), %g4 or %g5, %lo(_dl_runtime_{resolve,profile}_1), %g5 @@ -479,8 +472,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, sparc64_fixup_plt (map, reloc, reloc_addr, value, reloc->r_addend, 0); #endif break; -#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \ - && !defined RESOLVE_CONFLICT_FIND_MAP +#ifndef RESOLVE_CONFLICT_FIND_MAP case R_SPARC_TLS_DTPMOD64: /* Get the information from the link map returned by the resolv function. */ |