This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Recent glibc locale changes on ia64.


On Thu, Sep 07, 2000 at 09:30:29PM -0700, Ulrich Drepper wrote:
> "David S. Miller" <davem@redhat.com> writes:
> 
> > >From the descriptions I've seen of this problem, it sounds a lot like
> > yet another unaligned memory access problem in the locale code.
> 
> No.  You should not jump to such a conclusion without looking at the
> code.  Every place where locale data is accessed word-wise is
> protected with asserts to ensure alignment.

This is my currect patch to get "make check" to pass iconvdata under
ia64. I have no idea what this patch

2000-09-03  Bruno Haible  <haible@clisp.cons.org>

	* iconv/gconv_dl.c (do_release_shlib): Don't decrement the counter
	below -TRIES_BEFORE_UNLOAD-1, to avoid wraparound.

is supposed to fix. It looks completely bogus to me. The only place it
gets decremented is

	assert (obj->counter > 0);
	--obj->counter;

Even if it gets decremented by some magic, its logic looks very strange
to me. Bruno, do you have a testcase for your patch? I'd like to see it
myself.

BTW, it also passed "make check" under ia32.

Thanks.

H.J.
---
2000-09-08  H.J. Lu  <hjl@gnu.org>

	* iconv/gconv_dl.c (do_release_shlib): Remove the bogus patch
	made on 2000-09-03 by Bruno Haible  <haible@clisp.cons.org>.

2000-09-08  Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.

	* sysdeps/ia64/Makefile (sysdep-rtld-routines): New variable.

Index: iconv/gconv_dl.c
===================================================================
RCS file: /work/cvs/gnu/glibc/iconv/gconv_dl.c,v
retrieving revision 1.1.1.3
diff -u -p -r1.1.1.3 gconv_dl.c
--- iconv/gconv_dl.c	2000/09/05 04:02:03	1.1.1.3
+++ iconv/gconv_dl.c	2000/09/08 18:21:01
@@ -164,8 +164,6 @@ do_release_shlib (const void *nodep, VIS
     }
   else if (obj->counter <= 0)
     {
-      if (obj->counter >= -TRIES_BEFORE_UNLOAD)
-	--obj->counter;
       if (obj->counter < -TRIES_BEFORE_UNLOAD && obj->handle != NULL)
 	{
 	  /* Unload the shared object.  */
Index: sysdeps/ia64/Makefile
===================================================================
RCS file: /work/cvs/gnu/glibc/sysdeps/ia64/Makefile,v
retrieving revision 1.1.1.2
diff -u -p -r1.1.1.2 Makefile
--- sysdeps/ia64/Makefile	2000/09/05 04:03:07	1.1.1.2
+++ sysdeps/ia64/Makefile	2000/09/08 16:13:44
@@ -5,4 +5,5 @@ endif
 ifeq ($(subdir),elf)
 sysdep-dl-routines += dl-symaddr dl-fptr
 sysdep_routines += $(sysdep-dl-routines)
+sysdep-rtld-routines += $(sysdep-dl-routines)
 endif

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]