glibc/sysdeps/powerpc/powerpc32/dl-machine.c

615 lines
20 KiB
C
Raw Normal View History

/* Machine-dependent ELF dynamic relocation functions. PowerPC version.
Copyright (C) 1995-2012 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
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
#include <unistd.h>
#include <string.h>
#include <sys/param.h>
#include <link.h>
Update. 2000-03-23 Andreas Jaeger <aj@suse.de> * elf/dl-addr.c: Adjust include paths for ldsodefs location change. * elf/dl-debug.c: Likewise. * elf/dl-deps.c: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-minimal.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-preinit.c: Likewise. * elf/dl-profile.c: Likewise. * elf/dl-profstub.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-symbol.c: Likewise. * elf/dl-version.c: Likewise. * elf/rtld.c: Likewise. * elf/sprof.c: Likewise. * sysdeps/generic/dl-cache.c: Likewise. * sysdeps/generic/dl-origin.c: Likewise. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/generic/elf/backtracesyms.c: Likewise. * sysdeps/generic/elf/backtracesymsfd.c: Likewise. * sysdeps/generic/libc-start.c: Likewise. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * sysdeps/powerpc/dl-machine.c: Likewise. * sysdeps/powerpc/elf/libc-start.c: Likewise. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. * elf/ldsodefs.h: Move file to ... * sysdeps/generic/ldsodefs.h: ... here. * sysdeps/generic/ldsodefs.h: Add definition for D_PTR. * sysdeps/mips/elf/ldsodefs.h: New file. * elf/dl-version.c (match_symbol): Use D_PTR to access relocated entries in l_info. (_dl_check_map_versions): Likewise. * elf/dl-reloc.c (_dl_relocate_object): Likewise. * elf/dl-load.c (_dl_init_paths): Likewise. (_dl_map_object): Likewise. * elf/dynamic-link.h (_ELF_DYNAMIC_DO_RELOC): Likewise. (elf_get_dynamic_info): Likewise. * elf/do-lookup.h (FCT): Likewise. * elf/do-rel.h (elf_dynamic_do_rel): Likewise. * elf/dl-deps.c (_dl_map_object_deps): Likewise. * elf/dl-addr.c (_dl_addr): Likewise. * elf/dl-runtime.c (profile_fixup): Likewise. (fixup): Likewise. * elf/dl-init.c (_dl_init_next): Likewise. * sysdeps/generic/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/unix/sysv/linux/i386/dl-librecon.h (DISTINGUISH_LIB_VERSIONS): Likewise. * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rel): Likewise. * elf/dynamic-link.h (elf_get_dynamic_info): Only change l_info for writable dynamic section.
2000-03-23 20:31:46 +00:00
#include <ldsodefs.h>
#include <elf/dynamic-link.h>
#include <dl-machine.h>
#include <_itoa.h>
/* The value __cache_line_size is defined in dl-sysdep.c and is initialised
by _dl_sysdep_start via DL_PLATFORM_INIT. */
extern int __cache_line_size attribute_hidden;
/* Because ld.so is now versioned, these functions can be in their own file;
no relocations need to be done to call them.
Of course, if ld.so is not versioned... */
#if defined SHARED && !(DO_VERSIONING - 0)
#error This will not work with versioning turned off, sorry.
#endif
/* Stuff for the PLT. */
#define PLT_INITIAL_ENTRY_WORDS 18
#define PLT_LONGBRANCH_ENTRY_WORDS 0
#define PLT_TRAMPOLINE_ENTRY_WORDS 6
#define PLT_DOUBLE_SIZE (1<<13)
#define PLT_ENTRY_START_WORDS(entry_number) \
(PLT_INITIAL_ENTRY_WORDS + (entry_number)*2 \
+ ((entry_number) > PLT_DOUBLE_SIZE \
? ((entry_number) - PLT_DOUBLE_SIZE)*2 \
: 0))
#define PLT_DATA_START_WORDS(num_entries) PLT_ENTRY_START_WORDS(num_entries)
/* Macros to build PowerPC opcode words. */
#define OPCODE_ADDI(rd,ra,simm) \
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
(0x38000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
#define OPCODE_ADDIS(rd,ra,simm) \
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
(0x3c000000 | (rd) << 21 | (ra) << 16 | ((simm) & 0xffff))
#define OPCODE_ADD(rd,ra,rb) \
(0x7c000214 | (rd) << 21 | (ra) << 16 | (rb) << 11)
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
#define OPCODE_B(target) (0x48000000 | ((target) & 0x03fffffc))
#define OPCODE_BA(target) (0x48000002 | ((target) & 0x03fffffc))
#define OPCODE_BCTR() 0x4e800420
#define OPCODE_LWZ(rd,d,ra) \
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
(0x80000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
#define OPCODE_LWZU(rd,d,ra) \
(0x84000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
#define OPCODE_MTCTR(rd) (0x7C0903A6 | (rd) << 21)
#define OPCODE_RLWINM(ra,rs,sh,mb,me) \
(0x54000000 | (rs) << 21 | (ra) << 16 | (sh) << 11 | (mb) << 6 | (me) << 1)
#define OPCODE_LI(rd,simm) OPCODE_ADDI(rd,0,simm)
#define OPCODE_ADDIS_HI(rd,ra,value) \
OPCODE_ADDIS(rd,ra,((value) + 0x8000) >> 16)
#define OPCODE_LIS_HI(rd,value) OPCODE_ADDIS_HI(rd,0,value)
#define OPCODE_SLWI(ra,rs,sh) OPCODE_RLWINM(ra,rs,sh,0,31-sh)
#define PPC_DCBST(where) asm volatile ("dcbst 0,%0" : : "r"(where) : "memory")
#define PPC_SYNC asm volatile ("sync" : : : "memory")
#define PPC_ISYNC asm volatile ("sync; isync" : : : "memory")
#define PPC_ICBI(where) asm volatile ("icbi 0,%0" : : "r"(where) : "memory")
#define PPC_DIE asm volatile ("tweq 0,0")
/* Use this when you've modified some code, but it won't be in the
instruction fetch queue (or when it doesn't matter if it is). */
#define MODIFIED_CODE_NOQUEUE(where) \
do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); } while (0)
/* Use this when it might be in the instruction queue. */
#define MODIFIED_CODE(where) \
do { PPC_DCBST(where); PPC_SYNC; PPC_ICBI(where); PPC_ISYNC; } while (0)
/* The idea here is that to conform to the ABI, we are supposed to try
to load dynamic objects between 0x10000 (we actually use 0x40000 as
the lower bound, to increase the chance of a memory reference from
a null pointer giving a segfault) and the program's load address;
this may allow us to use a branch instruction in the PLT rather
than a computed jump. The address is only used as a preference for
mmap, so if we get it wrong the worst that happens is that it gets
mapped somewhere else. */
ElfW(Addr)
__elf_preferred_address (struct link_map *loader, size_t maplength,
ElfW(Addr) mapstartpref)
{
ElfW(Addr) low, high;
struct link_map *l;
Lmid_t nsid;
/* If the object has a preference, load it there! */
if (mapstartpref != 0)
return mapstartpref;
/* Otherwise, quickly look for a suitable gap between 0x3FFFF and
0x70000000. 0x3FFFF is so that references off NULL pointers will
cause a segfault, 0x70000000 is just paranoia (it should always
be superceded by the program's load address). */
low = 0x0003FFFF;
high = 0x70000000;
for (nsid = 0; nsid < DL_NNS; ++nsid)
for (l = GL(dl_ns)[nsid]._ns_loaded; l; l = l->l_next)
{
ElfW(Addr) mapstart, mapend;
mapstart = l->l_map_start & ~(GLRO(dl_pagesize) - 1);
mapend = l->l_map_end | (GLRO(dl_pagesize) - 1);
assert (mapend > mapstart);
/* Prefer gaps below the main executable, note that l ==
_dl_loaded does not work for static binaries loading
e.g. libnss_*.so. */
if ((mapend >= high || l->l_type == lt_executable)
&& high >= mapstart)
high = mapstart;
else if (mapend >= low && low >= mapstart)
low = mapend;
else if (high >= mapend && mapstart >= low)
{
if (high - mapend >= mapstart - low)
low = mapend;
else
high = mapstart;
}
}
high -= 0x10000; /* Allow some room between objects. */
maplength = (maplength | (GLRO(dl_pagesize) - 1)) + 1;
if (high <= low || high - low < maplength )
return 0;
return high - maplength; /* Both high and maplength are page-aligned. */
}
/* Set up the loaded object described by L so its unrelocated PLT
entries will jump to the on-demand fixup code in dl-runtime.c.
Also install a small trampoline to be used by entries that have
been relocated to an address too far away for a single branch. */
/* There are many kinds of PLT entries:
(1) A direct jump to the actual routine, either a relative or
absolute branch. These are set up in __elf_machine_fixup_plt.
(2) Short lazy entries. These cover the first 8192 slots in
the PLT, and look like (where 'index' goes from 0 to 8191):
li %r11, index*4
b &plt[PLT_TRAMPOLINE_ENTRY_WORDS+1]
(3) Short indirect jumps. These replace (2) when a direct jump
wouldn't reach. They look the same except that the branch
is 'b &plt[PLT_LONGBRANCH_ENTRY_WORDS]'.
(4) Long lazy entries. These cover the slots when a short entry
won't fit ('index*4' overflows its field), and look like:
lis %r11, %hi(index*4 + &plt[PLT_DATA_START_WORDS])
lwzu %r12, %r11, %lo(index*4 + &plt[PLT_DATA_START_WORDS])
b &plt[PLT_TRAMPOLINE_ENTRY_WORDS]
bctr
(5) Long indirect jumps. These replace (4) when a direct jump
wouldn't reach. They look like:
lis %r11, %hi(index*4 + &plt[PLT_DATA_START_WORDS])
lwz %r12, %r11, %lo(index*4 + &plt[PLT_DATA_START_WORDS])
mtctr %r12
bctr
(6) Long direct jumps. These are used when thread-safety is not
required. They look like:
lis %r12, %hi(finaladdr)
addi %r12, %r12, %lo(finaladdr)
mtctr %r12
bctr
The lazy entries, (2) and (4), are set up here in
__elf_machine_runtime_setup. (1), (3), and (5) are set up in
__elf_machine_fixup_plt. (1), (3), and (6) can also be constructed
in __process_machine_rela.
The reason for the somewhat strange construction of the long
entries, (4) and (5), is that we need to ensure thread-safety. For
(1) and (3), this is obvious because only one instruction is
changed and the PPC architecture guarantees that aligned stores are
atomic. For (5), this is more tricky. When changing (4) to (5),
2011-04-23 01:34:32 +00:00
the `b' instruction is first changed to `mtctr'; this is safe
and is why the `lwzu' instruction is not just a simple `addi'.
Once this is done, and is visible to all processors, the `lwzu' can
safely be changed to a `lwz'. */
int
__elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
{
if (map->l_info[DT_JMPREL])
{
Elf32_Word i;
Update. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): Use D_PTR to access relocated entries in l_info. (elf_machine_rela): Likewise. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): Likewise. (__elf_machine_fixup_plt): Likewise. (__process_machine_rela): Likewise. * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rel): Likewise. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_fixup_plt): Likewise. (elf_machine_rela): Likewise. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. * sysdeps/unix/sysv/linux/semctl.c: Likewise. * sysdeps/unix/sysv/linux/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat macros, remove K&R prototypes.
2000-03-31 05:16:38 +00:00
Elf32_Word *plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
Elf32_Word num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
/ sizeof (Elf32_Rela));
Elf32_Word rel_offset_words = PLT_DATA_START_WORDS (num_plt_entries);
Elf32_Word data_words = (Elf32_Word) (plt + rel_offset_words);
Elf32_Word size_modified;
extern void _dl_runtime_resolve (void);
extern void _dl_prof_resolve (void);
/* Convert the index in r11 into an actual address, and get the
word at that address. */
plt[PLT_LONGBRANCH_ENTRY_WORDS] = OPCODE_ADDIS_HI (11, 11, data_words);
plt[PLT_LONGBRANCH_ENTRY_WORDS + 1] = OPCODE_LWZ (11, data_words, 11);
/* Call the procedure at that address. */
plt[PLT_LONGBRANCH_ENTRY_WORDS + 2] = OPCODE_MTCTR (11);
plt[PLT_LONGBRANCH_ENTRY_WORDS + 3] = OPCODE_BCTR ();
if (lazy)
{
Elf32_Word *tramp = plt + PLT_TRAMPOLINE_ENTRY_WORDS;
Elf32_Word dlrr;
Elf32_Word offset;
#ifndef PROF
dlrr = (Elf32_Word) (profile
? _dl_prof_resolve
: _dl_runtime_resolve);
if (profile && GLRO(dl_profile) != NULL
&& _dl_name_match_p (GLRO(dl_profile), map))
/* This is the object we are looking for. Say that we really
want profiling and the timers are started. */
Update. * sysdeps/generic/ldsodefs.h: Add _dl_load_lock, _dl_lazy, _dl_dynamic_weak, _dl_fpu_control, _dl_cpuclock_offset, and _dl_debug_fd to rtld_global. * elf/Versions: Likewise. * elf/dl-close.c: Likewise. * elf/dl-iteratephdr.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-misc.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-support.c: Likewise. * elf/do-lookup.h: Likewise. * elf/rtld.c: Likewise. * sysdeps/generic/dl-cache.c: Likewise. * sysdeps/generic/dl-sysdep.c: Likewise. * sysdeps/ia64/Versions: Likewise. * sysdeps/unix/clock_gettime.c: Likewise. * sysdeps/unix/clock_settime.c: Likewise. * sysdeps/unix/sysv/linux/init-first.c: Likewise. * sysdeps/sparc/Versions: Removed. * sysdeps/i386/i686/Versions : Removed. * sysdeps/x86_64/Versions: Removed. * configure.in: Define HAVE_PROTECTED if .protected is available. * config.h.in: Add entry for HAVE_PROTECTED. 2002-01-31 Jakub Jelinek <jakub@redhat.com. * sysdeps/alpha/dl-machine.h: Move global variables for SHARED code in struct _rtld_global. Export this struct, remove all exports for the signal variables. * sysdeps/arm/dl-machine: Likewise. * sysdeps/generic/dl-origin: Likewise. * sysdeps/generic/dl-sysdep: Likewise. * sysdeps/generic/dl-cache: Likewise. * sysdeps/hppa/dl-fptr: Likewise. * sysdeps/hppa/dl-machine: Likewise. * sysdeps/cris/dl-machine: Likewise. * sysdeps/i386/dl-machine: Likewise. * sysdeps/ia64/dl-machine: Likewise. * sysdeps/m68k/dl-machine: Likewise. * sysdeps/mach/hurd/dl-sysdep: Likewise. * sysdeps/mips/mips64/dl-machine: Likewise. * sysdeps/mips/dl-machine: Likewise. * sysdeps/powerpc/elf/libc-start: Likewise. * sysdeps/powerpc/dl-machine: Likewise. * sysdeps/powerpc/dl-start: Likewise. * sysdeps/sparc/sparc32/dl-machine: Likewise. * sysdeps/sparc/sparc64/dl-machine: Likewise. * sysdeps/sh/dl-machine: Likewise. * sysdeps/s390/s390-32/dl-machine: Likewise. * sysdeps/s390/s390-64/dl-machine: Likewise. * sysdeps/unix/sysv/aix/libc-start: Likewise. * sysdeps/unix/sysv/aix/start-libc: Likewise. * sysdeps/unix/sysv/linux/ia64/dl-static: Likewise. * sysdeps/unix/sysv/linux/m68k/getpagesize: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getpagesize: Likewise. * sysdeps/x86_64/dl-machine: Likewise. 2002-01-31 Ulrich Drepper <drepper@redhat.com>
2002-02-01 01:33:04 +00:00
GL(dl_profile_map) = map;
#else
dlrr = (Elf32_Word) _dl_runtime_resolve;
#endif
/* For the long entries, subtract off data_words. */
tramp[0] = OPCODE_ADDIS_HI (11, 11, -data_words);
tramp[1] = OPCODE_ADDI (11, 11, -data_words);
/* Multiply index of entry by 3 (in r11). */
tramp[2] = OPCODE_SLWI (12, 11, 1);
tramp[3] = OPCODE_ADD (11, 12, 11);
if (dlrr <= 0x01fffffc || dlrr >= 0xfe000000)
{
/* Load address of link map in r12. */
tramp[4] = OPCODE_LI (12, (Elf32_Word) map);
tramp[5] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map);
/* Call _dl_runtime_resolve. */
tramp[6] = OPCODE_BA (dlrr);
}
else
{
/* Get address of _dl_runtime_resolve in CTR. */
tramp[4] = OPCODE_LI (12, dlrr);
tramp[5] = OPCODE_ADDIS_HI (12, 12, dlrr);
tramp[6] = OPCODE_MTCTR (12);
/* Load address of link map in r12. */
tramp[7] = OPCODE_LI (12, (Elf32_Word) map);
tramp[8] = OPCODE_ADDIS_HI (12, 12, (Elf32_Word) map);
/* Call _dl_runtime_resolve. */
tramp[9] = OPCODE_BCTR ();
}
/* Set up the lazy PLT entries. */
offset = PLT_INITIAL_ENTRY_WORDS;
i = 0;
while (i < num_plt_entries && i < PLT_DOUBLE_SIZE)
{
plt[offset ] = OPCODE_LI (11, i * 4);
plt[offset+1] = OPCODE_B ((PLT_TRAMPOLINE_ENTRY_WORDS + 2
- (offset+1))
* 4);
i++;
offset += 2;
}
while (i < num_plt_entries)
{
plt[offset ] = OPCODE_LIS_HI (11, i * 4 + data_words);
plt[offset+1] = OPCODE_LWZU (12, i * 4 + data_words, 11);
plt[offset+2] = OPCODE_B ((PLT_TRAMPOLINE_ENTRY_WORDS
- (offset+2))
* 4);
plt[offset+3] = OPCODE_BCTR ();
i++;
offset += 4;
}
}
/* Now, we've modified code. We need to write the changes from
the data cache to a second-level unified cache, then make
sure that stale data in the instruction cache is removed.
(In a multiprocessor system, the effect is more complex.)
Most of the PLT shouldn't be in the instruction cache, but
there may be a little overlap at the start and the end.
Assumes that dcbst and icbi apply to lines of 16 bytes or
more. Current known line sizes are 16, 32, and 128 bytes.
The following gets the __cache_line_size, when available. */
/* Default minimum 4 words per cache line. */
int line_size_words = 4;
if (lazy && __cache_line_size != 0)
/* Convert bytes to words. */
line_size_words = __cache_line_size / 4;
size_modified = lazy ? rel_offset_words : 6;
for (i = 0; i < size_modified; i += line_size_words)
PPC_DCBST (plt + i);
PPC_DCBST (plt + size_modified - 1);
PPC_SYNC;
for (i = 0; i < size_modified; i += line_size_words)
PPC_ICBI (plt + i);
PPC_ICBI (plt + size_modified - 1);
PPC_ISYNC;
}
return lazy;
}
Elf32_Addr
2009-10-30 07:39:38 +00:00
__elf_machine_fixup_plt (struct link_map *map,
Elf32_Addr *reloc_addr, Elf32_Addr finaladdr)
{
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
if (delta << 6 >> 6 == delta)
*reloc_addr = OPCODE_B (delta);
else if (finaladdr <= 0x01fffffc || finaladdr >= 0xfe000000)
*reloc_addr = OPCODE_BA (finaladdr);
else
{
Elf32_Word *plt, *data_words;
Elf32_Word index, offset, num_plt_entries;
num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
/ sizeof(Elf32_Rela));
Update. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): Use D_PTR to access relocated entries in l_info. (elf_machine_rela): Likewise. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): Likewise. (__elf_machine_fixup_plt): Likewise. (__process_machine_rela): Likewise. * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rel): Likewise. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_fixup_plt): Likewise. (elf_machine_rela): Likewise. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. * sysdeps/unix/sysv/linux/semctl.c: Likewise. * sysdeps/unix/sysv/linux/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat macros, remove K&R prototypes.
2000-03-31 05:16:38 +00:00
plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
offset = reloc_addr - plt;
index = (offset - PLT_INITIAL_ENTRY_WORDS)/2;
data_words = plt + PLT_DATA_START_WORDS (num_plt_entries);
reloc_addr += 1;
if (index < PLT_DOUBLE_SIZE)
{
data_words[index] = finaladdr;
PPC_SYNC;
*reloc_addr = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - (offset+1))
* 4);
}
else
{
index -= (index - PLT_DOUBLE_SIZE)/2;
data_words[index] = finaladdr;
PPC_SYNC;
reloc_addr[1] = OPCODE_MTCTR (12);
MODIFIED_CODE_NOQUEUE (reloc_addr + 1);
PPC_SYNC;
reloc_addr[0] = OPCODE_LWZ (12,
(Elf32_Word) (data_words + index), 11);
}
}
MODIFIED_CODE (reloc_addr);
return finaladdr;
}
void
_dl_reloc_overflow (struct link_map *map,
const char *name,
Elf32_Addr *const reloc_addr,
const Elf32_Sym *refsym)
{
char buffer[128];
char *t;
t = stpcpy (buffer, name);
t = stpcpy (t, " relocation at 0x00000000");
_itoa_word ((unsigned) reloc_addr, t, 16, 0);
if (refsym)
{
const char *strtab;
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
t = stpcpy (t, " for symbol `");
t = stpcpy (t, strtab + refsym->st_name);
t = stpcpy (t, "'");
}
t = stpcpy (t, " out of range");
_dl_signal_error (0, map->l_name, NULL, buffer);
}
void
__process_machine_rela (struct link_map *map,
const Elf32_Rela *reloc,
struct link_map *sym_map,
const Elf32_Sym *sym,
const Elf32_Sym *refsym,
Elf32_Addr *const reloc_addr,
Elf32_Addr const finaladdr,
int rinfo)
{
switch (rinfo)
{
case R_PPC_NONE:
return;
case R_PPC_ADDR32:
case R_PPC_GLOB_DAT:
case R_PPC_RELATIVE:
*reloc_addr = finaladdr;
return;
2009-10-30 07:39:38 +00:00
case R_PPC_IRELATIVE:
*reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) ();
return;
case R_PPC_UADDR32:
((char *) reloc_addr)[0] = finaladdr >> 24;
((char *) reloc_addr)[1] = finaladdr >> 16;
((char *) reloc_addr)[2] = finaladdr >> 8;
((char *) reloc_addr)[3] = finaladdr;
break;
case R_PPC_ADDR24:
if (__builtin_expect (finaladdr > 0x01fffffc && finaladdr < 0xfe000000, 0))
_dl_reloc_overflow (map, "R_PPC_ADDR24", reloc_addr, refsym);
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
*reloc_addr = (*reloc_addr & 0xfc000003) | (finaladdr & 0x3fffffc);
break;
case R_PPC_ADDR16:
if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
_dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, refsym);
*(Elf32_Half*) reloc_addr = finaladdr;
break;
case R_PPC_UADDR16:
if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
_dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, refsym);
((char *) reloc_addr)[0] = finaladdr >> 8;
((char *) reloc_addr)[1] = finaladdr;
break;
case R_PPC_ADDR16_LO:
*(Elf32_Half*) reloc_addr = finaladdr;
break;
case R_PPC_ADDR16_HI:
*(Elf32_Half*) reloc_addr = finaladdr >> 16;
break;
case R_PPC_ADDR16_HA:
*(Elf32_Half*) reloc_addr = (finaladdr + 0x8000) >> 16;
break;
case R_PPC_ADDR14:
case R_PPC_ADDR14_BRTAKEN:
case R_PPC_ADDR14_BRNTAKEN:
if (__builtin_expect (finaladdr > 0x7fff && finaladdr < 0xffff8000, 0))
_dl_reloc_overflow (map, "R_PPC_ADDR14", reloc_addr, refsym);
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
*reloc_addr = (*reloc_addr & 0xffff0003) | (finaladdr & 0xfffc);
if (rinfo != R_PPC_ADDR14)
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
*reloc_addr = ((*reloc_addr & 0xffdfffff)
| ((rinfo == R_PPC_ADDR14_BRTAKEN)
^ (finaladdr >> 31)) << 21);
break;
case R_PPC_REL24:
{
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
if (delta << 6 >> 6 != delta)
_dl_reloc_overflow (map, "R_PPC_REL24", reloc_addr, refsym);
Update. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * iconvdata/Makefile: Use rpath $ORIGIN for modules which use any of the conversion libraries. * include/features.h: Mention latest extensions in _POSIX_C_SOURCE description. * libio/genops.c (list_all_lock): New variable. (_IO_un_link, _IO_link_in): Acquire lock before modifying _IO_list_all. [PR libc/911]. * sysdeps/i386/i686/strtok.s: Add missing cld. * sysdeps/i386/i686/mempcpy.S: New file. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> Suppress parentheses warnings: * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): here, * sysdeps/powerpc/dl-machine.c: here, * sysdeps/powerpc/fclrexcpt.c (feclearexcept): here, * sysdeps/powerpc/fesetround.c (fesetround): here, * sysdeps/powerpc/feupdateenv.c (feupdateenv): here, * sysdeps/powerpc/fraiseexcpt.c (feraiseexcept): here, * sysdeps/powerpc/fsetexcptflg.c (fesetexceptflag): here, * sysdeps/powerpc/s_rint.c (__rint): here, * sysdeps/powerpc/s_rintf.c (__rintf): here, * sysdeps/powerpc/w_sqrt.c (__sqrt): here, * sysdeps/powerpc/w_sqrtf.c (__sqrtf): and here. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * wcsmbs/wcstold.c [__NO_LONG_DOUBLE_MATH]: Include wchar.h. * wcsmbs/wcstold_l.c [__NO_LONG_DOUBLE_MATH]: Likewise. Also define appropropriate prototypes, correct procedure names. 1998-12-30 Geoff Keating <geoffk@ozemail.com.au> * sysdeps/generic/crypt-entry.c: Prototype __crypt_r, suppress warning. (__crypt_r): Add __restrict. * sysdeps/generic/crypt.h: Remove internal routine. Add __restrict. 1998-12-31 Ulrich Drepper <drepper@cygnus.com> * stdlib/longlong.h: Add missing #else in SPARC definitions. 1998-12-30 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org>: * sysdeps/unix/sysv/linux/mips/sgidefs.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/asm.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/sys/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/regdef.h: Removed. * sysdeps/unix/sysv/linux/mips/fpregdef.h: Removed. * sysdeps/unix/sysv/linux/mips/Makefile: Remove delete files. * sysdeps/unix/sysv/linux/mips/Dist: Remove deleted files. * sysdeps/mips/sys/fpregdef.h: New files, enhanced versions of deleted linux specific files. * sysdeps/mips/sys/asm.h: Likewise. * sysdeps/mips/sgidefs.h: Likewise. * sysdeps/mips/fpregdef.h: Likewise. * sysdeps/mips/regdef.h: Likewise. * sysdeps/mips/Makefile: Add new headers. * sysdeps/mips/Dist: Add new files. * sysdeps/mips/fpu_control.h (_FPU_DEFAULT): Change value. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * iconvdata/Makefile: Remove variable assignments and rules that are now auto-generated. Include $(objpfx)iconv-rules instead. Btw, that removes a few typos. (charmaps): New variable. ($(objpfx)iconv-rules): New target. (gen-8bit-modules): Renamed from sed-generated-headers, remove .h suffixes. (gen-8bit-gap-modules): Renamed from awk-generated-headers, remove .h suffixes. (gen-special-modules): New variable. (generated-modules): New variable. (headers): Use it. (before-compile): Likewise. (generated): Likewise, and add iconv-rules. * iconvdata/euc-cn.c: Renamed from euccn.c. * iconvdata/euc-jp.c: Renamed from eucjp.c. * iconvdata/euc-kr.c: Renamed from euckr.c. * iconvdata/euc-tw.c: Renamed from euctw.c. * iconvdata/iso_6937.c: Renamed from iso6937.c. * iconvdata/iso_6937-2.c: Renamed from iso6937-2.c. * iconvdata/t.61.c: Renamed from t61.c. * iconvdata/Makefile (distribute): Adjusted for those renames. Remove $(objpfx) from names. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/generic/hp-timing.h: Fix comment. * sysdeps/generic/dl-hash.h: Likewise. * sysdeps/i386/i686/hp-timing.h: Likewise. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * posix/fnmatch.c (fnmatch): Always pass unsigned char values to FOLD macro. 1998-12-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * nss/db-Makefile ($(VAR_DB)/shadow.db): Fix last change. 1998-12-29 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Sync with current Linux 2.1.132 kernel sources. 1998-12-28 Andreas Jaeger <aj@arthur.rhein-neckar.de> Patches by Ralf Baechle <ralf@gnu.org> for Linux/MIPS: * sysdeps/unix/sysv/linux/mips/syscalls.list: Add ipc, change pread/pwrite and llseek calls. * sysdeps/unix/sysv/linux/mips/sysdep.S: New file. 1998-12-29 Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> * malloc/thread-m.h [_LIBC] : Fix for NO_THREADS case.
1998-12-31 18:19:19 +00:00
*reloc_addr = (*reloc_addr & 0xfc000003) | (delta & 0x3fffffc);
}
break;
case R_PPC_COPY:
if (sym == NULL)
/* This can happen in trace mode when an object could not be
found. */
return;
if (sym->st_size > refsym->st_size
|| (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
{
const char *strtab;
Update. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): Use D_PTR to access relocated entries in l_info. (elf_machine_rela): Likewise. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): Likewise. (__elf_machine_fixup_plt): Likewise. (__process_machine_rela): Likewise. * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rel): Likewise. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_fixup_plt): Likewise. (elf_machine_rela): Likewise. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. * sysdeps/unix/sysv/linux/semctl.c: Likewise. * sysdeps/unix/sysv/linux/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat macros, remove K&R prototypes.
2000-03-31 05:16:38 +00:00
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
_dl_error_printf ("\
%s: Symbol `%s' has different size in shared object, consider re-linking\n",
Update. 2002-03-01 Ulrich Drepper <drepper@redhat.com> * elf/Makefile (dl-routines): Add dl-origin. (elide-routines.os): Add dl-origin. * elf/Versions [ld] (GLIBC_PRIVATE): Add _dl_get_origin. * elf/dl-debug.c (_dl_debug_initialize): Add missing INTUSE around _dl_debug_state. * include/libc-symbols.c: Define attribute_hidden depending on HAVE_VISIBILITY_ATTRIBUTE. Add definition of INTVARDEF. * elf/dl-deps.c: Use INTUSE with __libc_enable_secure. * elf/dl-load.c: Likewise. * elf/rtld.c: Likewise. * include/unistd.h: Declare __libc_enable_secure_internal. * sysdeps/generic/dl-sysdep.c: Use INTVARDEF with __libc_enable_secure. Use INTUSE with __libc_enable_secure. * sysdeps/mach/hurd/dl-sysdep.c: Likewise. * elf/dl-deps.c: Use INTUSE with _dl_out_of_memory. * elf/dl-error.c: Likewise, * sysdeps/generic/ldsodefs.h: Declare _dl_out_of_memory_internal. * elf/dl-dst.h [_RTLD_GLOBAL]: Define _dl_get_origin to use INTUSE. * sysdeps/generic/dl-origin.c: Undefine _dl_get_origin macro before function definition. Use INTDEF with _dl_get_origin. * sysdeps/unix/sysv/linux/dl-origin.c: Likewise. * elf/dl-init.c: Use INTUSE with _dl_starting_up. * elf/rtld.c: Likewise. Use INTVARDEF for _dl_starting_up. * elf/dl-profile.c: Use INTDEF for _dl_mcount. * elf/dl-runtime.c: Use INTUSE with _dl_mcount. * sysdeps/generic/ldsodefs.h: Declare _dl_mcount_internal. * elf/dl-conflict.c: Use rtld_progrname instead of _dl_argv[0]. * elf/dl-deps.c: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-version.c: Likewise. * elf/do-lookup.h: Likewise. * sysdeps/arm/dl-machine.h: Likewise. * sysdeps/cris/dl-machine.h: Likewise. * sysdeps/hppa/dl-machine.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/powerpc/dl-machine.h: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/sh/dl-machine.h: Likewise. * sysdeps/sparc/sparc-32/dl-machine.h: Likewise. * sysdeps/sparc/sparc-64/dl-machine.h: Likewise. * sysdeps/x86_64/dl-machine.h: Likewise. * elf/rtld.c: Use INTDEF for _dl_argv. Use rtld_progrname instead of _dl_argv[0]. Use INTUSE with _dl_argv. * sysdeps/generic/dl-sysdep.c: Use INTUSE with _dl_argv. * sysdeps/generic/ldsodefs.h: Define rtld_progname macro.
2002-03-01 09:44:29 +00:00
rtld_progname ?: "<program name unknown>",
strtab + refsym->st_name);
}
memcpy (reloc_addr, (char *) finaladdr, MIN (sym->st_size,
refsym->st_size));
return;
case R_PPC_REL32:
*reloc_addr = finaladdr - (Elf32_Word) reloc_addr;
return;
case R_PPC_JMP_SLOT:
/* It used to be that elf_machine_fixup_plt was used here,
but that doesn't work when ld.so relocates itself
for the second time. On the bright side, there's
no need to worry about thread-safety here. */
{
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
if (delta << 6 >> 6 == delta)
*reloc_addr = OPCODE_B (delta);
else if (finaladdr <= 0x01fffffc || finaladdr >= 0xfe000000)
*reloc_addr = OPCODE_BA (finaladdr);
else
{
Elf32_Word *plt, *data_words;
Elf32_Word index, offset, num_plt_entries;
Update. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_runtime_setup): Use D_PTR to access relocated entries in l_info. (elf_machine_rela): Likewise. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/powerpc/dl-machine.c (__elf_machine_runtime_setup): Likewise. (__elf_machine_fixup_plt): Likewise. (__process_machine_rela): Likewise. * sysdeps/m68k/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rela): Likewise. * sysdeps/arm/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_rel): Likewise. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Likewise. (elf_machine_fixup_plt): Likewise. (elf_machine_rela): Likewise. 2000-03-29 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/msgctl.c: Use shlib-compat macros. * sysdeps/unix/sysv/linux/semctl.c: Likewise. * sysdeps/unix/sysv/linux/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/getrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c: Likewise. * sysdeps/unix/sysv/linux/i386/semctl.c: Likewise. * sysdeps/unix/sysv/linux/i386/setrlimit.c: Likewise. * sysdeps/unix/sysv/linux/i386/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/msgctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/semctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/shmctl.c: Likewise. * sysdeps/unix/sysv/linux/alpha/adjtime.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise. * sysdeps/unix/sysv/linux/alpha/oldglob.c: Use shlib-compat macros, remove K&R prototypes.
2000-03-31 05:16:38 +00:00
plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
offset = reloc_addr - plt;
if (offset < PLT_DOUBLE_SIZE*2 + PLT_INITIAL_ENTRY_WORDS)
{
index = (offset - PLT_INITIAL_ENTRY_WORDS)/2;
num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
/ sizeof(Elf32_Rela));
data_words = plt + PLT_DATA_START_WORDS (num_plt_entries);
data_words[index] = finaladdr;
reloc_addr[0] = OPCODE_LI (11, index * 4);
reloc_addr[1] = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS
- (offset+1))
* 4);
MODIFIED_CODE_NOQUEUE (reloc_addr + 1);
}
else
{
reloc_addr[0] = OPCODE_LIS_HI (12, finaladdr);
reloc_addr[1] = OPCODE_ADDI (12, 12, finaladdr);
reloc_addr[2] = OPCODE_MTCTR (12);
reloc_addr[3] = OPCODE_BCTR ();
MODIFIED_CODE_NOQUEUE (reloc_addr + 3);
}
}
}
break;
[BZ #2510, BZ #2830, BZ #3137, BZ #3313, BZ #3426, BZ #3465, BZ #3480, BZ #3483, BZ #3493, BZ #3514, BZ #3515, BZ #3664, BZ #3673, BZ #3674] 2007-01-11 Jakub Jelinek <jakub@redhat.com> * sysdeps/i386/soft-fp/sfp-machine.h: Remove. * sysdeps/x86_64/soft-fp/sfp-machine.h: Likewise. 2007-01-10 Ulrich Drepper <drepper@redhat.com> * io/fts.c: Make sure fts_cur is always valid after return from fts_read. Patch by Miloslav Trmac <mitr@redhat.com>. 2006-10-27 Richard Sandiford <richard@codesourcery.com> * elf/elf.h (R_MIPS_GLOB_DAT): Define. (R_MIPS_NUM): Bump by 1. 2007-01-03 Jakub Jelinek <jakub@redhat.com> * posix/execvp.c: Include alloca.h. (allocate_scripts_argv): Renamed to... (scripts_argv): ... this. Don't allocate buffer here nor count arguments. (execvp): Use alloca if possible. * posix/Makefile: Add rules to build and run tst-vfork3 test. * posix/tst-vfork3.c: New test. * stdlib/Makefile (tst-strtod3-ENV): Define. 2007-01-02 Ulrich Drepper <drepper@redhat.com> * posix/getconf.c: Update copyright year. * nss/getent.c: Likewise. * iconv/iconvconfig.c: Likewise. * iconv/iconv_prog.c: Likewise. * elf/ldconfig.c: Likewise. * catgets/gencat.c: Likewise. * csu/version.c: Likewise. * elf/ldd.bash.in: Likewise. * elf/sprof.c (print_version): Likewise. * locale/programs/locale.c: Likewise. * locale/programs/localedef.c: Likewise. * nscd/nscd.c (print_version): Likewise. * debug/xtrace.sh: Likewise. * malloc/memusage.sh: Likewise. * malloc/mtrace.pl: Likewise. * debug/catchsegv.sh: Likewise. 2006-12-24 Ulrich Drepper <drepper@redhat.com> * malloc/malloc.c (sYSMALLOc): Remove some unnecessary alignment attempts. 2006-12-23 Ulrich Drepper <drepper@redhat.com> * posix/wordexp.c: Remove some unnecessary tests. 2006-12-20 SUGIOKA Toshinobu <sugioka@itonet.co.jp> * sysdeps/unix/sysv/linux/sh/bits/shm.h: New file. * nss/getXXbyYY_r.c: Include atomic.h. (INTERNAL (REENTRANT_NAME)): Write startp after start_fct, add atomic_write_barrier () in between. 2006-11-28 Jakub Jelinek <jakub@redhat.com> * elf/dl-support.c: Include dl-procinfo.h. * sysdeps/powerpc/dl-procinfo.h (PPC_PLATFORM_POWER4, PPC_PLATFORM_PPC970, PPC_PLATFORM_POWER5, PPC_PLATFORM_POWER5_PLUS, PPC_PLATFORM_POWER6, PPC_PLATFORM_CELL_BE, PPC_PLATFORM_POWER6X): Define. (_dl_string_platform): Use PPC_PLATFORM_* macros instead of hardcoded constants. * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_platform): Use PPC_PLATFORM_* macros for array designators. 2006-11-11 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add 3 new cap names to the beginning. (_dl_powerpc_platforms): Add "power6x". * sysdeps/powerpc/dl-procinfo.h (_DL_HWCAP_FIRST): Decrease. (HWCAP_IMPORTANT): Add PPC_FEATURE_HAS_DFP. (_DL_PLATFORMS_COUNT): Increase. (_dl_string_platform): Handle power6x case. * sysdeps/powerpc/sysdep.h (PPC_FEATURE_PA6T, PPC_FEATURE_HAS_DFP, PPC_FEATURE_POWER6_EXT): Define. (PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS): Correct Comment. [-2^31 .. 2^31) range. * sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_RELATIME. * sysdeps/unix/sysv/linux/internal_statvfs.c (__statvfs_getflags): Handle relatime mount option. 2006-12-13 Jakub Jelinek <jakub@redhat.com> * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Include kernel-features.h. 2006-12-11 Ulrich Drepper <drepper@redhat.com> * stdlib/strtod_l.c (____STRTOF_INTERNAL): Parse thousand separators also if no non-zero digits found. * stdlib/Makefile (tests): Add tst-strtod3. [BZ #3664] * stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix test to recognize empty parsed strings. * stdlib/Makefile (tests): Add tst-strtod2. * stdlib/tst-strtod2.c: New file. [BZ #3673] * stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix exp_limit computation. * stdlib/Makefile (tests): Add tst-atof2. * stdlib/tst-atof2.c: New file. [BZ #3674] * stdlib/strtod_l.c (____STRTOF_INTERNAL): Adjust exponent value correctly if removing trailing zero of hex-float. * stdlib/Makefile (tests): Add tst-atof1. * stdlib/tst-atof1.c: New file. * misc/mntent_r.c (__hasmntopt): Check p[optlen] even when p == rest. Start searching for next comma at p rather than rest. * misc/Makefile (tests): Add tst-mntent2. * misc/tst-mntent2.c: New test. 2006-12-08 Ulrich Drepper <drepper@redhat.com> * malloc/memusage.c: Handle realloc with new size of zero and non-NULL pointer correctly. (me): Really write first record twice. (struct entry): Make format bi-arch safe. (dest): Write out more realloc statistics. * malloc/memusagestat.c (struct entry): Make format bi-arch safe. 2006-12-05 Jakub Jelinek <jakub@redhat.com> * nis/nis_subr.c (nis_getnames): Revert last change. 2006-12-03 Kaz Kojima <kkojima@rr.iij4u.or.jp> * sysdeps/unix/sysv/linux/sh/sys/io.h: Removed. 2006-11-30 H.J. Lu <hongjiu.lu@intel.com> * sysdeps/i386/i686/memcmp.S: Use jump table as the base of jump table entries. 2006-11-30 Jan Kratochvil <jan.kratochvil@redhat.com> * sysdeps/unix/sysv/linux/i386/clone.S: Provide CFI for the outermost `clone' function to ensure proper unwinding stop of gdb. * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise. 2006-12-01 Ulrich Drepper <drepper@redhat.com> * nscd/nscd.init: Remove obsolete and commented-out -S option handling. 2006-11-23 Jakub Jelinek <jakub@redhat.com> [BZ #3514] * manual/string.texi (strncmp): Fix pastos from wcscmp description. [BZ #3515] * manual/string.texi (strtok): Remove duplicate paragraph. 2006-12-01 Jan Kratochvil <jan.kratochvil@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Fix compatibility with libgcc not supporting `rflags' unwinding (register # >= 17). 2006-11-30 Jakub Jelinek <jakub@redhat.com> * sunrpc/svc_run.c (svc_run): Set my_pollfd to new_pollfd if realloc succeeded. 2006-11-29 Daniel Jacobowitz <dan@codesourcery.com> Jakub Jelinek <jakub@redhat.com> Jan Kratochvil <jan.kratochvil@redhat.com> * sysdeps/unix/sysv/linux/x86_64/sigaction.c (restore_rt): Add correct unwind information. * sysdeps/unix/sysv/linux/x86_64/Makefile: Provide symbols for 'restore_rt' even in the 'signal' directory. * sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym: Extend the regs list. malloc crashed. Don't allocate memory unnecessarily in each loop. 2006-10-21 Jakub Jelinek <jakub@redhat.com> * resolv/mapv4v6addr.h (map_v4v6_address): Fix last change. 2006-11-20 Ulrich Drepper <drepper@redhat.com> * resolv/mapv4v6addr.h (map_v4v6_address): Optimize a bit. 2006-11-18 Bruno Haible <bruno@clisp.org> * sysdeps/unix/sysv/linux/i386/getgroups.c (__getgroups): Invoke __sysconf only after having tried to call getgroups32. 2006-11-19 Ulrich Drepper <drepper@redhat.com> * nss/nss_files/files-hosts.c (LINE_PARSER): Support IPv6-style addresses for IPv4 queries if they can be mapped. 2006-11-16 Jakub Jelinek <jakub@redhat.com> * sysdeps/x86_64/fpu/s_copysignf.S (__copysignf): Switch to .text. * sysdeps/x86_64/fpu/s_copysign.S (__copysign): Likewise. (signmask): Add .size directive. (othermask): Add .type directive. 2006-11-14 Ulrich Drepper <drepper@redhat.com> * po/nl.po: Update from translation team. * timezone/zdump.c: Redo fix for BZ #3137. 2006-11-14 Jakub Jelinek <jakub@redhat.com> * nss/nss_files/files-alias.c (get_next_alias): Set line back to first_unused after parsing :include: file. * timezone/africa: Update from tzdata2006o. * timezone/antarctica: Likewise. * timezone/asia: Likewise. * timezone/australasia: Likewise. * timezone/backward: Likewise. * timezone/europe: Likewise. * timezone/iso3166.tab: Likewise. * timezone/northamerica: Likewise. * timezone/southamerica: Likewise. * timezone/zone.tab: Likewise. * time/tzfile.c (__tzfile_read): Extend to handle new file format on machines with 64-bit time_t. * timezone/checktab.awk: Update from tzcode2006o. * timezone/ialloc.c: Likewise. * timezone/private.h: Likewise. * timezone/scheck.c: Likewise. * timezone/tzfile.h: Likewise. * timezone/tzselect.ksh: Likewise. * timezone/zdump.c: Likewise. * timezone/zic.c: Likewise. [BZ #3483] * elf/ldconfig.c (main): Call setlocale and textdomain. Patch mostly by Benno Schulenberg <bensberg@justemail.net>. [BZ #3480] * manual/argp.texi: Fix typos. * manual/charset.texi: Likewise. * manual/errno.texi: Likewise. * manual/filesys.texi: Likewise. * manual/lang.texi: Likewise. * manual/maint.texi: Likewise. * manual/memory.texi: Likewise. * manual/message.texi: Likewise. * manual/resource.texi: Likewise. * manual/search.texi: Likewise. * manual/signal.texi: Likewise. * manual/startup.texi: Likewise. * manual/stdio.texi: Likewise. * manual/sysinfo.texi: Likewise. * manual/syslog.texi: Likewise. * manual/time.texi: Likewise. Patch by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. [BZ #3465] * sunrpc/clnt_raw.c: Minimal message improvements. * sunrpc/pm_getmaps.c: Likewise. * nis/nss_nisplus/nisplus-publickey.c: Likewise. * nis/nis_print_group_entry.c: Likewise. * locale/programs/repertoire.c: Likewise. * locale/programs/charmap.c: Likewise. * malloc/memusage.sh: Likewise. * elf/dl-deps.c: Likewise. * locale/programs/ld-collate.c: Likewise. * libio/vswprintf.c: Likewise. * malloc/memusagestat.c: Likewise. * sunrpc/auth_unix.c: Likewise. * sunrpc/rpc_main.c: Likewise. * nscd/cache.c: Likewise. * locale/programs/repertoire.c: Unify output messages. * locale/programs/charmap.c: Likewise. * locale/programs/ld-ctype.c: Likewise. * locale/programs/ld-monetary.c: Likewise. * locale/programs/ld-numeric.c: Likewise. * locale/programs/ld-time.c: Likewise. * elf/ldconfig.c: Likewise. * nscd/selinux.c: Likewise. * elf/cache.c: Likewise. Patch mostly by Benno Schulenberg <bensberg@justemail.net>. 2006-11-10 Jakub Jelinek <jakub@redhat.com> * string/strxfrm_l.c (STRXFRM): Fix trailing \1 optimization if N is one bigger than return value. * string/tst-strxfrm2.c (do_test): Also test strxfrm with l1 + 1 and l1 last arguments, if buf is defined, verify the return value equals to strlen (buf) and verify no byte beyond passed length is modified. 2006-11-10 Ulrich Drepper <drepper@redhat.com> * po/sv.po: Update from translation team. * sysdeps/gnu/siglist.c (__old_sys_siglist, __old_sys_sigabbrev): Use __new_sys_siglist instead of _sys_siglist_internal as second macro argument. (_old_sys_siglist): Use declare_symbol_alias macro instead of strong_alias. 2006-11-09 Ulrich Drepper <drepper@redhat.com> [BZ #3493] * posix/unistd.h (sysconf): Remove const attribute. * sysdeps/posix/getaddrinfo.c (getaddrinfo): Fix test for temporary or deprecated addresses. Patch by Sridhar Samudrala <sri@us.ibm.com>. * string/Makefile (tests): Add tst-strxfrm2. * string/tst-strxfrm2.c: New file. 2006-10-09 Jakub Jelinek <jakub@redhat.com> * elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0 rather than r->r_brk. * string/strxfrm_l.c (STRXFRM): Do the trailing \1 removal optimization even if needed > n. 2006-11-07 Jakub Jelinek <jakub@redhat.com> * include/libc-symbols.h (declare_symbol): Rename to... (declare_symbol_alias): ... this. Add ORIGINAL argument, imply strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes .size directive. * sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias changes. * sysdeps/gnu/siglist.c: Likewise. 2006-11-03 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/fpu/bits/mathinline.h [__LIBC_INTERNAL_MATH_INLINES]: Moved to ... * sysdeps/powerpc/fpu/math_private.h: ...here. New file. 2006-11-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Update handling of cache descriptor 0x49 for new models. * sysdeps/unix/sysv/linux/x86_64/sysconf.c (intel_check_word): Likewise. 2006-11-02 Ulrich Drepper <drepper@redhat.com> * configure.in: Work around ld --help change and avoid -z relro test completely if the architecture doesn't care about security. 2006-11-01 Ulrich Drepper <drepper@redhat.com> * po/sv.po: Update from translation team. 2006-10-31 Ulrich Drepper <drepper@redhat.com> * stdlib/atexit.c (atexit): Don't mark as hidden when used to generate compatibility version. 2006-10-29 Ulrich Drepper <drepper@redhat.com> * configure.in: Relax -z relro requirement a bit. * po/sv.po: Update from translation team. 2006-10-29 Jakub Jelinek <jakub@redhat.com> * elf/dl-sym.c (do_sym): Use RTLD_SINGLE_THREAD_P. * elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Likewise. * elf/dl-close.c (_dl_close_worker): Likewise. * elf/dl-open.c (_dl_open_worker): Likewise. * sysdeps/generic/sysdep-cancel.h (RTLD_SINGLE_THREAD_P): Define. * configure.in: Require assembler support for visibility, compiler support for visibility and aliases, linker support for various -z options. * Makeconfig: Remove conditional code which now is unnecessary. * config.h.in: Likewise. * config.make.in: Likewise. * dlfcn/Makefile: Likewise. * elf/Makefile: Likewise. * elf/dl-load.c: Likewise. * elf/rtld.c: Likewise. * include/libc-symbols.h: Likewise. * include/stdio.h: Likewise. * io/Makefile: Likewise. * io/fstat.c: Likewise. * io/fstat64.c: Likewise. * io/fstatat.c: Likewise. * io/fstatat64.c: Likewise. * io/lstat.c: Likewise. * io/lstat64.c: Likewise. * io/mknod.c: Likewise. * io/mknodat.c: Likewise. * io/stat.c: Likewise. * io/stat64.c: Likewise. * libio/stdio.c: Likewise. * nscd/Makefile: Likewise. * stdlib/Makefile: Likewise. * stdlib/atexit.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/i386/sysdep.h: Likewise. * sysdeps/i386/i686/memcmp.S: Likewise. * sysdeps/powerpc/powerpc32/sysdep.h: Likewise. * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise. * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise. * Makerules: USE_TLS support is now default. * tls.make.c: Likewise. * csu/Versions: Likewise. * csu/libc-start.c: Likewise. * csu/libc-tls.c: Likewise. * csu/version.c: Likewise. * dlfcn/dlinfo.c: Likewise. * elf/dl-addr.c: Likewise. * elf/dl-cache.c: Likewise. * elf/dl-close.c: Likewise. * elf/dl-iteratephdr.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-sym.c: Likewise. * elf/dl-sysdep.c: Likewise. * elf/dl-tls.c: Likewise. * elf/ldconfig.c: Likewise. * elf/rtld.c: Likewise. * elf/tst-tls-dlinfo.c: Likewise. * elf/tst-tls1.c: Likewise. * elf/tst-tls10.h: Likewise. * elf/tst-tls14.c: Likewise. * elf/tst-tls2.c: Likewise. * elf/tst-tls3.c: Likewise. * elf/tst-tls4.c: Likewise. * elf/tst-tls5.c: Likewise. * elf/tst-tls6.c: Likewise. * elf/tst-tls7.c: Likewise. * elf/tst-tls8.c: Likewise. * elf/tst-tls9.c: Likewise. * elf/tst-tlsmod1.c: Likewise. * elf/tst-tlsmod13.c: Likewise. * elf/tst-tlsmod13a.c: Likewise. * elf/tst-tlsmod14a.c: Likewise. * elf/tst-tlsmod2.c: Likewise. * elf/tst-tlsmod3.c: Likewise. * elf/tst-tlsmod4.c: Likewise. * elf/tst-tlsmod5.c: Likewise. * elf/tst-tlsmod6.c: Likewise. * include/errno.h: Likewise. * include/link.h: Likewise. * include/tls.h: Likewise. * locale/global-locale.c: Likewise. * locale/localeinfo.h: Likewise. * malloc/arena.c: Likewise. * malloc/hooks.c: Likewise. * malloc/malloc.c: Likewise. * resolv/Versions: Likewise. * sysdeps/alpha/dl-machine.h: Likewise. * sysdeps/alpha/libc-tls.c: Likewise. * sysdeps/generic/ldsodefs.h: Likewise. * sysdeps/generic/tls.h: Likewise. * sysdeps/i386/dl-machine.h: Likewise. * sysdeps/ia64/dl-machine.h: Likewise. * sysdeps/ia64/libc-tls.c: Likewise. * sysdeps/mach/hurd/fork.c: Likewise. * sysdeps/mach/hurd/i386/tls.h: Likewise. * sysdeps/powerpc/powerpc32/dl-machine.c: Likwise. * sysdeps/powerpc/powerpc32/dl-machine.h: Likewise. * sysdeps/powerpc/powerpc64/dl-machine.h: Likewise. * sysdeps/s390/libc-tls.c: Likewise. * sysdeps/s390/s390-32/dl-machine.h: Likewise. * sysdeps/s390/s390-64/dl-machine.h: Likewise. * sysdeps/sh/dl-machine.h: Likewise. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/x86_64/dl-machine.h: Likewise. [BZ #3426] * stdlib/stdlib.h: Adjust comment for canonicalize_file_name to reality. 2006-10-27 Jakub Jelinek <jakub@redhat.com> * elf/dl-lookup.c (_dl_debug_bindings): Remove unused symbol_scope argument. (_dl_lookup_symbol_x): Adjust caller. * sysdeps/generic/ldsodefs.h (struct link_namespaces): Remove _ns_global_scope. * elf/rtld.c (dl_main): Don't initialize _ns_global_scope. * elf/dl-libc.c: Revert l_scope name changes. * elf/dl-load.c: Likewise. * elf/dl-object.c: Likewise. * elf/rtld.c: Likewise. * elf/dl-close.c (_dl_close): Likewise. * elf/dl-open.c (dl_open_worker): Likewise. If not SINGLE_THREAD_P, always use __rtld_mrlock_{change,done}. Always free old scope list here if not l_scope_mem. * elf/dl-runtime.c (_dl_fixup, _dl_profile_fixup): Revert l_scope name change. Never free scope list here. Just __rtld_mrlock_lock before the lookup and __rtld_mrlock_unlock it after the lookup. * elf/dl-sym.c: Likewise. * include/link.h (struct r_scoperec): Remove. (struct link_map): Replace l_scoperec with l_scope, l_scoperec_mem with l_scope_mem and l_scoperec_lock with l_scope_lock. 2006-10-25 Ulrich Drepper <drepper@redhat.com> * sysdeps/gnu/netinet/tcp.h: Define TCP_CONGESTION. 2006-10-18 Ulrich Drepper <drepper@redhat.com> * configure.in: Disable building profile libraries by default. 2006-10-18 Ulrich Drepper <drepper@redhat.com> * elf/dl-lookup.c (_dl_lookup_symbol_x): Add warning to _dl_lookup_symbol_x code. 2006-10-17 Jakub Jelinek <jakub@redhat.com> * elf/dl-runtime.c: Include sysdep-cancel.h. (_dl_fixup, _dl_profile_fixup): Use __rtld_mrlock_* and scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros. * elf/dl-sym.c: Include sysdep-cancel.h. (do_sym): Use __rtld_mrlock_* and scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros. * elf/dl-close.c: Include sysdep-cancel.h. (_dl_close): Use __rtld_mrlock_* and scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros. * elf/dl-open.c: Include sysdep-cancel.h. (dl_open_worker): Use __rtld_mrlock_* and scoperec->nusers only if !SINGLE_THREAD_P. Use atomic_* instead of catomic_* macros. 2006-10-17 Jakub Jelinek <jakub@redhat.com> [BZ #3313] * malloc/malloc.c (malloc_consolidate): Set maxfb to address of last fastbin rather than end of fastbin array. 2006-10-18 Ulrich Drepper <drepper@redhat.com> * sysdeps/i386/i486/bits/atomic.h (catomic_decrement): Use correct body macro. * sysdeps/x86_64/bits/atomic.h (__arch_c_compare_and_exchange_val_64_acq): Add missing casts. (catomic_decrement): Use correct body macro. 2006-10-17 Jakub Jelinek <jakub@redhat.com> * include/atomic.h: Add a unique prefix to all local variables in macros. * csu/tst-atomic.c (do_test): Test also catomic_* macros. 2006-10-14 Ulrich Drepper <drepper@redhat.com> * resolv/arpa/nameser.h: Document that ns_t_a6 is deprecated. [BZ #3313] * malloc/malloc.c (malloc_consolidate): Don't use get_fast_max to determine highest fast bin to consolidate, always look into all of them. (do_check_malloc_state): Only require for empty bins for large sizes in main arena. * libio/stdio.h: Add more __wur attributes. 2006-11-12 Andreas Jaeger <aj@suse.de> [BZ #2510] * manual/search.texi (Hash Search Function): Clarify. (Array Search Function): Clarify. 2006-11-12 Joseph Myers <joseph@codesourcery.com> [BZ #2830] * math/atest-exp.c (main): Cast hex value to mp_limb_t before shifting. * math/atest-exp2.c (read_mpn_hex): Likewise. * math/atest-sincos.c (main): Likewise. * sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait. * sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait. * sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for version GLIBC_2.6. * Versions.def: Add GLIBC_2.6 for libc. * sysdeps/i386/i486/bits/atomic.h: Add catomic_* support. 2006-10-11 Jakub Jelinek <jakub@redhat.com> * malloc/malloc.c (_int_malloc): Remove unused any_larger variable. * nis/nis_defaults.c (__nis_default_access): Don't call getenv twice. * nis/nis_subr.c (nis_getnames): Use __secure_getenv instead of getenv. * sysdeps/generic/unsecvars.h: Add NIS_PATH. 2006-10-11 Ulrich Drepper <drepper@redhat.com> * include/atomic.c: Define catomic_* operations. * sysdeps/x86_64/bits/atomic.h: Likewise. Fix a few minor problems. * stdlib/cxa_finalize.c: Use catomic_* operations instead of atomic_*. * malloc/memusage.c: Likewise. * gmon/mcount.c: Likewise. * elf/dl-close.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-profile.c: Likewise. * elf/dl-sym.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-fptr.c: Likewise. * resolv/res_libc.c: Likewise. 2006-10-10 Roland McGrath <roland@frob.com> * sysdeps/mach/hurd/utimes.c: Use a union to avoid an improper cast. * sysdeps/mach/hurd/futimes.c: Likewise. * sysdeps/mach/hurd/lutimes.c: Likewise. 2006-10-09 Ulrich Drepper <drepper@redhat.com> Jakub Jelinek <jakub@redhat.com> Implement reference counting of scope records. * elf/dl-close.c (_dl_close): Remove all scopes from removed objects from the list in objects which remain. Always allocate new scope record. * elf/dl-open.c (dl_open_worker): When growing array for scopes, don't resize, allocate a new one. * elf/dl-runtime.c: Update reference counters before using a scope array. * elf/dl-sym.c: Likewise. * elf/dl-libc.c: Adjust for l_scope name change. * elf/dl-load.c: Likewise. * elf/dl-object.c: Likewise. * elf/rtld.c: Likewise. * include/link.h: Include <rtld-lowlevel.h>. Define struct r_scoperec. Replace r_scope with pointer to r_scoperec structure. Add l_scoperec_lock. * sysdeps/generic/ldsodefs.h: Include <rtld-lowlevel.h>. * sysdeps/generic/rtld-lowlevel.h: New file. * include/atomic.h: Rename atomic_and to atomic_and_val and atomic_or to atomic_or_val. Define new macros atomic_and and atomic_or which do not return values. * sysdeps/x86_64/bits/atomic.h: Define atomic_and and atomic_or. Various cleanups. * sysdeps/i386/i486/bits/atomic.h: Likewise. * po/sv.po: Update from translation team. 2006-10-07 Ulrich Drepper <drepper@redhat.com> * Versions.def: Add GLIBC_2.6 to libpthread. * include/shlib-compat.h (SHLIB_COMPAT): Expand parameters before use. (versioned_symbol): Likewise. (compat_symbol): Likewise. * po/tr.po: Update from translation team. * nis/Banner: Removed. It's been integral part forever and the author info is incomplete anyway. * libio/Banner: Likewise. 2006-10-06 Ulrich Drepper <drepper@redhat.com> * version.h (VERSION): Bump to 2.5.90 for new development tree.
2007-01-11 21:51:07 +00:00
#define DO_TLS_RELOC(suffix) \
case R_PPC_DTPREL##suffix: \
/* During relocation all TLS symbols are defined and used. \
Therefore the offset is already correct. */ \
if (sym_map != NULL) \
do_reloc##suffix ("R_PPC_DTPREL"#suffix, \
TLS_DTPREL_VALUE (sym, reloc)); \
break; \
case R_PPC_TPREL##suffix: \
if (sym_map != NULL) \
{ \
CHECK_STATIC_TLS (map, sym_map); \
do_reloc##suffix ("R_PPC_TPREL"#suffix, \
TLS_TPREL_VALUE (sym_map, sym, reloc)); \
} \
break;
inline void do_reloc16 (const char *r_name, Elf32_Addr value)
{
if (__builtin_expect (value > 0x7fff && value < 0xffff8000, 0))
_dl_reloc_overflow (map, r_name, reloc_addr, refsym);
*(Elf32_Half *) reloc_addr = value;
}
inline void do_reloc16_LO (const char *r_name, Elf32_Addr value)
{
*(Elf32_Half *) reloc_addr = value;
}
inline void do_reloc16_HI (const char *r_name, Elf32_Addr value)
{
*(Elf32_Half *) reloc_addr = value >> 16;
}
inline void do_reloc16_HA (const char *r_name, Elf32_Addr value)
{
*(Elf32_Half *) reloc_addr = (value + 0x8000) >> 16;
}
DO_TLS_RELOC (16)
DO_TLS_RELOC (16_LO)
DO_TLS_RELOC (16_HI)
DO_TLS_RELOC (16_HA)
default:
_dl_reloc_bad_type (map, rinfo, 0);
return;
}
MODIFIED_CODE_NOQUEUE (reloc_addr);
}