diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | elf/dl-support.c | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ldsodefs.h | 38 |
3 files changed, 44 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index e447b4dacf..0bf61dd9d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2001-01-05 Ulrich Drepper <drepper@redhat.com> + * elf/dl-support.c (non_dynamic_init): Don't define DL_FIND_AUXV + if it is not available. Instead use it only if it is available. + * sysdeps/unix/sysv/linux/ldsodefs.h: New file. + * iconv/gconv_simple.c (internal_ics4_loop): Correct test for overflowing output buffer. (internal_ucs4_loop_unaligned): Likewise. diff --git a/elf/dl-support.c b/elf/dl-support.c index 6d185c6373..05dcd05d5e 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -107,15 +107,6 @@ int _dl_starting_up = 1; At this time it is not anymore a problem to modify the tables. */ __libc_lock_define_initialized_recursive (, _dl_load_lock) -#ifndef DL_FIND_AUXV -# define DL_FIND_AUXV(auxp, envp) \ - do { \ - void **_tmp; \ - for (_tmp = (void **) (envp); *_tmp; ++_tmp) \ - continue; \ - (auxp) = (void *) ++_tmp; \ - } while (0) -#endif extern int _dl_clktck; @@ -125,6 +116,7 @@ static void non_dynamic_init (int argc, char **argv, char **envp) static void non_dynamic_init (int argc, char **argv, char **envp) { +#ifdef DL_FIND_AUXV ElfW(auxv_t) *av; DL_FIND_AUXV (av, envp); @@ -142,6 +134,7 @@ non_dynamic_init (int argc, char **argv, char **envp) _dl_clktck = av->a_un.a_val; break; } +#endif if (!_dl_pagesize) _dl_pagesize = __getpagesize (); diff --git a/sysdeps/unix/sysv/linux/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h new file mode 100644 index 0000000000..d5ef2e2643 --- /dev/null +++ b/sysdeps/unix/sysv/linux/ldsodefs.h @@ -0,0 +1,38 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + Copyright (C) 2001 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _LDSODEFS_H + +/* Get the real definitions. */ +#include_next <ldsodefs.h> + +/* Now define our stuff. */ + +/* Locating the auxiliary vector. */ +#ifndef DL_FIND_AUXV +# define DL_FIND_AUXV(auxp, envp) \ + do { \ + void **_tmp; \ + for (_tmp = (void **) (envp); *_tmp; ++_tmp) \ + continue; \ + (auxp) = (void *) ++_tmp; \ + } while (0) +#endif + +#endif /* ldsodefs.h */ |