glibc/dlfcn/dladdr.c

37 lines
1.3 KiB
C
Raw Permalink Normal View History

Update. 1997-09-27 01:14 Ulrich Drepper <drepper@cygnus.com> * Makeconfig (extra-objs): Depend in before-compile. * configure.in: Locate Perl and substitute with complete path. * config.make.in: Add PERL for substitution. * elf/Makefile (routines): Add dl-addr. * elf/dladdr.c: Move the real code into ... * elf/dl-addr.c: New file. * elf/link.h: Add prototype for _dl_addr. * elf/dladdr.c (dladdr): Change address argument to be const. * elf/dlfcn.h: Likewise. * locale/C_name.c: Add _nl_POSIX_name. * locale/localeinfo.h: Add declaration of _nl_POSIX_name. * locale/findlocale.c (_nl_find_locale): Use _nl_POSIX_name. (_nl_remove_locale): Free name of data set. * locale/setlocale.c (clever_copy): Remove. (new_composite_name): Use _nl_C_name and _nl_POSIX_name in compare. (setname): Only remove old name when it is for category LC_ALL. Change malloc, free, realloc, and memalign hooks for glibc to take another parameter indicating the location of the caller. * malloc/malloc.c: Change hook functions and variables. * malloc/malloc.h: Likewise. * malloc/mcheck.c: Likewise. Make sure later hooked function also get the original caller address. * malloc/mtrace.c: Likewise. (tr_where): If no information in _mtrace_file is given use the information about the caller. * malloc/Makefile (distribute): Replace mtrace.awk by mtrace.pl. Add rules to install mtrace.pl after rewriting. * malloc/mtrace.pl: New file. Based on the old AWK script but with extended functionality. * malloc/mtrace.awk: Removed. * po/fr.po: New version. * string/Makefile: Do use builtins for tester.c and inl-tester.c. * string/tester.c: Rewrite. Split in many small functions to not exceed gcc's limits. * sysdeps/unix/sysv/linux/syscalls.list: Add prctl. 1997-09-25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * string/bits/string2.h (__stpcpy_small): Don't use casts as lvalues. 1997-09-26 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/time.texi (Formatting Date and Time): Clarify explanation of strftime flags a bit. Suggested by Robert Bihlmeyer <robbe@orcus.priv.at>. 1997-09-25 00:13 David S. Miller <davem@tanya.rutgers.edu> * sysdeps/libm-ieee754/s_exp2f.c: Protect _GNU_SOURCE definition. Fix typo, it is FLT_MANT_DIG. 1997-09-24 18:52 H.J. Lu <hjl@gnu.ai.mit.edu> * math/atest-exp2.c: Include <stdlib/gmp.h> instead of <gmp.h>. 1997-08-27 08:10 H.J. Lu <hjl@gnu.ai.mit.edu> * libio/libio.h, libio/libioP.h: Support libio in libstdc++. * libio/libio.h (_IO_peekc): Defined as _IO_peekc_unlocked if _IO_MTSAFE_IO is undefined. 1997-09-24 23:27 Richard Henderson <rth@cygnus.com> * elf/dl-runtime.c (fixup): Don't go through elf_machine_relplt, but lookup the value of the target symbol ourselves and call the new elf_machine_fixup_plt. This kills the ELF_FIXUP_RETURN_VALUE hack. (profile_fixup): Likewise, but don't fix up the plt. * elf/rtld.c (_dl_main): ELF_MACHINE_RELOC_NOPLT renamed _JMP_SLOT. * sysdeps/alpha/dl-machine.h (ELF_MACHINE_RELOC_NOPLT): Renamed. (elf_alpha_fix_plt): Renamed elf_machine_fixup_plt. * sysdeps/i386/dl-machine.h (elf_machine_relplt): Killed. (ELF_MACHINE_JMP_SLOT): Renamed. (elf_machine_fixup_plt): New function. * sysdeps/m68k/dl-machine.h: Likewise. * sysdeps/powerpc/dl-machine.h: Likewise. (elf_machine_rela): Moved JMP_SLOT fixup out to elf_machine_fixup_plt. * sysdeps/sparc/sparc32/dl-machine.h: Likewise. * sysdeps/sparc/sparc64/dl-machine.h: Likewise. * sysdeps/stub/dl-machine.h: Update, sorta. * sysdeps/alpha/dl-machine.h (elf_machine_runtime_setup): Do profiling. (TRAMPOLINE_TEMPLATE): From the carcas of _RUNTIME_TRAMPOLINE, do both normal and profile code. (elf_machine_rela): Handle r_addend for .got and .plt too.
1997-09-27 02:21:42 +02:00
/* Locate the shared object symbol nearest a given address.
Copyright (C) 1996-2022 Free Software Foundation, Inc.
update from main archive 961116 Sun Nov 17 03:13:57 1996 Ulrich Drepper <drepper@cygnus.com> * db/makedb.c: Update and reformat copyright. * elf/Makefile: Likewise. * elf/dl-close.c: Likewise. * elf/dl-debug.c: Likewise. * elf/dl-deps.c: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-minimal.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-symbol.c: Likewise. * elf/dladdr.c: Likewise. * elf/dlclose.c: Likewise. * elf/dlerror.c: Likewise. * elf/dlopen.c: Likewise. * elf/dlsym.c: Likewise. * elf/do-rel.h: Likewise. * elf/dynamic-link.h: Likewise. * elf/eval.c: Likewise. * elf/rtld.c: Likewise. * inet/ether_hton.c: Likewise. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Likewise. * inet/getnetgrent_r.c: Likewise. * inet/Makefile (+gccwarn): Remove definition. Instead set CFLAGS-rcmd.c, CFLAGS-rexec.c, and CFLAGS-ruserpass.c to `-w'. * inet/aliases.h: Add C++ protection. * inet/ether_hton.c: Add prototype for __nss_ethers_lookup. (ether_hostton): Remove unused variable result. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Include <ctype.h> and <string.h>. * inet/getnetgrent_r.c: Include <stdlib.h>. Use casts to prevent warnings. (innetgr): Initialize `known' and `needed'. * inet/inet_net.c: Make local variable `i' of type u_int32_t. * nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)) [NEED__RES]: Don't return NULL. Instead set *RESULT to NULL and return -1. * nss/getXXent_r.c (INTERNAL (REENTRANT_GETNAME)): Likewise. (SETFUNC_NAME, ENDFUNC_NAME) [NEED__RES]: Don't return anything. * nss/nss_files/files-alias.c: Debug function. I didn't worked at all before. Sat Nov 16 15:25:34 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/posix/readv.c: Don't use PTR anymore. * sysdeps/posix/writev.c: Likewise. * version.h (VERSION): Bump to 1.98. * nss/db-Makefile: Generate lines for getXXXent iteration. * sysdeps/alpha/Dist: Don't distribute removed files divlu.S, divqu.S, remlu.S, and remqu.S. Fri Nov 15 08:55:54 1996 Andreas Jaeger <aj@arthur.pfalz.de> * posix/unistd.h: Correct typo in documentation. Thu Nov 14 18:08:14 1996 a sun <asun@zoology.washington.edu> * inet/netinet/tcp.h: Use __ protected versions instead of BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN directly. Sat Nov 16 13:44:55 1996 Ulrich Drepper <drepper@cygnus.com> * intl/loadmsgcat.c (_nl_msg_cat_cntr): Initialize so that references in libc.so are not anymore undefined. Sat Nov 16 18:17:36 1996 NIIBE Yutaka <gniibe@mri.co.jp> * io/utime.h: Rename second parameter for utime to prevent warning for -Wshadow. * dirent/dirent.h: Same here for scandir prototype. * math/mathcalls.h: Likewise for frexp and ldexp. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise for bindresvport. Sat Nov 16 03:49:27 1996 Ulrich Drepper <drepper@cygnus.com> * stdlib/tst-strtod.c: Add test for error case below. Sat Nov 16 03:48:39 1996 Wolfram Gloger <Wolfram.Gloger@dent.med.uni-muenchen.de> * stdlib/strtod.c: Recognize numbers like 0e-19. Fri Nov 15 08:38:43 1996 Andreas Jaeger <aj@arthur.pfalz.de> * time/Makefile ($(installed-localtime-file)): Fix path to rellns-sh. * Makefile: Don't generate and install gnu/lib-names.h if $(build-shared) is not `yes'. Thu Nov 14 09:23:58 1996 H.J. Lu (hjl@gnu.ai.mit.edu) * sysdeps/posix/Makefile ($(common-objpfx)mk-stdiolim): Depend on $(..)posix/posix1_lim.h, not ../posix/posix1_lim.h. * Makerules (REAL_MAKE_VERSION): New, use it instead of MAKE_VERSION. Thu Nov 14 22:10:43 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nss_files/files-XXX.x (_nss_files_get,ENTNAME_r): Fix typo. * nss/getXXent_r.c: Fix typo. Set correct return value when no further service is available. Thu Nov 14 17:48:13 1996 Ulrich Drepper <drepper@cygnus.com> * db/recno/rec_put.c: Add cast to avoid warning. * db/recno/rec_close.c: Likewise. * db/mpool/mpool.c: Likewise. * db/hash/hash_bigkey.h: Likewise. * db/hash/hash.c: Likewise. * db/btree/bt_split.c: Likewise. * db/btree/bt_put.c: Likewise. Thu Nov 14 14:11:44 1996 Ulrich Drepper <drepper@cygnus.com> * dirent/dirent.h: Update copyright. * elf/elf.h: Likewise. * elf/link.h: Likewise. * gmon/sys/gmon_out.h: Likewise. * gnu-versions.h: Likewise. * intl/libintl.h: Likewise. * io/fcntl.h: Likewise. * io/ftw.h: Likewise. * io/sys/statfs.h: Likewise. * io/utime.h: Likewise. * locale/langinfo.h: Likewise. * malloc/malloc.h: Likewise. * malloc/obstack.h: Likewise. * misc/ar.h: Likewise. * misc/error.h: Likewise. * misc/mntent.h: Likewise. * misc/sgtty.h: Likewise. * misc/sys/cdefs.h: Likewise. * misc/sys/dir.h: Likewise. * misc/sys/file.h: Likewise. * misc/sys/ioctl.h: Likewise. * misc/sys/ustat.h: Likewise. * posix/fnmatch.h: Likewise. * posix/getopt.h: Likewise. * posix/glob.h: Likewise. * posix/posix2_lim.h: Likewise. * posix/regex.h: Likewise. * posix/sys/times.h: Likewise. * posix/sys/types.h: Likewise. * posix/sys/utsname.h: Likewise. * posix/tar.h: Likewise. * posix/wordexp.h: Likewise. * resource/sys/resource.h: Likewise. * resource/sys/vlimit.h: Likewise. * resource/sys/vtimes.h: Likewise. * socket/sys/socket.h: Likewise. * socket/sys/un.h: Likewise. * stdio-common/printf.h: Likewise. * stdlib/alloca.h: Likewise. * string/argz.h: Likewise. * string/endian.h: Likewise. * string/envz.h: Likewise. * string/memory.h: Likewise. * string/strings.h: Likewise. * sysdeps/generic/crypt.h: Likewise. * sysdeps/generic/direntry.h: Likewise. * sysdeps/generic/gnu/types.h: Likewise. * sysdeps/generic/ioctl-types.h: Likewise. * sysdeps/generic/netinet/in.h: Likewise. * sysdeps/generic/resourcebits.h: Likewise. * sysdeps/generic/sigset.h: Likewise. * sysdeps/generic/sockaddrcom.h: Likewise. * sysdeps/generic/sys/mman.h: Likewise. * sysdeps/generic/sys/ptrace.h: Likewise. * sysdeps/generic/termbits.h: Likewise. * sysdeps/generic/waitstatus.h: Likewise. * sysdeps/ieee754/huge_val.h: Likewise. * sysdeps/ieee754/nan.h: Likewise. * sysdeps/mach/hurd/local_lim.h: Likewise. * sysdeps/mach/hurd/statbuf.h: Likewise. * sysdeps/stub/huge_val.h: Likewise. * sysdeps/stub/libc-lock.h: Likewise. * sysdeps/stub/signum.h: Likewise. * sysdeps/stub/statbuf.h: Likewise. * sysdeps/stub/waitflags.h: Likewise. * sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise. * sysdeps/unix/bsd/osf/alpha/statbuf.h: Likewise. * sysdeps/unix/bsd/osf/sys/mman.h: Likewise. * sysdeps/unix/bsd/signum.h: Likewise. * sysdeps/unix/bsd/statbuf.h: Likewise. * sysdeps/unix/bsd/sun/signum.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/resourcebits.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/termbits.h: Likewise. * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise. * sysdeps/unix/bsd/waitflags.h: Likewise. * sysdeps/unix/sysv/irix4/signum.h: Likewise. * sysdeps/unix/sysv/irix4/statbuf.h: Likewise. * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/direntry.h: Likewise. * sysdeps/unix/sysv/linux/gnu/types.h: Likewise. * sysdeps/unix/sysv/linux/ioctl-types.h: Likewise. * sysdeps/unix/sysv/linux/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. * sysdeps/unix/sysv/linux/resourcebits.h: Likewise. * sysdeps/unix/sysv/linux/signum.h: Likewise. * sysdeps/unix/sysv/linux/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/sys/klog.h: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/sys/ptrace.h: Likewise. * sysdeps/unix/sysv/linux/syscall.h: Likewise. * sysdeps/unix/sysv/linux/termbits.h: Likewise. * sysdeps/unix/sysv/local_lim.h: Likewise. * sysdeps/unix/sysv/sco3.2.4/syscall.h: Likewise. * sysdeps/unix/sysv/sco3.2/local_lim.h: Likewise. * sysdeps/unix/sysv/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/i386/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/sigset.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/waitflags.h: Likewise. * sysdeps/vax/huge_val.h: Likewise. * values.h: Likewise. Thu Nov 14 04:22:41 1996 Ulrich Drepper <drepper@cygnus.com> * malloc/obstack.h: Use memcpy instead of bcopy and define a macro `memcpy' using bcopy if memcpy is not available. * manual/stdio.texi: Correct description of printf customization. The argument info function is not optional anymore and the interface for `printf_function' also changed. * manual/examples/rprintf.c: Define and use argument info function. * stdio-common/printf.h (struct printf_info): Change type for field `pad' to wchar_t. Correct comment for `register_printf_function'. * nss/getXXbyYY.c [NEED_H_ERRNO]: Don't pass pointer to h_errno to reentrant function. Instead use temporary variable and set h_errno if an error occured. Reported by NIIBE Yutaka. are no bits set in the masks. Reported by baldazzi@csr.unibo.it.
1996-11-17 04:15:52 +01:00
This file is part of the GNU C Library.
update from main archive 961116 Sun Nov 17 03:13:57 1996 Ulrich Drepper <drepper@cygnus.com> * db/makedb.c: Update and reformat copyright. * elf/Makefile: Likewise. * elf/dl-close.c: Likewise. * elf/dl-debug.c: Likewise. * elf/dl-deps.c: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-minimal.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-symbol.c: Likewise. * elf/dladdr.c: Likewise. * elf/dlclose.c: Likewise. * elf/dlerror.c: Likewise. * elf/dlopen.c: Likewise. * elf/dlsym.c: Likewise. * elf/do-rel.h: Likewise. * elf/dynamic-link.h: Likewise. * elf/eval.c: Likewise. * elf/rtld.c: Likewise. * inet/ether_hton.c: Likewise. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Likewise. * inet/getnetgrent_r.c: Likewise. * inet/Makefile (+gccwarn): Remove definition. Instead set CFLAGS-rcmd.c, CFLAGS-rexec.c, and CFLAGS-ruserpass.c to `-w'. * inet/aliases.h: Add C++ protection. * inet/ether_hton.c: Add prototype for __nss_ethers_lookup. (ether_hostton): Remove unused variable result. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Include <ctype.h> and <string.h>. * inet/getnetgrent_r.c: Include <stdlib.h>. Use casts to prevent warnings. (innetgr): Initialize `known' and `needed'. * inet/inet_net.c: Make local variable `i' of type u_int32_t. * nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)) [NEED__RES]: Don't return NULL. Instead set *RESULT to NULL and return -1. * nss/getXXent_r.c (INTERNAL (REENTRANT_GETNAME)): Likewise. (SETFUNC_NAME, ENDFUNC_NAME) [NEED__RES]: Don't return anything. * nss/nss_files/files-alias.c: Debug function. I didn't worked at all before. Sat Nov 16 15:25:34 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/posix/readv.c: Don't use PTR anymore. * sysdeps/posix/writev.c: Likewise. * version.h (VERSION): Bump to 1.98. * nss/db-Makefile: Generate lines for getXXXent iteration. * sysdeps/alpha/Dist: Don't distribute removed files divlu.S, divqu.S, remlu.S, and remqu.S. Fri Nov 15 08:55:54 1996 Andreas Jaeger <aj@arthur.pfalz.de> * posix/unistd.h: Correct typo in documentation. Thu Nov 14 18:08:14 1996 a sun <asun@zoology.washington.edu> * inet/netinet/tcp.h: Use __ protected versions instead of BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN directly. Sat Nov 16 13:44:55 1996 Ulrich Drepper <drepper@cygnus.com> * intl/loadmsgcat.c (_nl_msg_cat_cntr): Initialize so that references in libc.so are not anymore undefined. Sat Nov 16 18:17:36 1996 NIIBE Yutaka <gniibe@mri.co.jp> * io/utime.h: Rename second parameter for utime to prevent warning for -Wshadow. * dirent/dirent.h: Same here for scandir prototype. * math/mathcalls.h: Likewise for frexp and ldexp. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise for bindresvport. Sat Nov 16 03:49:27 1996 Ulrich Drepper <drepper@cygnus.com> * stdlib/tst-strtod.c: Add test for error case below. Sat Nov 16 03:48:39 1996 Wolfram Gloger <Wolfram.Gloger@dent.med.uni-muenchen.de> * stdlib/strtod.c: Recognize numbers like 0e-19. Fri Nov 15 08:38:43 1996 Andreas Jaeger <aj@arthur.pfalz.de> * time/Makefile ($(installed-localtime-file)): Fix path to rellns-sh. * Makefile: Don't generate and install gnu/lib-names.h if $(build-shared) is not `yes'. Thu Nov 14 09:23:58 1996 H.J. Lu (hjl@gnu.ai.mit.edu) * sysdeps/posix/Makefile ($(common-objpfx)mk-stdiolim): Depend on $(..)posix/posix1_lim.h, not ../posix/posix1_lim.h. * Makerules (REAL_MAKE_VERSION): New, use it instead of MAKE_VERSION. Thu Nov 14 22:10:43 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nss_files/files-XXX.x (_nss_files_get,ENTNAME_r): Fix typo. * nss/getXXent_r.c: Fix typo. Set correct return value when no further service is available. Thu Nov 14 17:48:13 1996 Ulrich Drepper <drepper@cygnus.com> * db/recno/rec_put.c: Add cast to avoid warning. * db/recno/rec_close.c: Likewise. * db/mpool/mpool.c: Likewise. * db/hash/hash_bigkey.h: Likewise. * db/hash/hash.c: Likewise. * db/btree/bt_split.c: Likewise. * db/btree/bt_put.c: Likewise. Thu Nov 14 14:11:44 1996 Ulrich Drepper <drepper@cygnus.com> * dirent/dirent.h: Update copyright. * elf/elf.h: Likewise. * elf/link.h: Likewise. * gmon/sys/gmon_out.h: Likewise. * gnu-versions.h: Likewise. * intl/libintl.h: Likewise. * io/fcntl.h: Likewise. * io/ftw.h: Likewise. * io/sys/statfs.h: Likewise. * io/utime.h: Likewise. * locale/langinfo.h: Likewise. * malloc/malloc.h: Likewise. * malloc/obstack.h: Likewise. * misc/ar.h: Likewise. * misc/error.h: Likewise. * misc/mntent.h: Likewise. * misc/sgtty.h: Likewise. * misc/sys/cdefs.h: Likewise. * misc/sys/dir.h: Likewise. * misc/sys/file.h: Likewise. * misc/sys/ioctl.h: Likewise. * misc/sys/ustat.h: Likewise. * posix/fnmatch.h: Likewise. * posix/getopt.h: Likewise. * posix/glob.h: Likewise. * posix/posix2_lim.h: Likewise. * posix/regex.h: Likewise. * posix/sys/times.h: Likewise. * posix/sys/types.h: Likewise. * posix/sys/utsname.h: Likewise. * posix/tar.h: Likewise. * posix/wordexp.h: Likewise. * resource/sys/resource.h: Likewise. * resource/sys/vlimit.h: Likewise. * resource/sys/vtimes.h: Likewise. * socket/sys/socket.h: Likewise. * socket/sys/un.h: Likewise. * stdio-common/printf.h: Likewise. * stdlib/alloca.h: Likewise. * string/argz.h: Likewise. * string/endian.h: Likewise. * string/envz.h: Likewise. * string/memory.h: Likewise. * string/strings.h: Likewise. * sysdeps/generic/crypt.h: Likewise. * sysdeps/generic/direntry.h: Likewise. * sysdeps/generic/gnu/types.h: Likewise. * sysdeps/generic/ioctl-types.h: Likewise. * sysdeps/generic/netinet/in.h: Likewise. * sysdeps/generic/resourcebits.h: Likewise. * sysdeps/generic/sigset.h: Likewise. * sysdeps/generic/sockaddrcom.h: Likewise. * sysdeps/generic/sys/mman.h: Likewise. * sysdeps/generic/sys/ptrace.h: Likewise. * sysdeps/generic/termbits.h: Likewise. * sysdeps/generic/waitstatus.h: Likewise. * sysdeps/ieee754/huge_val.h: Likewise. * sysdeps/ieee754/nan.h: Likewise. * sysdeps/mach/hurd/local_lim.h: Likewise. * sysdeps/mach/hurd/statbuf.h: Likewise. * sysdeps/stub/huge_val.h: Likewise. * sysdeps/stub/libc-lock.h: Likewise. * sysdeps/stub/signum.h: Likewise. * sysdeps/stub/statbuf.h: Likewise. * sysdeps/stub/waitflags.h: Likewise. * sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise. * sysdeps/unix/bsd/osf/alpha/statbuf.h: Likewise. * sysdeps/unix/bsd/osf/sys/mman.h: Likewise. * sysdeps/unix/bsd/signum.h: Likewise. * sysdeps/unix/bsd/statbuf.h: Likewise. * sysdeps/unix/bsd/sun/signum.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/resourcebits.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/termbits.h: Likewise. * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise. * sysdeps/unix/bsd/waitflags.h: Likewise. * sysdeps/unix/sysv/irix4/signum.h: Likewise. * sysdeps/unix/sysv/irix4/statbuf.h: Likewise. * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/direntry.h: Likewise. * sysdeps/unix/sysv/linux/gnu/types.h: Likewise. * sysdeps/unix/sysv/linux/ioctl-types.h: Likewise. * sysdeps/unix/sysv/linux/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. * sysdeps/unix/sysv/linux/resourcebits.h: Likewise. * sysdeps/unix/sysv/linux/signum.h: Likewise. * sysdeps/unix/sysv/linux/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/sys/klog.h: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/sys/ptrace.h: Likewise. * sysdeps/unix/sysv/linux/syscall.h: Likewise. * sysdeps/unix/sysv/linux/termbits.h: Likewise. * sysdeps/unix/sysv/local_lim.h: Likewise. * sysdeps/unix/sysv/sco3.2.4/syscall.h: Likewise. * sysdeps/unix/sysv/sco3.2/local_lim.h: Likewise. * sysdeps/unix/sysv/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/i386/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/sigset.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/waitflags.h: Likewise. * sysdeps/vax/huge_val.h: Likewise. * values.h: Likewise. Thu Nov 14 04:22:41 1996 Ulrich Drepper <drepper@cygnus.com> * malloc/obstack.h: Use memcpy instead of bcopy and define a macro `memcpy' using bcopy if memcpy is not available. * manual/stdio.texi: Correct description of printf customization. The argument info function is not optional anymore and the interface for `printf_function' also changed. * manual/examples/rprintf.c: Define and use argument info function. * stdio-common/printf.h (struct printf_info): Change type for field `pad' to wchar_t. Correct comment for `register_printf_function'. * nss/getXXbyYY.c [NEED_H_ERRNO]: Don't pass pointer to h_errno to reentrant function. Instead use temporary variable and set h_errno if an error occured. Reported by NIIBE Yutaka. are no bits set in the masks. Reported by baldazzi@csr.unibo.it.
1996-11-17 04:15:52 +01:00
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
update from main archive 961116 Sun Nov 17 03:13:57 1996 Ulrich Drepper <drepper@cygnus.com> * db/makedb.c: Update and reformat copyright. * elf/Makefile: Likewise. * elf/dl-close.c: Likewise. * elf/dl-debug.c: Likewise. * elf/dl-deps.c: Likewise. * elf/dl-error.c: Likewise. * elf/dl-fini.c: Likewise. * elf/dl-init.c: Likewise. * elf/dl-load.c: Likewise. * elf/dl-lookup.c: Likewise. * elf/dl-minimal.c: Likewise. * elf/dl-object.c: Likewise. * elf/dl-open.c: Likewise. * elf/dl-reloc.c: Likewise. * elf/dl-runtime.c: Likewise. * elf/dl-support.c: Likewise. * elf/dl-symbol.c: Likewise. * elf/dladdr.c: Likewise. * elf/dlclose.c: Likewise. * elf/dlerror.c: Likewise. * elf/dlopen.c: Likewise. * elf/dlsym.c: Likewise. * elf/do-rel.h: Likewise. * elf/dynamic-link.h: Likewise. * elf/eval.c: Likewise. * elf/rtld.c: Likewise. * inet/ether_hton.c: Likewise. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Likewise. * inet/getnetgrent_r.c: Likewise. * inet/Makefile (+gccwarn): Remove definition. Instead set CFLAGS-rcmd.c, CFLAGS-rexec.c, and CFLAGS-ruserpass.c to `-w'. * inet/aliases.h: Add C++ protection. * inet/ether_hton.c: Add prototype for __nss_ethers_lookup. (ether_hostton): Remove unused variable result. * inet/ether_ntoh.c: Likewise. * inet/ether_line.c: Include <ctype.h> and <string.h>. * inet/getnetgrent_r.c: Include <stdlib.h>. Use casts to prevent warnings. (innetgr): Initialize `known' and `needed'. * inet/inet_net.c: Make local variable `i' of type u_int32_t. * nss/getXXbyYY_r.c (INTERNAL (REENTRANT_NAME)) [NEED__RES]: Don't return NULL. Instead set *RESULT to NULL and return -1. * nss/getXXent_r.c (INTERNAL (REENTRANT_GETNAME)): Likewise. (SETFUNC_NAME, ENDFUNC_NAME) [NEED__RES]: Don't return anything. * nss/nss_files/files-alias.c: Debug function. I didn't worked at all before. Sat Nov 16 15:25:34 1996 Ulrich Drepper <drepper@cygnus.com> * sysdeps/posix/readv.c: Don't use PTR anymore. * sysdeps/posix/writev.c: Likewise. * version.h (VERSION): Bump to 1.98. * nss/db-Makefile: Generate lines for getXXXent iteration. * sysdeps/alpha/Dist: Don't distribute removed files divlu.S, divqu.S, remlu.S, and remqu.S. Fri Nov 15 08:55:54 1996 Andreas Jaeger <aj@arthur.pfalz.de> * posix/unistd.h: Correct typo in documentation. Thu Nov 14 18:08:14 1996 a sun <asun@zoology.washington.edu> * inet/netinet/tcp.h: Use __ protected versions instead of BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN directly. Sat Nov 16 13:44:55 1996 Ulrich Drepper <drepper@cygnus.com> * intl/loadmsgcat.c (_nl_msg_cat_cntr): Initialize so that references in libc.so are not anymore undefined. Sat Nov 16 18:17:36 1996 NIIBE Yutaka <gniibe@mri.co.jp> * io/utime.h: Rename second parameter for utime to prevent warning for -Wshadow. * dirent/dirent.h: Same here for scandir prototype. * math/mathcalls.h: Likewise for frexp and ldexp. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise for bindresvport. Sat Nov 16 03:49:27 1996 Ulrich Drepper <drepper@cygnus.com> * stdlib/tst-strtod.c: Add test for error case below. Sat Nov 16 03:48:39 1996 Wolfram Gloger <Wolfram.Gloger@dent.med.uni-muenchen.de> * stdlib/strtod.c: Recognize numbers like 0e-19. Fri Nov 15 08:38:43 1996 Andreas Jaeger <aj@arthur.pfalz.de> * time/Makefile ($(installed-localtime-file)): Fix path to rellns-sh. * Makefile: Don't generate and install gnu/lib-names.h if $(build-shared) is not `yes'. Thu Nov 14 09:23:58 1996 H.J. Lu (hjl@gnu.ai.mit.edu) * sysdeps/posix/Makefile ($(common-objpfx)mk-stdiolim): Depend on $(..)posix/posix1_lim.h, not ../posix/posix1_lim.h. * Makerules (REAL_MAKE_VERSION): New, use it instead of MAKE_VERSION. Thu Nov 14 22:10:43 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nss_files/files-XXX.x (_nss_files_get,ENTNAME_r): Fix typo. * nss/getXXent_r.c: Fix typo. Set correct return value when no further service is available. Thu Nov 14 17:48:13 1996 Ulrich Drepper <drepper@cygnus.com> * db/recno/rec_put.c: Add cast to avoid warning. * db/recno/rec_close.c: Likewise. * db/mpool/mpool.c: Likewise. * db/hash/hash_bigkey.h: Likewise. * db/hash/hash.c: Likewise. * db/btree/bt_split.c: Likewise. * db/btree/bt_put.c: Likewise. Thu Nov 14 14:11:44 1996 Ulrich Drepper <drepper@cygnus.com> * dirent/dirent.h: Update copyright. * elf/elf.h: Likewise. * elf/link.h: Likewise. * gmon/sys/gmon_out.h: Likewise. * gnu-versions.h: Likewise. * intl/libintl.h: Likewise. * io/fcntl.h: Likewise. * io/ftw.h: Likewise. * io/sys/statfs.h: Likewise. * io/utime.h: Likewise. * locale/langinfo.h: Likewise. * malloc/malloc.h: Likewise. * malloc/obstack.h: Likewise. * misc/ar.h: Likewise. * misc/error.h: Likewise. * misc/mntent.h: Likewise. * misc/sgtty.h: Likewise. * misc/sys/cdefs.h: Likewise. * misc/sys/dir.h: Likewise. * misc/sys/file.h: Likewise. * misc/sys/ioctl.h: Likewise. * misc/sys/ustat.h: Likewise. * posix/fnmatch.h: Likewise. * posix/getopt.h: Likewise. * posix/glob.h: Likewise. * posix/posix2_lim.h: Likewise. * posix/regex.h: Likewise. * posix/sys/times.h: Likewise. * posix/sys/types.h: Likewise. * posix/sys/utsname.h: Likewise. * posix/tar.h: Likewise. * posix/wordexp.h: Likewise. * resource/sys/resource.h: Likewise. * resource/sys/vlimit.h: Likewise. * resource/sys/vtimes.h: Likewise. * socket/sys/socket.h: Likewise. * socket/sys/un.h: Likewise. * stdio-common/printf.h: Likewise. * stdlib/alloca.h: Likewise. * string/argz.h: Likewise. * string/endian.h: Likewise. * string/envz.h: Likewise. * string/memory.h: Likewise. * string/strings.h: Likewise. * sysdeps/generic/crypt.h: Likewise. * sysdeps/generic/direntry.h: Likewise. * sysdeps/generic/gnu/types.h: Likewise. * sysdeps/generic/ioctl-types.h: Likewise. * sysdeps/generic/netinet/in.h: Likewise. * sysdeps/generic/resourcebits.h: Likewise. * sysdeps/generic/sigset.h: Likewise. * sysdeps/generic/sockaddrcom.h: Likewise. * sysdeps/generic/sys/mman.h: Likewise. * sysdeps/generic/sys/ptrace.h: Likewise. * sysdeps/generic/termbits.h: Likewise. * sysdeps/generic/waitstatus.h: Likewise. * sysdeps/ieee754/huge_val.h: Likewise. * sysdeps/ieee754/nan.h: Likewise. * sysdeps/mach/hurd/local_lim.h: Likewise. * sysdeps/mach/hurd/statbuf.h: Likewise. * sysdeps/stub/huge_val.h: Likewise. * sysdeps/stub/libc-lock.h: Likewise. * sysdeps/stub/signum.h: Likewise. * sysdeps/stub/statbuf.h: Likewise. * sysdeps/stub/waitflags.h: Likewise. * sysdeps/unix/bsd/bsd4.4/sockaddrcom.h: Likewise. * sysdeps/unix/bsd/osf/alpha/statbuf.h: Likewise. * sysdeps/unix/bsd/osf/sys/mman.h: Likewise. * sysdeps/unix/bsd/signum.h: Likewise. * sysdeps/unix/bsd/statbuf.h: Likewise. * sysdeps/unix/bsd/sun/signum.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/resourcebits.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/sys/mman.h: Likewise. * sysdeps/unix/bsd/sun/sunos4/termbits.h: Likewise. * sysdeps/unix/bsd/ultrix4/sys/mman.h: Likewise. * sysdeps/unix/bsd/waitflags.h: Likewise. * sysdeps/unix/sysv/irix4/signum.h: Likewise. * sysdeps/unix/sysv/irix4/statbuf.h: Likewise. * sysdeps/unix/sysv/irix4/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/alpha/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/alpha/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/direntry.h: Likewise. * sysdeps/unix/sysv/linux/gnu/types.h: Likewise. * sysdeps/unix/sysv/linux/ioctl-types.h: Likewise. * sysdeps/unix/sysv/linux/local_lim.h: Likewise. * sysdeps/unix/sysv/linux/netinet/in.h: Likewise. * sysdeps/unix/sysv/linux/resourcebits.h: Likewise. * sysdeps/unix/sysv/linux/signum.h: Likewise. * sysdeps/unix/sysv/linux/statbuf.h: Likewise. * sysdeps/unix/sysv/linux/sys/io.h: Likewise. * sysdeps/unix/sysv/linux/sys/klog.h: Likewise. * sysdeps/unix/sysv/linux/sys/mman.h: Likewise. * sysdeps/unix/sysv/linux/sys/ptrace.h: Likewise. * sysdeps/unix/sysv/linux/syscall.h: Likewise. * sysdeps/unix/sysv/linux/termbits.h: Likewise. * sysdeps/unix/sysv/local_lim.h: Likewise. * sysdeps/unix/sysv/sco3.2.4/syscall.h: Likewise. * sysdeps/unix/sysv/sco3.2/local_lim.h: Likewise. * sysdeps/unix/sysv/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/i386/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/sigset.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/signum.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/statbuf.h: Likewise. * sysdeps/unix/sysv/sysv4/waitflags.h: Likewise. * sysdeps/vax/huge_val.h: Likewise. * values.h: Likewise. Thu Nov 14 04:22:41 1996 Ulrich Drepper <drepper@cygnus.com> * malloc/obstack.h: Use memcpy instead of bcopy and define a macro `memcpy' using bcopy if memcpy is not available. * manual/stdio.texi: Correct description of printf customization. The argument info function is not optional anymore and the interface for `printf_function' also changed. * manual/examples/rprintf.c: Define and use argument info function. * stdio-common/printf.h (struct printf_info): Change type for field `pad' to wchar_t. Correct comment for `register_printf_function'. * nss/getXXbyYY.c [NEED_H_ERRNO]: Don't pass pointer to h_errno to reentrant function. Instead use temporary variable and set h_errno if an error occured. Reported by NIIBE Yutaka. are no bits set in the masks. Reported by baldazzi@csr.unibo.it.
1996-11-17 04:15:52 +01: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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
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 07:40:42 +02:00
<https://www.gnu.org/licenses/>. */
#include <dlfcn.h>
#include <ldsodefs.h>
#include <shlib-compat.h>
Update. 2004-10-18 Jakub Jelinek <jakub@redhat.com> * elf/dl-libc.c (__libc_dlsym_private, __libc_register_dl_open_hook): New functions. (__libc_dlopen_mode): Call __libc_register_dl_open_hook and __libc_register_dlfcn_hook. * dlfcn/Makefile (routines, elide-routines.os): Set. Add rules to build and test tststatic2. * dlfcn/tststatic2.c: New test. * dlfcn/modstatic2.c: New test module. * dlfcn/dladdr.c: Call _dlfcn_hook from libdl.so if not NULL. Define __ prefixed routine in libc.a and in libdl.a just call it. * dlfcn/dladdr1.c: Likewise. * dlfcn/dlclose.c: Likewise. * dlfcn/dlerror.c: Likewise. * dlfcn/dlinfo.c: Likewise. * dlfcn/dlmopen.c: Likewise. * dlfcn/dlopen.c: Likewise. * dlfcn/dlopenold.c: Likewise. * dlfcn/dlsym.c: Likewise. * dlfcn/dlvsym.c: Likewise. * dlfcn/sdladdr.c: New file. * dlfcn/sdladdr1.c: New file. * dlfcn/sdlclose.c: New file. * dlfcn/sdlerror.c: New file. * dlfcn/sdlinfo.c: New file. * dlfcn/sdlopen.c: New file. * dlfcn/sdlsym.c: New file. * dlfcn/sdlvsym.c: New file. * dlfcn/Versions (libdl): Export _dlfcn_hook@GLIBC_PRIVATE. * include/dlfcn.h (DL_CALLER_DECL, DL_CALLER RETURN_ADDRESS): Define. (struct dlfcn_hook): New type. (_dlfcn_hook): New extern decl. (__dlopen, __dlclose, __dlsym, __dlerror, __dladdr, __dladdr1, __dlinfo, __dlmopen, __libc_dlsym_private, __libc_register_dl_open_hook, __libc_register_dlfcn_hook): New prototypes. (__dlvsym): Use DL_CALLER_DECL. * include/libc-symbols.h: Define libdl_hidden_proto and friends. * malloc/arena.c (_dl_open_hook): Extern decl. (ptmalloc_init): Don't call _dl_addr when dlopened from statically linked programs but don't use brk for them either.
2004-10-19 01:17:46 +02:00
int
__dladdr (const void *address, Dl_info *info)
{
#ifdef SHARED
if (GLRO (dl_dlfcn_hook) != NULL)
return GLRO (dl_dlfcn_hook)->dladdr (address, info);
#endif
return _dl_addr (address, info, NULL, NULL);
}
versioned_symbol (libc, __dladdr, dladdr, GLIBC_2_34);
#if OTHER_SHLIB_COMPAT (libdl, GLIBC_2_0, GLIBC_2_34)
compat_symbol (libdl, __dladdr, dladdr, GLIBC_2_0);
Update. 2004-10-18 Jakub Jelinek <jakub@redhat.com> * elf/dl-libc.c (__libc_dlsym_private, __libc_register_dl_open_hook): New functions. (__libc_dlopen_mode): Call __libc_register_dl_open_hook and __libc_register_dlfcn_hook. * dlfcn/Makefile (routines, elide-routines.os): Set. Add rules to build and test tststatic2. * dlfcn/tststatic2.c: New test. * dlfcn/modstatic2.c: New test module. * dlfcn/dladdr.c: Call _dlfcn_hook from libdl.so if not NULL. Define __ prefixed routine in libc.a and in libdl.a just call it. * dlfcn/dladdr1.c: Likewise. * dlfcn/dlclose.c: Likewise. * dlfcn/dlerror.c: Likewise. * dlfcn/dlinfo.c: Likewise. * dlfcn/dlmopen.c: Likewise. * dlfcn/dlopen.c: Likewise. * dlfcn/dlopenold.c: Likewise. * dlfcn/dlsym.c: Likewise. * dlfcn/dlvsym.c: Likewise. * dlfcn/sdladdr.c: New file. * dlfcn/sdladdr1.c: New file. * dlfcn/sdlclose.c: New file. * dlfcn/sdlerror.c: New file. * dlfcn/sdlinfo.c: New file. * dlfcn/sdlopen.c: New file. * dlfcn/sdlsym.c: New file. * dlfcn/sdlvsym.c: New file. * dlfcn/Versions (libdl): Export _dlfcn_hook@GLIBC_PRIVATE. * include/dlfcn.h (DL_CALLER_DECL, DL_CALLER RETURN_ADDRESS): Define. (struct dlfcn_hook): New type. (_dlfcn_hook): New extern decl. (__dlopen, __dlclose, __dlsym, __dlerror, __dladdr, __dladdr1, __dlinfo, __dlmopen, __libc_dlsym_private, __libc_register_dl_open_hook, __libc_register_dlfcn_hook): New prototypes. (__dlvsym): Use DL_CALLER_DECL. * include/libc-symbols.h: Define libdl_hidden_proto and friends. * malloc/arena.c (_dl_open_hook): Extern decl. (ptmalloc_init): Don't call _dl_addr when dlopened from statically linked programs but don't use brk for them either.
2004-10-19 01:17:46 +02:00
#endif