diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-07-01 05:19:18 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-07-01 05:19:18 +0000 |
commit | 5e087c7152841153da9c696df8596684e359c755 (patch) | |
tree | cae5f5ecce14411ed79627adffc0661b94fa1e4a /sysdeps/alpha/dl-machine.h | |
parent | b856f875e8b72c48ef9b983b702f614615fc80b3 (diff) | |
download | glibc-5e087c7152841153da9c696df8596684e359c755.tar.gz glibc-5e087c7152841153da9c696df8596684e359c755.tar.xz glibc-5e087c7152841153da9c696df8596684e359c755.zip |
Update.
* assert/Depend: Add localedata. * assert/Makefile (test-assert-ENV): New. Define LANGUAGE=C. (test-assert-perr-ENV): New. Define LANGUAGE=C. * sysdeps/alpha/dl-machine.h (elf_machine_rela) [r_type == R_ALPHA_REFQUAD]: Use memcpy to load and store value from relocation address to prevent unaligned trap. Suggested by Richard Henderson <rth@cygnus.com>. 2000-06-30 Jakub Jelinek <jakub@redhat.com> * io/sys/stat.h (stat64, lstat64, fstat64): Don't define inlines if redirecting and either redirection is done using defines or not optimizing. 2000-06-30 Ulrich Drepper <drepper@redhat.com>
Diffstat (limited to 'sysdeps/alpha/dl-machine.h')
-rw-r--r-- | sysdeps/alpha/dl-machine.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index e20493b33f..a7f13e0192 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -500,7 +500,12 @@ elf_machine_rela (struct link_map *map, elf_machine_fixup_plt (map, NULL, reloc, reloc_addr, sym_value); else if (r_type == R_ALPHA_REFQUAD) { - sym_value += *reloc_addr; + void *reloc_addr_1 = reloc_addr; + Elf64_Addr reloc_addr_val; + + /* Load value without causing unaligned trap. */ + memcpy (&reloc_addr_val, reloc_addr_1, 8); + sym_value += reloc_addr_val; #ifndef RTLD_BOOTSTRAP if (map == &_dl_rtld_map) { @@ -516,7 +521,8 @@ elf_machine_rela (struct link_map *map, sym_value -= reloc->r_addend; } #endif - *reloc_addr = sym_value; + /* Store value without causing unaligned trap. */ + memcpy (reloc_addr_1, &sym_value, 8); } else _dl_reloc_bad_type (map, r_type, 0); |