diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-05-05 07:15:29 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-05-05 07:15:29 +0000 |
commit | c0282c0642e99b375ab14fd343aa537445cd72a4 (patch) | |
tree | 2fb1716922b899555ab3bdcfbd95225d7e1e912d /sysdeps/alpha/dl-machine.h | |
parent | 61d357cae37d7d84afa50bdba12dcf177980e7bf (diff) | |
download | glibc-c0282c0642e99b375ab14fd343aa537445cd72a4.tar glibc-c0282c0642e99b375ab14fd343aa537445cd72a4.tar.gz glibc-c0282c0642e99b375ab14fd343aa537445cd72a4.tar.bz2 glibc-c0282c0642e99b375ab14fd343aa537445cd72a4.zip |
Update.
2000-05-05 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c (_dl_map_object_from_fd): Little of computation of
parameter to mprotect and for variable assignments.
2000-05-03 Jes Sorensen <jes@linuxcare.com>
* sysdeps/generic/ldsodefs.h (LOOKUP_VALUE_ADDRESS): Check the
validity of map before dereferencing it.
* elf/dl-reloc.c (RESOLVE_MAP): Define.
2000-05-02 Jes Sorensen <jes@linuxcare.com>
* elf/dl-runtime.c (fixup): Add the value returned in the symbol
lookup to the arguments to elf_machine_fixup_plt().
* sysdeps/ia64/dl-machine.h (elf_machine_fixup_plt): Add Link_map
of the symbol being resolved to input argument list and make the
function return the pointer to the reloc.
* sysdeps/alpha/dl-machine.h (elf_machine_fixup_plt): Change
return valuie to lookup_t and return the value.
* sysdeps/arm/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/generic/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/i386/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/m68k/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_fixup_plt): Likewise.
* sysdeps/powerpc/dl-machine.h (elf_machine_fixup_plt): Likewise.
Make it an inline function returning value after calling
__elf_machine_fixup_plt().
* elf/dl-sym.c (_dl_vsym): Use DL_SYMBOL_ADDRESS() to obtain the
symbol address.
* elf/dl-symbol.c (_dl_symbol_value): Use LOOKUP_VALUE_ADDRESS to
obtain the symbol address.
* sysdeps/generic/ldsodefs.h: Add generic DL_SYMBOL_ADDRESS() macro
depending on the definition of ELF_FUNCTION_PTR_IS_SPECIAL.
* sysdeps/ia64/dl-machine.h: Add DL_SYMBOL_ADDRESS() macro calling
_dl_symbol_address() - this way DL_SYMBOL_ADDRESS() turns into an
inline on non ia64.
2000-04-28 Jes Sorensen <jes@linuxcare.com>
* elf/dl-runtime.c (fixup): Use the portable macros to get the
symbol address of an object.
* elf/dl-runtime.c (fixup-profile): Use the portable macros to get
the symbol address of an object.
* elf/dl-libc.c (struct do_dlsym_args): Change loadbase to a lookup_t.
* elf/dl-lookup.c (_dl_lookup_symbol): Likewise.
(_dl_lookup_symbol_skip): Likewise.
(_dl_lookup_versioned_symbol): Likewise.
(_dl_lookup_versioned_symbol_skip): Likewise.
2000-04-27 Jes Sorensen <jes@linuxcare.com>
* elf/rtld.c (_dl_start): Get the function pointer return address
via _dl_start_address for architectures that need a function
pointer descriptor rather than just a pointer (ia64).
* sysdeps/generic/dl-lookupcfg.h: New file.
* sysdeps/ia64/dl-lookupcfg.h: New file.
* sysdeps/ia64/dl-machine.h: New file.
* sysdeps/ia64/dl-symaddr.c: New file.
* sysdeps/ia64/dl-fptr.c: New file.
* elf/elf.h: Add IA-64 specific definitions.
Diffstat (limited to 'sysdeps/alpha/dl-machine.h')
-rw-r--r-- | sysdeps/alpha/dl-machine.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index 7e28d54c20..814e3552f1 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -68,7 +68,7 @@ elf_machine_load_address (void) are usually many many terabytes away. */ Elf64_Addr dot; - long zero_disp; + long int zero_disp; asm("br %0, 1f\n\t" ".weak __load_address_undefined\n\t" @@ -119,7 +119,7 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile) /* If the first instruction of the plt entry is not "br $28, plt0", we cannot do lazy relocation. */ - lazy = (*(unsigned *)(plt + 32) == 0xc39ffff7); + lazy = (*(unsigned int *)(plt + 32) == 0xc39ffff7); } return lazy; @@ -363,13 +363,14 @@ $fixup_stack: /* Fix up the instructions of a PLT entry to invoke the function rather than the dynamic linker. */ -static inline void -elf_machine_fixup_plt(struct link_map *l, const Elf64_Rela *reloc, - Elf64_Addr *got_addr, Elf64_Addr value) +static inline Elf64_Addr +elf_machine_fixup_plt (struct link_map *l, lookup_t t, + const Elf64_Rela *reloc, + Elf64_Addr *got_addr, Elf64_Addr value) { const Elf64_Rela *rela_plt; Elf64_Word *plte; - long edisp; + long int edisp; /* Store the value we are going to load. */ *got_addr = value; @@ -381,7 +382,7 @@ elf_machine_fixup_plt(struct link_map *l, const Elf64_Rela *reloc, plte += 3 * (reloc - rela_plt); /* Find the displacement from the plt entry to the function. */ - edisp = (long)(value - (Elf64_Addr)&plte[3]) / 4; + edisp = (long int) (value - (Elf64_Addr)&plte[3]) / 4; if (edisp >= -0x100000 && edisp < 0x100000) { @@ -391,7 +392,7 @@ elf_machine_fixup_plt(struct link_map *l, const Elf64_Rela *reloc, int hi, lo; hi = value - (Elf64_Addr)&plte[0]; - lo = (short)hi; + lo = (short int) hi; hi = (hi - lo) >> 16; /* Emit "lda $27,lo($27)" */ @@ -436,6 +437,8 @@ elf_machine_fixup_plt(struct link_map *l, const Elf64_Rela *reloc, This will be taken care of in _dl_runtime_resolve. If instead we are doing this as part of non-lazy startup relocation, that bit of code hasn't made it into Icache yet, so there's nothing to clean up. */ + + return value; } /* Return the final value of a plt relocation. */ @@ -459,7 +462,7 @@ elf_machine_rela (struct link_map *map, const struct r_found_version *version, Elf64_Addr *const reloc_addr) { - unsigned long const r_type = ELF64_R_TYPE (reloc->r_info); + unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info); #ifndef RTLD_BOOTSTRAP /* This is defined in rtld.c, but nowhere in the static libc.a; make the @@ -525,7 +528,7 @@ elf_machine_lazy_rel (struct link_map *map, Elf64_Addr l_addr, const Elf64_Rela *reloc) { Elf64_Addr * const reloc_addr = (void *)(l_addr + reloc->r_offset); - unsigned long const r_type = ELF64_R_TYPE (reloc->r_info); + unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info); if (r_type == R_ALPHA_JMP_SLOT) { |