2001-06-06 Ulrich Drepper <drepper@redhat.com>
* sysdeps/generic/wordexp.c: Undo last patch. Use strndupa instead.
* po/sk.po: Update from translation team.
2001-06-01 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/speed.c (cfsetispeed): Max speed is
B4000000.
(cfsetospeed): Likewise.
Reported by Lukasz Trabinski <lukasz@lt.wsisiz.edu.pl>.
2001-05-31 Joseph S. Myers <jsm28@cam.ac.uk>
* misc/sys/cdefs.h (__restrict_arr): Define to empty for C++.
2001-05-30 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/unix/sysv/linux/s390/s390-32/sys/ucontext.h: greg_t
needs to have the same aligment as the kernel structure.
2001-05-29 Andreas Jaeger <aj@suse.de>
* sysdeps/ieee754/ldbl-128/e_acosl.c: New file, contributed by
Stephen L Moshier <moshier@mediaone.net>.
* math/libm-test.inc (sinh_test): Add new test case.
* sysdeps/ieee754/ldbl_96/e_sinhl.c (__ieee754_sinhl): sinhl(x) =
x when x < 2^-32.
Patch by Stephen L Moshier <moshier@mediaone.net>.
2001-05-25 Bruce Mitchener <bruce@cubik.org>
* manual/ctype.texi: Minor fix.
* manual/install.texi: Likewise.
* manual/startup.texi: Likewise.
* manual/examples/dir.c: Use perror() rather than puts().
2001-05-25 David Mosberger <davidm@hpl.hp.com>
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Put stuff following
#endif directive inside a comment to avoid compiler warnings.
2001-05-25 Philipp Thomas <pthomas@suse.de>
* nis/nis_print.c (nis_nstype2str): Don't mark names of
naming services for translation, only UNKNOWN needs it.
Add comment to prevent it for the future.
2001-05-25 Joseph S. Myers <jsm28@cam.ac.uk>
* misc/sys/cdefs.h (__restrict_arr): Define appropriately for GCC
3.1 and non-GCC C99 compilers.
2001-05-22 David Mosberger <davidm@hpl.hp.com>
* sysdeps/ia64/memmove.S: Increase MEMLAT from 6 to 21 for better
performance.
* sysdeps/ia64/memcpy.S: Likewise.
* sysdeps/ia64/bcopy.S: New file.
* sysdeps/ia64/bzero.S: New file (derived from memset.S).
2001-05-26 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ia64/fpu/libm-test-ulps: Add deltas for tanh(-0.7).
2001-05-21 Bruno Haible <haible@clisp.cons.org>
* wcsmbs/mbrtowc.c (mbrtowc): Remove local variable 'flush', always
use 0 instead, and rely on the converter to do the flush.
* wcsmbs/tst-mbrtowc.c (utf8_test_1): New function, taken from
utf8_test.
(utf8_test_2, utf8_test_3): New function.
(utf8_test): Call utf8_test_1, utf8_test_2, utf8_test_3.
2001-05-20 Bruno Haible <haible@clisp.cons.org>
* iconvdata/cp1255.c: Completely rewritten.
* iconvdata/Makefile (gen-8bit-gap-modules): Remove cp1255.
* iconvdata/testdata/WINDOWS-1255: New file.
* iconvdata/testdata/WINDOWS-1255..UTF8: New file.
* iconvdata/TESTS: Add WINDOWS-1255 test.
* iconvdata/CP1255.irreversible: New file.
2001-05-20 Bruno Haible <haible@clisp.cons.org>
* iconvdata/cp1258.c: Completely rewritten.
* iconvdata/Makefile (gen-8bit-gap-modules): Remove cp1258.
* iconvdata/testdata/WINDOWS-1258: New file.
* iconvdata/testdata/WINDOWS-1258..UTF8: New file.
* iconvdata/TESTS: Add WINDOWS-1258 test.
* iconvdata/tst-table-from.c (try): Reset the iconv descriptor before
the main call, and flush it afterwards.
(utf8_decode): Return a string, possibly containing several Unicode
characters.
(main): Update all utf8_decode calls.
* iconvdata/CP1258.irreversible: New file.
2001-05-20 Bruno Haible <haible@clisp.cons.org>
* iconv/gconv.c (__gconv): For flush without output, pass do_flush = 2.
* iconv/skeleton.c: Distinguish do_flush = 1 and do_flush = 2. In the
first case, set outbuf, outstart, outend, and call PREPARE_LOOP before
EMIT_SHIFT_TO_INIT; then pass the output produced by this step down to
the next step. In the second case, clear the state without calling
EMIT_SHIFT_TO_INIT.
* iconvdata/ibm930.c (EMIT_SHIFT_TO_INIT): Use outbuf instead of
data->__outbuf, and outend instead of data->__outbufend.
* iconvdata/ibm933.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/ibm935.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/ibm937.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/ibm939.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/iso-2022-cn.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/iso-2022-cn-ext.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/iso-2022-jp.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/iso-2022-kr.c (EMIT_SHIFT_TO_INIT): Likewise.
* iconvdata/utf-7.c (EMIT_SHIFT_TO_INIT): Likewise.
2001-05-21 Jakub Jelinek <jakub@redhat.com>
* elf/rtld.c (dl_main): Compute l_map_end for the main program.
* elf/dl-sym.c (_dl_sym): Don't check for l_addr == 0.
If match == _dl_loaded, caller can still come from the main program.
(_dl_vsym): Likewise.
* elf/dl-open.c (dl_open_worker): Don't check for l_addr == 0.
* elf/dl-error.c (_dl_signal_error): Change NULL objname into "".
* elf/restest2.c: New test.
* elf/Makefile (tests): Add restest2.
(restest2, LDFLAGS-restest2): Add rules.
2001-05-22 Andreas Jaeger <aj@suse.de>
* sysdeps/ieee754/ldbl-128/s_log1pl.c: New file, contributed by
Stephen L Moshier <moshier@mediaone.net>.
2001-05-22 Martin Schwidefsky <schwidefsky@de.ibm.com>
* sysdeps/s390/s390-32/backtrace.c: Make backtrace return the
return addresses instead of the stack pointers.
* sysdeps/s390/s390-64/backtrace.c: Likewise.
2001-05-21 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Include
bits/sigcontext.h instead of bits/sigstack.h.
* sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h: Add
multiple-inclusion guards.
2001-05-20 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_STD_AUXV):
Define for linux >= 2.4.5 on powerpc.
(__ASSUME_MMAP2_SYSCALL): Likewise.
result port when failing with ELOOP. Do the ELOOP check when
following an absolute symlink target as well as relative.
Remove #ifdef SYMLOOP_MAX conditional--it should always be defined.
2001-05-17 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Use
CHECK_SIGSET_NULL_OK and not CHECK_SIGSET for all parameters.
Reported by Mark Burton <markb@ordern.com>.
2001-05-17 Ulrich Drepper <drepper@redhat.com>
* sysdeps/i386/i486/atomicity.h (exchange_and_add): Correct second
parameter of xaddl. Patch by H . J . Lu <hjl@lucon.org>.
2001-05-14 Bruno Haible <haible@clisp.cons.org>
* iconvdata/iso-2022-cn-ext.c (BODY for FROM_LOOP): If SO is seen
without previous announcement, reject it regularly, don't abort.
2001-05-16 Ulrich Drepper <drepper@redhat.com>
* math/tgmath.h: Fix handling of int parameters to binary and
ternary functions. Reported by mitr@volny.cz.
* math/test-tgmath.c: Add tests for calls with integer parameters.
* manual/llio.texi: Many grammar and typo fixes to the section on AIO.
2001-05-15 Andreas Jaeger <aj@suse.de>
* sysdeps/ieee754/ldbl-128/s_expm1l.c: New file, contributed by
Stephen L Moshier <moshier@mediaone.net>.
* sysdeps/i386/fpu/libm-test-ulps: Adjust for change.
* math/libm-test.inc: Add comment with ToDo.
* sysdeps/i386/fpu/e_expl.c: Rewritten to C and using a more
accurate algorithm. Patch by Stephen L Moshier <moshier@mediaone.net>.
* sysdeps/i386/fpu/e_expl.S: Removed.
static pattern rule also that also covers
$(objpx)g$(static-start-installed-name).
[$(start-installed-name) != $(static-start-installed-name)]
(extra-objs, omit-deps, install-lib): Add
$(static-start-installed-name) and g$(static-start-installed-name).
* sysdeps/mach/hurd/i386/Makefile: Don't add crt0.o to those here;
just setting static-start-installed-name is now sufficient.
(extra-objs): Add static-start.o here.
(CFLAGS-initfini.s): Remove obsolete variable.
* sysdeps/mach/hurd/i386/Makeconfig: New file.
Define static-start-installed-name here.
* Makeconfig: Include existing $(full_config_sysdirs:=/Makeconfig).
* Make-dist (+sysdep-tsrcs): Look for Makeconfig files.
* Makerules ($(+sysdir_pfx)sysd-Makefile): Remove this target and
associated hair. Instead, just use $(wildcard ...) in the include.
* configure.in (critic_missing, aux_missing): Collect in these vars
the names of the missing programs, and include them in the error msgs.
* configure: Regenerated.
2001-05-14 Andreas Jaeger <aj@suse.de>
* sysdeps/i386/fpu/libm-test-ulps: Adjust for new tests.
* math/libm-test.inc (tanh_test): Add testcases for last tanh bug.
2001-05-14 Stephen L Moshier <moshier@mediaone.net>
* sysdeps/ieee754/ldbl-96/s_tanhl.c (__tanhl): Fix sign test.
2001-05-11 Jakub Jelinek <jakub@redhat.com>
* posix/regex.c (re_match_2_internal): Swap mbs_offset and csize
as well if swapping strings.
Make sure stop is not past end of second string.
* posix/bug-regex4.c: New test.
* posix/Makefile (tests): Add bug-regex4.
2001-05-10 Andreas Jaeger <aj@suse.de>
* manual/install.texi (Linux): Clarify that Linux 2.2 is minimal
requirement.
2001-05-11 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/configure.in: Check binutils version on
MIPS.
* sysdeps/mips/rtld-ldscript.in: Removed unneeded binary output
format directive. Patch by Steven J. Hill <sjhill@cotw.com>.
2001-05-07 H.J. Lu <hjl@gnu.org>
* elf/ldconfig.c (dir_entry): Add ino and dev.
(add_single_dir): Compare ino and dev to check if 2 directory
paths are the same or not. Free entry->path for duplicates.
(add_dir): Initialize ino and dev for entry.
(search_dir): Handle symlink to directory.
* sysdeps/i386/fpu/libm-test-ulps: Add ulps for new exp tests.
* math/libm-test.inc (exp_test): Add some more tests.
(pow_test): Run double only test also for long double.
* math/test-ldouble.c (TEST_LDOUBLE): Define.
* math/test-ildoubl.c (TEST_LDOUBLE): Likewise.
2001-05-05 Jakub Jelinek <jakub@redhat.com>
* include/features.h (__USE_EXTERN_INLINES): Don't define if
__NO_INLINE__ is defined.
* ctype/ctype.h (tolower, toupper): Change the guard condition to
__USE_EXTERN_INLINES check only.
* stdlib/stdlib.h (strtod, ...): Likewise.
* wcsmbs/wchar.h (mbrlen): Likewise.
* string/string.h: Only include bits/string.h and bits/string2.h
if __NO_INLINE__ is not defined.
2001-04-30 Jakub Jelinek <jakub@redhat.com>
* posix/confstr.c (confstr) [_CS_V6_WIDTH_RESTRICTED_ENVS]: Move so
that _CS_LFS_CFLAGS can fall through to the empty returned string
case. Add FALLTHROUGH comment.
2001-04-29 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_FCNTL64):
Define for Arm, PowerPC and SH if kernel is 2.4.4 or newer.
* sysdeps/unix/sysv/linux/bits/socket.h (PF_WANPIPE): New, from
Linux 2.4.4.
(AF_WANPIPE): Likewise.
(MSG_MORE): New.
* sysdeps/unix/sysv/linux/alpha/bits/socket.h: Add same changes as
for Linux generic version.
* sysdeps/unix/sysv/linux/s390/s390-64/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/socket.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/socket.h: Likewise.
* sysdeps/gnu/netinet/tcp.h (TCP_QUICKACK): New.
2001-04-26 Ulrich Drepper <drepper@redhat.com>
* nis/nss-nis.h: Move yperr2nss_tab definition into separate file
and rename to __yperr2nss_tab. Change YPERR_COUNT into variable
__yperr2nss_count.
* nis/nss-nis.c: New file.
* nis/Makefile (libnss_compat-routines): Add nss-nis.
(libnss_nis-routines): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c: Some more
optimizations. Patch by Jakub Jelinek <jakub@redhat.com>.
2001-04-25 Ulrich Drepper <drepper@redhat.com>
* malloc/malloc.c: Allow MALLOC_ALIGNMENT to be defined on the
compiler command line.
* sysdeps/hppa/Makefile: Add -DMALLOC_ALIGNMENT=16 to compiler
command line for malloc.c.
2001-04-25 Matthew Wilcox <willy@ldl.fc.hp.com>
* sysdeps/hppa/stackinfo.h: New file.
* sysdeps/unix/sysv/linux/hppa/getdents64.c: New file.
* sysdeps/unix/sysv/linux/hppa/mmap64.c: New file.
* sysdeps/unix/sysv/linux/hppa/bits/resource.h: New file.
* sysdeps/unix/sysv/linux/kernel-features.h: Add descriptions
of PA kernel features.
2001-04-25 Ulrich Drepper <drepper@redhat.com>
* locale/programs/localedef.c (main): Always set a file name for
the initial locale.
* locale/programs/locfile.c (locfile_read): filename is allowed to
be NULL.
2001-03-21 Alan Modra <alan@one.net.au>
* sysdeps/hppa/dl-machine.h (RTLD_START): Set up dp with DT_PLTGOT
value from application so that constructors in non-PIC libs work.
2000-12-13 Jes Sorensen <jes@linuxcare.com>
* sysdeps/hppa/dl-machine.h (RTLD_START): _dl_init now returns a
function pointer, hence load the jump address and gp from the
function pointer before jumping.
* sysdeps/ia64/Makefile [subdir=csu] (sysdep_routines): Add hp-timing.
* sysdeps/ia64/Versions: Add _dl_cpuclock_offset for ld in 2.2.3.
* sysdeps/ia64/hp-timing.c: New file.
* sysdeps/ia64/hp-timing.h: New file.
* sysdeps/unix/sysv/linux/ia64/bits/time.h: Add definitions for
CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
* sysdeps/generic/clock_getcpuclockid.c: Make function generic, test
using #ifdef whether the clock is available.
* sysdeps/unix/i386/clock_getcpuclockid.c: Not needed anymore.
* sysdeps/generic/dl-sysdep.c: Initialize _dl_cpuclock_offset to move
it into data section.
2001-04-23 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/pathconf.c (__pathconf): For _PC_ASYNC_IO test
whether named file is a regular file or a block device.
* sysdeps/posix/fpathconf.c (__fpathconf): Likewise.
* sysdeps/arm/fpu/feenablxcpt.c: New file.
* sysdeps/arm/fpu/fedisablxcpt.c: New file.
* sysdeps/arm/fpu/fegetexcpt.c: New file.
2001-04-22 Philip Blundell <philb@gnu.org>
2001-04-22 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/sys/user.h (struct user_fpregs):
Renamed from struct user_fp.
(struct user_regs): New.
(struct user): Use struct user_regs rather than struct pt_regs to
avoid dependency on asm/ptrace.h. Use struct user_fpregs in place
of struct user_fp and struct user_fp_struct.
* sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Include sys/procfs.h
not sys/elf.h.
2001-04-22 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/sys/elf.h: Move contents to
sys/procfs.h, and tell the user to include that file instead.
* sysdeps/unix/sysv/linux/arm/sys/procfs.h: Remove old cruft
surrounded with #if 0.
(elf_greg_t, ELF_NGREG, elf_gregset_t, elf_fpregset_t): Moved here
from sys/elf.h.
(prgregset_t, prfpregset_t): Define in terms of elf_gregset_t and
elf_fpregset_t respectively.
2001-04-22 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/register-dump.h: Also print the
address that faulted.
2001-04-21 Ulrich Drepper <drepper@redhat.com>
* elf/dl-support.c: Include cpuclock-init.h. Use CPUCLOCK_VARDEF and
CPUCLOCK_INIT if defined.
* sysdeps/generic/dl-sysdep.c: Likewise.
* sysdeps/generic/cpuclock-init.h: New file.
* sysdeps/unix/i386/i586/cpuclock-init.h: New file.
* sysdeps/unix/i386/i586/Versions: New file.
* sysdeps/unix/i386/i586/clock_settime.c: New file.
* sysdeps/unix/i386/i586/clock_gettime.c: Handle thread CPU clock
separately by calling __pthread_clock_gettime if this function is
available. Subtract offset from tsc value before computing time value.
* sysdeps/mach/hurd/munlock.c: New file.
* sysdeps/mach/hurd/bits/posix_opt.h (_POSIX_MEMLOCK_RANGE): Define it.
* misc/Makefile (routines): Add mlock munlock mlockall munlockall.
* sysdeps/generic/mlock.c: New file.
* sysdeps/generic/munlock.c: New file.
* sysdeps/generic/mlockall.c: New file.
* sysdeps/generic/munlockall.c: New file.
* sysdeps/generic/bits/mman.h (MCL_CURRENT, MCL_FUTURE): New macros.
* sysdeps/unix/sysv/linux/syscalls.list (mlock, munlock,
mlockall, munlockall): Change caller field to - from EXTRA.
Don't use __ names; not used (and not declared in include/sys/mman.h).
Use __ names for calls we make.
(get_privileged_ports): Add alias.
* hurd/hurd.h: Declare it with the __ name.
* sysdeps/mach/hurd/reboot.c (reboot): Use __get_privileged_ports.
* sysdeps/mach/hurd/adjtime.c (__adjtime): Likewise.
* sysdeps/mach/hurd/settimeofday.c (__settimeofday): Likewise.
2001-04-19 Matthew Wilcox <willy@ldl.fc.hp.com>
* sysdeps/unix/sysv/linux/hppa/sysdep.h (INLINE_SYSCALL):
Change to return a signed result for compatibility with other
architectures, and correctness.
2001-04-19 Andreas Jaeger <aj@suse.de>
* po/zh_TW.po: Remove extraneous backslashes.
* sysdeps/ieee754/dbl-64/e_sqrt.c (__ieee754_sqrt): Remove unused
variables b and n.
2001-04-18 Jakub Jelinek <jakub@redhat.com>
* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Update.
* sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/swapcontext.c: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/setcontext.S (__setcontext):
Copy first word of uc_sigmask into __uc_sigmask.
* sysdeps/unix/sysv/linux/sparc/sparc64/getcontext.S (__getcontext):
Save uc_link around trap. Copy __uc_sigmask into first word of
uc_sigmask, clear the rest. Make sure setcontext to the created
context doesn't do this though.
* sysdeps/unix/sysv/linux/sparc/sparc64/ucontext_i.h: New file.
* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (ucontext_t): Add
uc_stack and uc_sigmask, rename old uc_sigmask to __uc_sigmask in the
64bit version, make uc_sigmask __sigset_t in the 32bit version.
* rt/Makefile (otherlibs): Added for static NSS.
* glibcbug.in (BUGGLIBC): Send to new alias.
* sysdeps/unix/sysv/linux/i386/get_clockfreq.c (__get_clockfreq):
Handle kernels which report only three digits after the decimal point.
Reported by Van Okamura <van.okamura@oracle.com>.
2001-04-17 David S. Miller <davem@redhat.com>
* sysdeps/sparc/sparc32/fpu/libm-test-ulps: Update for new atan2 tests.
* sysdeps/sparc/sparc64/fpu/libm-test-ulps: Likewise.
2001-04-16 Stephen L Moshier <moshier@mediaone.net>
* sysdeps/ieee754/flt-32/e_asinf.c (pio2_hi, pio2_lo, pio4_hi):
Correct the values. (pSx, qSx): Replace by shorter approximation.
Use f suffix on float constants.
* sysdeps/ieee754/ldbl-128/k_tanl.c: New file.
Contributed by Stephen L Moshier <moshier@mediaone.net>.
instead of the constant NGROUPS_MAX. That way, the limit can be
raised in the kernel configuration without having to recompile libc.
* sysdeps/posix/euidaccess.c: Don't #include <limits.h> or try to
define NGROUPS_MAX; we don't use it here.
2001-04-13 Ulrich Drepper <drepper@redhat.com>
* sysdeps/ieee754/ldbl-128/s_atanl.c: New file.
Contributed by Stephen L Moshier <moshier@mediaone.net>.
2001-04-13 Jes Sorensen <jes@linuxcare.com>
* sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Add __pad0 to
explicitly pad struct siginfo instead of relying on compiler padding.
2001-04-12 Bruno Haible <haible@clisp.cons.org>
* iconvdata/TESTS2: New file.
* iconvdata/run-iconv-test.sh: Also run tests from TESTS2.
* iconvdata/testdata/alfabeta..UTF-8: New file.
* iconvdata/testdata/alfabeta..UTF-16.BE: New file.
* iconvdata/testdata/alfabeta..UTF-16.LE: New file.
* iconvdata/testdata/alfabeta..UTF-32.BE: New file.
* iconvdata/testdata/alfabeta..UTF-32.LE: New file.
2001-04-11 Bruno Haible <haible@clisp.cons.org>
* iconvdata/utf-32.c: New file.
* iconvdata/gconv-modules: Add entries for UTF-32, UTF-32LE, UTF-32BE.
* iconvdata/Makefile (modules): Add UTF-32.
(distribute): Add utf-32.c.
2001-04-11 Bruno Haible <haible@clisp.cons.org>
* iconvdata/utf-16.c (PREPARE_LOOP): Initialize 'swap' after possibly
changing it in the state. After incrementing 'inptr', store it back.
* iconvdata/unicode.c (PREPARE_LOOP): After incrementing 'inptr',
store it back.
2001-04-11 Bruno Haible <haible@clisp.cons.org>
* iconvdata/utf-16.c (gconv_init): Use MAX_NEEDED_FROM, not
MIN_NEEDED_FROM.