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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How are CPU-optimized libraries supposed to work?


On Fri, Oct 03, 2003 at 12:07:52PM -0700, Roland McGrath wrote:
> > Then why do we search CPU-optimized directories at all, if we don't
> > support using the same sources built with different options?
> 
> The feature is there for finding all libraries, not just for libc.
> 
> Having some mismatch ld+libc cases work is worthwhile.  We have taken
> special pains to make __thread vs no-__thread combinations work, for
> example.  Making i386 vs i686 work is worthwhile too.  But there is no
> generic principle by which you should expect this to already have worked,
> or consider it a bug per se if it doesn't.  Any such support is a special case.

Thanks, I understand now.

In any case here's a patch to make i686 libraries work with an i386
ld.so again.  Results look pretty good so far.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2003-10-03  Daniel Jacobowitz  <drow@mvista.com>

	* sysdeps/generic/ldsodefs.h (struct rtld_global): Include timing
	members if HP_TIMING_PAD is defined.
	* sysdeps/i386/hp-timing.h: New file.

--- glibc-2.3.2/sysdeps/generic/ldsodefs.h.orig	2003-10-03 11:47:45.000000000 -0400
+++ glibc-2.3.2/sysdeps/generic/ldsodefs.h	2003-10-03 11:48:10.000000000 -0400
@@ -292,7 +292,7 @@ struct rtld_global
   /* The object to be initialized first.  */
   EXTERN struct link_map *_dl_initfirst;
 
-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL
+#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL || HP_TIMING_PAD
   /* Start time on CPU clock.  */
   EXTERN hp_timing_t _dl_cpuclock_offset;
 
--- /dev/null	1969-12-31 19:00:00.000000000 -0500
+++ glibc-2.3.2/sysdeps/i386/hp-timing.h	2003-10-03 11:50:30.000000000 -0400
@@ -0,0 +1,34 @@
+/* High precision, low overhead timing functions.  i386 version.
+   Copyright (C) 2003 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 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.
+
+   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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _i386_HP_TIMING_H
+#define _i386_HP_TIMING_H	1
+
+#define hp_timing_t hp_timing_t__
+#include <sysdeps/generic/hp-timing.h>
+#undef hp_timing_t
+
+/* We don't use high-precision timers, but we might load an i686 libpthread
+   which does.  */
+#define HP_TIMING_PAD 1
+
+/* i686 uses 64bit values for the times.  */
+typedef unsigned long long int hp_timing_t;
+
+#endif	/* hp-timing.h */


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