1998-09-01 14:31:49 +00:00
|
|
|
/* Machine-dependent ELF dynamic relocation functions. PowerPC version.
|
2022-01-01 18:54:23 +00:00
|
|
|
Copyright (C) 1995-2022 Free Software Foundation, Inc.
|
1998-09-01 14:31:49 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
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.
|
1998-09-01 14:31:49 +00:00
|
|
|
|
|
|
|
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
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
1998-09-01 14:31:49 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
1998-09-01 14:31:49 +00:00
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <sys/param.h>
|
|
|
|
#include <link.h>
|
2000-03-23 20:31:46 +00:00
|
|
|
#include <ldsodefs.h>
|
1998-09-01 14:31:49 +00:00
|
|
|
#include <elf/dynamic-link.h>
|
2000-06-12 07:13:22 +00:00
|
|
|
#include <dl-machine.h>
|
2012-03-20 23:00:23 +00:00
|
|
|
#include <_itoa.h>
|
1998-09-01 14:31:49 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Stuff for the PLT. */
|
1998-09-01 14:31:49 +00:00
|
|
|
#define PLT_INITIAL_ENTRY_WORDS 18
|
1999-12-31 01:33:06 +00:00
|
|
|
#define PLT_LONGBRANCH_ENTRY_WORDS 0
|
|
|
|
#define PLT_TRAMPOLINE_ENTRY_WORDS 6
|
1998-09-01 14:31:49 +00:00
|
|
|
#define PLT_DOUBLE_SIZE (1<<13)
|
|
|
|
#define PLT_ENTRY_START_WORDS(entry_number) \
|
1999-12-31 01:33:06 +00:00
|
|
|
(PLT_INITIAL_ENTRY_WORDS + (entry_number)*2 \
|
|
|
|
+ ((entry_number) > PLT_DOUBLE_SIZE \
|
|
|
|
? ((entry_number) - PLT_DOUBLE_SIZE)*2 \
|
|
|
|
: 0))
|
1998-09-01 14:31:49 +00:00
|
|
|
#define PLT_DATA_START_WORDS(num_entries) PLT_ENTRY_START_WORDS(num_entries)
|
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Macros to build PowerPC opcode words. */
|
1998-09-01 14:31:49 +00:00
|
|
|
#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))
|
1998-09-01 14:31:49 +00:00
|
|
|
#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))
|
1998-09-01 14:31:49 +00:00
|
|
|
#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))
|
1998-09-01 14:31:49 +00:00
|
|
|
#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))
|
1999-12-31 01:33:06 +00:00
|
|
|
#define OPCODE_LWZU(rd,d,ra) \
|
|
|
|
(0x84000000 | (rd) << 21 | (ra) << 16 | ((d) & 0xffff))
|
1998-09-01 14:31:49 +00:00
|
|
|
#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)
|
1999-12-31 01:33:06 +00:00
|
|
|
#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)
|
1998-09-01 14:31:49 +00:00
|
|
|
#define OPCODE_SLWI(ra,rs,sh) OPCODE_RLWINM(ra,rs,sh,0,31-sh)
|
|
|
|
|
|
|
|
|
2000-09-09 22:21:24 +00:00
|
|
|
#define PPC_DCBST(where) asm volatile ("dcbst 0,%0" : : "r"(where) : "memory")
|
|
|
|
#define PPC_SYNC asm volatile ("sync" : : : "memory")
|
1998-09-13 08:25:53 +00:00
|
|
|
#define PPC_ISYNC asm volatile ("sync; isync" : : : "memory")
|
2000-09-09 22:21:24 +00:00
|
|
|
#define PPC_ICBI(where) asm volatile ("icbi 0,%0" : : "r"(where) : "memory")
|
1998-09-01 14:31:49 +00:00
|
|
|
#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)
|
2004-10-14 16:18:09 +00:00
|
|
|
__elf_preferred_address (struct link_map *loader, size_t maplength,
|
|
|
|
ElfW(Addr) mapstartpref)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
|
|
|
ElfW(Addr) low, high;
|
|
|
|
struct link_map *l;
|
2004-10-14 16:18:09 +00:00
|
|
|
Lmid_t nsid;
|
1998-09-01 14:31:49 +00:00
|
|
|
|
|
|
|
/* 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
|
2013-01-07 17:20:53 +00:00
|
|
|
be superseded by the program's load address). */
|
1998-09-01 14:31:49 +00:00
|
|
|
low = 0x0003FFFF;
|
|
|
|
high = 0x70000000;
|
2004-10-14 16:18:09 +00:00
|
|
|
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)
|
2013-06-06 17:36:03 +00:00
|
|
|
&& high >= mapstart)
|
2004-10-14 16:18:09 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
1998-09-01 14:31:49 +00:00
|
|
|
|
|
|
|
high -= 0x10000; /* Allow some room between objects. */
|
2004-03-05 10:29:47 +00:00
|
|
|
maplength = (maplength | (GLRO(dl_pagesize) - 1)) + 1;
|
1998-09-01 14:31:49 +00:00
|
|
|
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. */
|
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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
|
1999-12-31 01:33:06 +00:00
|
|
|
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'. */
|
1998-09-01 14:31:49 +00:00
|
|
|
int
|
|
|
|
__elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
|
|
|
|
{
|
|
|
|
if (map->l_info[DT_JMPREL])
|
|
|
|
{
|
|
|
|
Elf32_Word i;
|
2000-03-31 05:16:38 +00:00
|
|
|
Elf32_Word *plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
|
1998-09-01 14:31:49 +00:00
|
|
|
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);
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Word data_words = (Elf32_Word) (plt + rel_offset_words);
|
1998-09-01 14:31:49 +00:00
|
|
|
Elf32_Word size_modified;
|
1999-12-31 01:33:06 +00:00
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
extern void _dl_runtime_resolve (void);
|
|
|
|
extern void _dl_prof_resolve (void);
|
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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);
|
1998-09-01 14:31:49 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Call the procedure at that address. */
|
|
|
|
plt[PLT_LONGBRANCH_ENTRY_WORDS + 2] = OPCODE_MTCTR (11);
|
|
|
|
plt[PLT_LONGBRANCH_ENTRY_WORDS + 3] = OPCODE_BCTR ();
|
1999-07-25 23:21:20 +00:00
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
if (lazy)
|
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Word *tramp = plt + PLT_TRAMPOLINE_ENTRY_WORDS;
|
2012-05-16 20:05:58 +00:00
|
|
|
Elf32_Word dlrr;
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Word offset;
|
|
|
|
|
2012-05-16 20:05:58 +00:00
|
|
|
#ifndef PROF
|
|
|
|
dlrr = (Elf32_Word) (profile
|
|
|
|
? _dl_prof_resolve
|
|
|
|
: _dl_runtime_resolve);
|
2005-01-08 05:47:47 +00:00
|
|
|
if (profile && GLRO(dl_profile) != NULL
|
|
|
|
&& _dl_name_match_p (GLRO(dl_profile), map))
|
1999-12-31 01:33:06 +00:00
|
|
|
/* This is the object we are looking for. Say that we really
|
|
|
|
want profiling and the timers are started. */
|
2002-02-01 01:33:04 +00:00
|
|
|
GL(dl_profile_map) = map;
|
2012-05-16 20:05:58 +00:00
|
|
|
#else
|
|
|
|
dlrr = (Elf32_Word) _dl_runtime_resolve;
|
|
|
|
#endif
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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);
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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);
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Call _dl_runtime_resolve. */
|
|
|
|
tramp[6] = OPCODE_BA (dlrr);
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
else
|
1999-12-31 01:33:06 +00:00
|
|
|
{
|
|
|
|
/* 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);
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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);
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Call _dl_runtime_resolve. */
|
|
|
|
tramp[9] = OPCODE_BCTR ();
|
|
|
|
}
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* Set up the lazy PLT entries. */
|
|
|
|
offset = PLT_INITIAL_ENTRY_WORDS;
|
|
|
|
i = 0;
|
|
|
|
while (i < num_plt_entries && i < PLT_DOUBLE_SIZE)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
|
|
|
plt[offset ] = OPCODE_LI (11, i * 4);
|
1999-12-31 01:33:06 +00:00
|
|
|
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;
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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.
|
1998-09-01 14:31:49 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
Assumes that dcbst and icbi apply to lines of 16 bytes or
|
2004-02-07 06:37:42 +00:00
|
|
|
more. Current known line sizes are 16, 32, and 128 bytes.
|
2020-01-10 22:14:56 +00:00
|
|
|
The following gets the cache line size, when available. */
|
2004-02-07 06:37:42 +00:00
|
|
|
|
|
|
|
/* Default minimum 4 words per cache line. */
|
|
|
|
int line_size_words = 4;
|
|
|
|
|
2020-01-10 22:14:56 +00:00
|
|
|
if (lazy && GLRO(dl_cache_line_size) != 0)
|
2007-03-26 20:09:10 +00:00
|
|
|
/* Convert bytes to words. */
|
2020-01-10 22:14:56 +00:00
|
|
|
line_size_words = GLRO(dl_cache_line_size) / 4;
|
1998-09-01 14:31:49 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
size_modified = lazy ? rel_offset_words : 6;
|
2004-02-07 06:37:42 +00:00
|
|
|
for (i = 0; i < size_modified; i += line_size_words)
|
|
|
|
PPC_DCBST (plt + i);
|
1999-03-04 23:26:43 +00:00
|
|
|
PPC_DCBST (plt + size_modified - 1);
|
1998-09-01 14:31:49 +00:00
|
|
|
PPC_SYNC;
|
2004-02-07 06:37:42 +00:00
|
|
|
|
|
|
|
for (i = 0; i < size_modified; i += line_size_words)
|
|
|
|
PPC_ICBI (plt + i);
|
1999-12-31 01:33:06 +00:00
|
|
|
PPC_ICBI (plt + size_modified - 1);
|
1998-09-01 14:31:49 +00:00
|
|
|
PPC_ISYNC;
|
|
|
|
}
|
|
|
|
|
|
|
|
return lazy;
|
|
|
|
}
|
|
|
|
|
2000-06-12 07:13:22 +00:00
|
|
|
Elf32_Addr
|
2009-10-30 07:39:38 +00:00
|
|
|
__elf_machine_fixup_plt (struct link_map *map,
|
2004-10-14 16:18:09 +00:00
|
|
|
Elf32_Addr *reloc_addr, Elf32_Addr finaladdr)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
|
1998-09-01 14:31:49 +00:00
|
|
|
if (delta << 6 >> 6 == delta)
|
|
|
|
*reloc_addr = OPCODE_B (delta);
|
|
|
|
else if (finaladdr <= 0x01fffffc || finaladdr >= 0xfe000000)
|
|
|
|
*reloc_addr = OPCODE_BA (finaladdr);
|
|
|
|
else
|
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Word *plt, *data_words;
|
|
|
|
Elf32_Word index, offset, num_plt_entries;
|
2001-01-03 04:50:22 +00:00
|
|
|
|
1999-12-31 01:33:06 +00:00
|
|
|
num_plt_entries = (map->l_info[DT_PLTRELSZ]->d_un.d_val
|
2019-02-28 15:02:09 +00:00
|
|
|
/ sizeof (Elf32_Rela));
|
2000-03-31 05:16:38 +00:00
|
|
|
plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
|
1999-12-31 01:33:06 +00:00
|
|
|
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)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
data_words[index] = finaladdr;
|
|
|
|
PPC_SYNC;
|
2001-01-03 04:50:22 +00:00
|
|
|
*reloc_addr = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS - (offset+1))
|
1999-12-31 01:33:06 +00:00
|
|
|
* 4);
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
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);
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
MODIFIED_CODE (reloc_addr);
|
2000-06-12 07:13:22 +00:00
|
|
|
return finaladdr;
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
|
2003-03-03 01:05:12 +00:00
|
|
|
void
|
|
|
|
_dl_reloc_overflow (struct link_map *map,
|
|
|
|
const char *name,
|
|
|
|
Elf32_Addr *const reloc_addr,
|
|
|
|
const Elf32_Sym *refsym)
|
2000-10-19 08:15:09 +00:00
|
|
|
{
|
|
|
|
char buffer[128];
|
|
|
|
char *t;
|
|
|
|
t = stpcpy (buffer, name);
|
|
|
|
t = stpcpy (t, " relocation at 0x00000000");
|
|
|
|
_itoa_word ((unsigned) reloc_addr, t, 16, 0);
|
2003-05-16 04:22:23 +00:00
|
|
|
if (refsym)
|
2001-01-03 04:50:22 +00:00
|
|
|
{
|
|
|
|
const char *strtab;
|
|
|
|
|
|
|
|
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
|
|
|
|
t = stpcpy (t, " for symbol `");
|
2003-05-16 04:22:23 +00:00
|
|
|
t = stpcpy (t, strtab + refsym->st_name);
|
2001-01-03 04:50:22 +00:00
|
|
|
t = stpcpy (t, "'");
|
|
|
|
}
|
2000-10-19 08:15:09 +00:00
|
|
|
t = stpcpy (t, " out of range");
|
2001-09-08 17:45:32 +00:00
|
|
|
_dl_signal_error (0, map->l_name, NULL, buffer);
|
2000-10-19 08:15:09 +00:00
|
|
|
}
|
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
void
|
|
|
|
__process_machine_rela (struct link_map *map,
|
|
|
|
const Elf32_Rela *reloc,
|
2003-04-24 17:10:52 +00:00
|
|
|
struct link_map *sym_map,
|
1998-09-01 14:31:49 +00:00
|
|
|
const Elf32_Sym *sym,
|
|
|
|
const Elf32_Sym *refsym,
|
|
|
|
Elf32_Addr *const reloc_addr,
|
|
|
|
Elf32_Addr const finaladdr,
|
2019-12-17 18:55:59 +00:00
|
|
|
int rinfo, bool skip_ifunc)
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
2013-10-03 04:21:52 +00:00
|
|
|
union unaligned
|
|
|
|
{
|
2013-10-04 03:18:51 +00:00
|
|
|
uint16_t u2;
|
|
|
|
uint32_t u4;
|
2013-10-03 04:21:52 +00:00
|
|
|
} __attribute__((__packed__));
|
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
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:
|
2019-12-17 18:55:59 +00:00
|
|
|
if (__glibc_likely (!skip_ifunc))
|
|
|
|
*reloc_addr = ((Elf32_Addr (*) (void)) finaladdr) ();
|
2009-10-30 07:39:38 +00:00
|
|
|
return;
|
|
|
|
|
2002-10-17 22:22:42 +00:00
|
|
|
case R_PPC_UADDR32:
|
2013-10-03 04:21:52 +00:00
|
|
|
((union unaligned *) reloc_addr)->u4 = finaladdr;
|
2002-10-17 22:22:42 +00:00
|
|
|
break;
|
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
case R_PPC_ADDR24:
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (finaladdr > 0x01fffffc && finaladdr < 0xfe000000))
|
2003-05-16 04:22:23 +00:00
|
|
|
_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);
|
1998-09-01 14:31:49 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case R_PPC_ADDR16:
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
|
2003-05-16 04:22:23 +00:00
|
|
|
_dl_reloc_overflow (map, "R_PPC_ADDR16", reloc_addr, refsym);
|
1998-09-01 14:31:49 +00:00
|
|
|
*(Elf32_Half*) reloc_addr = finaladdr;
|
|
|
|
break;
|
|
|
|
|
2002-10-17 22:22:42 +00:00
|
|
|
case R_PPC_UADDR16:
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
|
2003-05-16 04:22:23 +00:00
|
|
|
_dl_reloc_overflow (map, "R_PPC_UADDR16", reloc_addr, refsym);
|
2013-10-03 04:21:52 +00:00
|
|
|
((union unaligned *) reloc_addr)->u2 = finaladdr;
|
2002-10-17 22:22:42 +00:00
|
|
|
break;
|
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
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:
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (finaladdr > 0x7fff && finaladdr < 0xffff8000))
|
2003-05-16 04:22:23 +00:00
|
|
|
_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);
|
1998-09-01 14:31:49 +00:00
|
|
|
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);
|
1998-09-01 14:31:49 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case R_PPC_REL24:
|
|
|
|
{
|
1999-12-31 01:33:06 +00:00
|
|
|
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
|
1998-09-01 14:31:49 +00:00
|
|
|
if (delta << 6 >> 6 != delta)
|
2003-05-16 04:22:23 +00:00
|
|
|
_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);
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
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
|
2004-03-05 10:29:47 +00:00
|
|
|
|| (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
|
1998-09-01 14:31:49 +00:00
|
|
|
{
|
|
|
|
const char *strtab;
|
|
|
|
|
2000-03-31 05:16:38 +00:00
|
|
|
strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
|
2001-02-28 06:36:10 +00:00
|
|
|
_dl_error_printf ("\
|
2008-10-31 14:19:57 +00:00
|
|
|
%s: Symbol `%s' has different size in shared object, consider re-linking\n",
|
2013-05-29 16:00:20 +00:00
|
|
|
RTLD_PROGNAME, strtab + refsym->st_name);
|
1998-09-01 14:31:49 +00:00
|
|
|
}
|
|
|
|
memcpy (reloc_addr, (char *) finaladdr, MIN (sym->st_size,
|
|
|
|
refsym->st_size));
|
|
|
|
return;
|
|
|
|
|
|
|
|
case R_PPC_REL32:
|
1999-12-31 01:33:06 +00:00
|
|
|
*reloc_addr = finaladdr - (Elf32_Word) reloc_addr;
|
1998-09-01 14:31:49 +00:00
|
|
|
return;
|
|
|
|
|
|
|
|
case R_PPC_JMP_SLOT:
|
1999-12-31 01:33:06 +00:00
|
|
|
/* 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;
|
2001-01-03 04:50:22 +00:00
|
|
|
|
2000-03-31 05:16:38 +00:00
|
|
|
plt = (Elf32_Word *) D_PTR (map, l_info[DT_PLTGOT]);
|
1999-12-31 01:33:06 +00:00
|
|
|
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
|
2019-02-28 15:02:09 +00:00
|
|
|
/ sizeof (Elf32_Rela));
|
1999-12-31 01:33:06 +00:00
|
|
|
data_words = plt + PLT_DATA_START_WORDS (num_plt_entries);
|
|
|
|
data_words[index] = finaladdr;
|
|
|
|
reloc_addr[0] = OPCODE_LI (11, index * 4);
|
2001-01-03 04:50:22 +00:00
|
|
|
reloc_addr[1] = OPCODE_B ((PLT_LONGBRANCH_ENTRY_WORDS
|
|
|
|
- (offset+1))
|
1999-12-31 01:33:06 +00:00
|
|
|
* 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;
|
1998-09-01 14:31:49 +00:00
|
|
|
|
[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) \
|
2003-04-24 17:10:52 +00:00
|
|
|
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)
|
|
|
|
{
|
2014-02-10 13:45:42 +00:00
|
|
|
if (__glibc_unlikely (value > 0x7fff && value < 0xffff8000))
|
2003-05-16 04:22:23 +00:00
|
|
|
_dl_reloc_overflow (map, r_name, reloc_addr, refsym);
|
2003-04-24 17:10:52 +00:00
|
|
|
*(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)
|
|
|
|
|
1998-09-01 14:31:49 +00:00
|
|
|
default:
|
1999-07-21 16:58:06 +00:00
|
|
|
_dl_reloc_bad_type (map, rinfo, 0);
|
1998-09-01 14:31:49 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
MODIFIED_CODE_NOQUEUE (reloc_addr);
|
|
|
|
}
|