diff options
author | Ulrich Drepper <drepper@redhat.com> | 2002-03-12 00:38:37 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2002-03-12 00:38:37 +0000 |
commit | 89a3dd449a782f369c9ba2af1e7933b69323c4ea (patch) | |
tree | cef4a0789e79b03cff6328d0597c4f6e7e1a9c72 /sysdeps/sparc/sparc64/dl-machine.h | |
parent | 14b2815be917c71d1310df760314581fa5073d07 (diff) | |
download | glibc-89a3dd449a782f369c9ba2af1e7933b69323c4ea.tar.gz glibc-89a3dd449a782f369c9ba2af1e7933b69323c4ea.tar.xz glibc-89a3dd449a782f369c9ba2af1e7933b69323c4ea.zip |
Update.
2002-03-11 Jakub Jelinek <jakub@redhat.com> * sysdeps/i386/elf/configure.in: Fix comment. * sysdeps/sparc/sparc64/configure.in: New. * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_load_address): Fix if .dynamic comes before .got. * config.h.in (SPARC64_DYNAMIC_BEFORE_GOT): Add. * sysdeps/sparc/sparc64/hp-timing.h (HP_TIMING_DIFF, HP_TIMING_ACCUM): Fix typos. * string/strfry.c: Add some more randomness to the seed. Patch by James A Morrison <ja2morri@student.math.uwaterloo.ca>. Patch by James Antill <james@anqd.org> [PR libc/2787].
Diffstat (limited to 'sysdeps/sparc/sparc64/dl-machine.h')
-rw-r--r-- | sysdeps/sparc/sparc64/dl-machine.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index 8d9bf7aa67..4ced7deef8 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -77,14 +77,19 @@ elf_machine_load_address (void) The following method relies on the fact that sparcv9 ABI maximal page length is 1MB and all ELF segments on sparc64 are aligned - to 1MB. Also, it relies on _DYNAMIC coming after _GLOBAL_OFFSET_TABLE_ - and assumes that they both fit into the first 1MB of the RW segment. - This should be true for some time unless ld.so grows too much, at the - moment the whole stripped ld.so is 128KB and only smaller part of that - is in the RW segment. */ - + to 1MB. Also assumes that they both fit into the first 1MB of + the RW segment. This should be true for some time unless ld.so + grows too much, at the moment the whole stripped ld.so is 128KB + and only smaller part of that is in the RW segment. */ + +#ifdef SPARC64_DYNAMIC_BEFORE_GOT + /* If _DYNAMIC comes before _GLOBAL_OFFSET_TABLE_... */ + return ((Elf64_Addr)elf_pic_register - *elf_pic_register) & ~0xfffffUL; +#else + /* ... and if _DYNAMIC comes after _GLOBAL_OFFSET_TABLE_. */ return ((Elf64_Addr)elf_pic_register - *elf_pic_register + 0xfffff) & ~0xfffffUL; +#endif } /* We have 4 cases to handle. And we code different code sequences |