This is the mail archive of the 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 again.  Results look pretty good so far.

Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer

2003-10-03  Daniel Jacobowitz  <>

	* 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;
   /* 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
+   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]