* elf/dl-minimal.c: Define _itoa for 32-bit machines with HP timing.
	* elf/dl-reloc.c: Pretty printing.
	* sysdeps/generic/ldsodefs.h: Move _dl_hp_timing_overhead and
	procinfo-related variables in rtld_global struct.
	* elf/dl-support.c: Likewise.
	* elf/rtld.c: Likewise.
	* sysdeps/i386/i686/Makefile: Likewise.
	* sysdeps/i386/i686/hp-timing.c: Likewise.
	* sysdeps/i386/i686/hp-timing.h: Likewise.
	* sysdeps/ia64/Makefile: Likewise.
	* sysdeps/ia64/hp-timing.c: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/Makefile: Likewise.
	* sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/dl-procinfo.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise.
	* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Likewise.
	* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise.
	* sysdeps/x86_64/Makefile: Likewise.
This commit is contained in:
Ulrich Drepper 2002-02-01 07:49:47 +00:00
parent 5688da5537
commit ccdf0cab1d
19 changed files with 188 additions and 66 deletions

View File

@ -1,5 +1,25 @@
2002-01-31 Ulrich Drepper <drepper@redhat.com> 2002-01-31 Ulrich Drepper <drepper@redhat.com>
* elf/dl-minimal.c: Define _itoa for 32-bit machines with HP timing.
* elf/dl-reloc.c: Pretty printing.
* sysdeps/generic/ldsodefs.h: Move _dl_hp_timing_overhead and
procinfo-related variables in rtld_global struct.
* elf/dl-support.c: Likewise.
* elf/rtld.c: Likewise.
* sysdeps/i386/i686/Makefile: Likewise.
* sysdeps/i386/i686/hp-timing.c: Likewise.
* sysdeps/i386/i686/hp-timing.h: Likewise.
* sysdeps/ia64/Makefile: Likewise.
* sysdeps/ia64/hp-timing.c: Likewise.
* sysdeps/sparc/sparc32/sparcv9/Makefile: Likewise.
* sysdeps/sparc/sparc32/sparcv9/hp-timing.c: Likewise.
* sysdeps/unix/sysv/linux/arm/dl-procinfo.c: Likewise.
* sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Likewise.
* sysdeps/unix/sysv/linux/i386/Makefile: Likewise.
* sysdeps/unix/sysv/linux/i386/dl-procinfo.c: Likewise.
* sysdeps/unix/sysv/linux/i386/dl-procinfo.h: Likewise.
* sysdeps/x86_64/Makefile: Likewise.
* sysdeps/generic/ldsodefs.h: Add _dl_load_lock, _dl_lazy, * sysdeps/generic/ldsodefs.h: Add _dl_load_lock, _dl_lazy,
_dl_dynamic_weak, _dl_fpu_control, _dl_cpuclock_offset, and _dl_dynamic_weak, _dl_fpu_control, _dl_cpuclock_offset, and
_dl_debug_fd to rtld_global. _dl_debug_fd to rtld_global.

View File

@ -268,3 +268,26 @@ __strtoul_internal (const char *nptr, char **endptr, int base, int group)
*endptr = (char *) nptr; *endptr = (char *) nptr;
return result * sign; return result * sign;
} }
#if HP_TIMING_AVAIL && ULONG_MAX <= 4294967295UL
/* We need this function to print the cycle count. On 64-bit machines the
_itoa_word function should be used. */
char *
_itoa (value, buflim, base, upper_case)
unsigned long long int value;
char *buflim;
unsigned int base;
int upper_case;
{
char *bp = buflim;
assert (base == 10);
do
*--bp = '0' + value % 10;
while ((value /= 10) != 0);
return bp;
}
#endif

View File

@ -138,7 +138,7 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
(ELFW(ST_BIND) ((*ref)->st_info) != STB_LOCAL \ (ELFW(ST_BIND) ((*ref)->st_info) != STB_LOCAL \
? ((__builtin_expect ((*ref) == l->l_lookup_cache.sym, 0) \ ? ((__builtin_expect ((*ref) == l->l_lookup_cache.sym, 0) \
&& elf_machine_type_class (r_type) == l->l_lookup_cache.type_class) \ && elf_machine_type_class (r_type) == l->l_lookup_cache.type_class) \
? (bump_num_cache_relocations (), \ ? (bump_num_cache_relocations (), \
(*ref) = l->l_lookup_cache.ret, \ (*ref) = l->l_lookup_cache.ret, \
l->l_lookup_cache.value) \ l->l_lookup_cache.value) \
: ({ lookup_t _lr; \ : ({ lookup_t _lr; \

View File

@ -91,6 +91,9 @@ struct r_scope_elem *_dl_main_searchlist = &_dl_initial_searchlist;
/* Nonzero during startup. */ /* Nonzero during startup. */
int _dl_starting_up = 1; int _dl_starting_up = 1;
/* Get architecture specific initializer. */
#include <dl-procinfo.c>
/* We expect less than a second for relocation. */ /* We expect less than a second for relocation. */
#ifdef HP_SMALL_TIMING_AVAIL #ifdef HP_SMALL_TIMING_AVAIL
# undef HP_TIMING_AVAIL # undef HP_TIMING_AVAIL

View File

@ -74,6 +74,8 @@ int _dl_starting_up;
(except those which cannot be added for some reason). */ (except those which cannot be added for some reason). */
struct rtld_global _rtld_global = struct rtld_global _rtld_global =
{ {
/* Get architecture specific initializer. */
#include <dl-procinfo.c>
._dl_debug_fd = STDERR_FILENO, ._dl_debug_fd = STDERR_FILENO,
#if 1 #if 1
/* XXX I know about at least one case where we depend on the old /* XXX I know about at least one case where we depend on the old

View File

@ -278,9 +278,12 @@ struct rtld_global
/* The object to be initialized first. */ /* The object to be initialized first. */
EXTERN struct link_map *_dl_initfirst; EXTERN struct link_map *_dl_initfirst;
/* Start time on CPU clock. */
#if HP_TIMING_AVAIL #if HP_TIMING_AVAIL
/* Start time on CPU clock. */
EXTERN hp_timing_t _dl_cpuclock_offset; EXTERN hp_timing_t _dl_cpuclock_offset;
/* Overhead of a high-precision timing measurement. */
EXTERN hp_timing_t _dl_hp_timing_overhead;
#endif #endif
/* Name of the shared object to be profiled (if any). */ /* Name of the shared object to be profiled (if any). */
@ -320,6 +323,10 @@ struct rtld_global
/* File descriptor to write debug messages to. */ /* File descriptor to write debug messages to. */
EXTERN int _dl_debug_fd; EXTERN int _dl_debug_fd;
/* Get architecture specific definitions. */
#define PROCINFO_DECL
#include <dl-procinfo.c>
/* Structure describing the dynamic linker itself. */ /* Structure describing the dynamic linker itself. */
EXTERN struct link_map _dl_rtld_map; EXTERN struct link_map _dl_rtld_map;
#ifdef SHARED #ifdef SHARED

View File

@ -1,3 +1,4 @@
ifeq ($(subdir),csu) ifeq ($(subdir),csu)
sysdep_routines += hp-timing sysdep_routines += hp-timing
static-only-routines += hp-timing
endif endif

View File

@ -1,5 +1,5 @@
/* Support for high precision, low overhead timing functions. i686 version. /* Support for high precision, low overhead timing functions. i686 version.
Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -21,4 +21,4 @@
#include <hp-timing.h> #include <hp-timing.h>
/* We have to define the variable for the overhead. */ /* We have to define the variable for the overhead. */
hp_timing_t __libc_hp_timing_overhead; hp_timing_t _dl_hp_timing_overhead;

View File

@ -1,5 +1,5 @@
/* High precision, low overhead timing functions. i686 version. /* High precision, low overhead timing functions. i686 version.
Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 1998, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -84,10 +84,6 @@
/* We use 64bit values for the times. */ /* We use 64bit values for the times. */
typedef unsigned long long int hp_timing_t; typedef unsigned long long int hp_timing_t;
/* Internal variable used to store the overhead of the measurement
opcodes. */
extern hp_timing_t __libc_hp_timing_overhead;
/* Set timestamp value to zero. */ /* Set timestamp value to zero. */
#define HP_TIMING_ZERO(Var) (Var) = (0) #define HP_TIMING_ZERO(Var) (Var) = (0)
@ -101,17 +97,20 @@ extern hp_timing_t __libc_hp_timing_overhead;
/* Use two 'rdtsc' instructions in a row to find out how long it takes. */ /* Use two 'rdtsc' instructions in a row to find out how long it takes. */
#define HP_TIMING_DIFF_INIT() \ #define HP_TIMING_DIFF_INIT() \
do { \ do { \
int __cnt = 5; \ if (GL(dl_hp_timing_overhead) == 0) \
__libc_hp_timing_overhead = ~0ull; \
do \
{ \ { \
hp_timing_t __t1, __t2; \ int __cnt = 5; \
HP_TIMING_NOW (__t1); \ GL(dl_hp_timing_overhead) = ~0ull; \
HP_TIMING_NOW (__t2); \ do \
if (__t2 - __t1 < __libc_hp_timing_overhead) \ { \
__libc_hp_timing_overhead = __t2 - __t1; \ hp_timing_t __t1, __t2; \
HP_TIMING_NOW (__t1); \
HP_TIMING_NOW (__t2); \
if (__t2 - __t1 < GL(dl_hp_timing_overhead)) \
GL(dl_hp_timing_overhead) = __t2 - __t1; \
} \
while (--__cnt > 0); \
} \ } \
while (--__cnt > 0); \
} while (0) } while (0)
/* It's simple arithmetic for us. */ /* It's simple arithmetic for us. */
@ -122,7 +121,7 @@ extern hp_timing_t __libc_hp_timing_overhead;
do { \ do { \
char __not_done; \ char __not_done; \
hp_timing_t __oldval = (Sum); \ hp_timing_t __oldval = (Sum); \
hp_timing_t __diff = (Diff) - __libc_hp_timing_overhead; \ hp_timing_t __diff = (Diff) - GL(dl_hp_timing_overhead); \
do \ do \
{ \ { \
hp_timing_t __newval = __oldval + __diff; \ hp_timing_t __newval = __oldval + __diff; \

View File

@ -8,6 +8,7 @@ endif
ifeq ($(subdir), csu) ifeq ($(subdir), csu)
CPPFLAGS-start.S = -D__ASSEMBLY__ CPPFLAGS-start.S = -D__ASSEMBLY__
sysdep_routines += hp-timing sysdep_routines += hp-timing
static-only-routines += hp-timing
endif endif
ifeq ($(subdir),elf) ifeq ($(subdir),elf)

View File

@ -1,5 +1,5 @@
/* Support for high precision, low overhead timing functions. IA-64 version. /* Support for high precision, low overhead timing functions. IA-64 version.
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001.
@ -21,4 +21,4 @@
#include <hp-timing.h> #include <hp-timing.h>
/* We have to define the variable for the overhead. */ /* We have to define the variable for the overhead. */
hp_timing_t __libc_hp_timing_overhead; hp_timing_t _dl_hp_timing_overhead;

View File

@ -2,6 +2,7 @@ sysdep-CFLAGS += -mcpu=v8 -mtune=ultrasparc -Wa,-Av9a
ifeq ($(subdir),csu) ifeq ($(subdir),csu)
sysdep_routines += hp-timing sysdep_routines += hp-timing
static-only-routines += hp-timing
endif endif
ifeq ($(subst gnulib,string,$(subdir)),string) ifeq ($(subst gnulib,string,$(subdir)),string)

View File

@ -1,5 +1,5 @@
/* Support for high precision, low overhead timing functions. sparcv9 version. /* Support for high precision, low overhead timing functions. sparcv9 version.
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by David S. Miller <davem@redhat.com>, 2001. Contributed by David S. Miller <davem@redhat.com>, 2001.
@ -21,4 +21,4 @@
#include <hp-timing.h> #include <hp-timing.h>
/* We have to define the variable for the overhead. */ /* We have to define the variable for the overhead. */
hp_timing_t __libc_hp_timing_overhead; hp_timing_t _dl_hp_timing_overhead;

View File

@ -1,5 +1,5 @@
/* Data for Linux/ARM version of processor capability information. /* Data for Linux/ARM version of processor capability information.
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Philip Blundell <philb@gnu.org>, 2001. Contributed by Philip Blundell <philb@gnu.org>, 2001.
@ -19,13 +19,44 @@
02111-1307 USA. */ 02111-1307 USA. */
/* This information must be kept in sync with the _DL_HWCAP_COUNT and /* This information must be kept in sync with the _DL_HWCAP_COUNT and
_DL_PLATFORM_COUNT definitions in procinfo.h. */ _DL_PLATFORM_COUNT definitions in procinfo.h.
If anything should be added here check whether the size of each string
is still ok with the given array size.
/* If anything should be added here check whether the size of each string All the #ifdefs in the definitions ar equite irritating but
is still ok with the given array size. */ necessary if we want to avoid duplicating the information. There
const char _dl_arm_cap_flags[][10] = are three different modes:
{
- PROCINFO_DECL is defined. This means we are only interested in
declarations.
- PROCINFO_DECL is not defined:
+ if SHARED is defined the file is included in an array
initializer. The .element = { ... } syntax is needed.
+ if SHARED is not defined a normal array initialization is
needed.
*/
#ifdef PROCINFO_DECL
EXTERN
#endif
#if !defined PROCINFO_DECL && defined SHARED
._dl_arm_cap_flags
#else
const char _dl_arm_cap_flags[][10]
#endif
#ifndef PROCINFO_DECL
= {
"swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp", "swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp",
}; }
#endif
#if !defined SHARED || defined PROCINFO_DECL
;
#else
,
#endif
#undef PROCINFO_DECL

View File

@ -1,5 +1,5 @@
/* Linux/ARM version of processor capability information handling macros. /* Linux/ARM version of processor capability information handling macros.
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Philip Blundell <philb@gnu.org>, 2001. Contributed by Philip Blundell <philb@gnu.org>, 2001.
@ -23,9 +23,6 @@
#include <ldsodefs.h> #include <ldsodefs.h>
/* If anything should be added here check whether the size of each string
is still ok with the given array size. */
extern const char _dl_arm_cap_flags[][10];
#define _DL_HWCAP_COUNT 32 #define _DL_HWCAP_COUNT 32
/* The kernel provides platform data but it is not interesting. */ /* The kernel provides platform data but it is not interesting. */
@ -42,7 +39,7 @@ _dl_procinfo (int word)
for (i = 0; i < _DL_HWCAP_COUNT; ++i) for (i = 0; i < _DL_HWCAP_COUNT; ++i)
if (word & (1 << i)) if (word & (1 << i))
_dl_printf (" %s", _dl_arm_cap_flags[i]); _dl_printf (" %s", GL(dl_arm_cap_flags)[i]);
_dl_printf ("\n"); _dl_printf ("\n");
@ -53,7 +50,7 @@ static inline const char *
__attribute__ ((unused)) __attribute__ ((unused))
_dl_hwcap_string (int idx) _dl_hwcap_string (int idx)
{ {
return _dl_arm_cap_flags[idx]; return GL(dl_arm_cap_flags)[idx];
}; };
enum enum
@ -78,7 +75,7 @@ _dl_string_hwcap (const char *str)
for (i = 0; i < _DL_HWCAP_COUNT; i++) for (i = 0; i < _DL_HWCAP_COUNT; i++)
{ {
if (strcmp (str, _dl_arm_cap_flags[i]) == 0) if (strcmp (str, GL(dl_arm_cap_flags)[i]) == 0)
return i; return i;
} }
return -1; return -1;

View File

@ -7,12 +7,6 @@ ifeq ($(subdir),elf)
sysdep-others += lddlibc4 sysdep-others += lddlibc4
install-bin += lddlibc4 install-bin += lddlibc4
# extra shared linker files to link into dl-allobjs.so and libc
sysdep-dl-routines += dl-procinfo
sysdep_routines += dl-procinfo
# extra shared linker files to link only into dl-allobjs.so
sysdep-rtld-routines += dl-procinfo
ifeq (yes,$(build-shared)) ifeq (yes,$(build-shared))
# This is needed to support g++ v2 and v3. # This is needed to support g++ v2 and v3.
sysdep_routines += framestate sysdep_routines += framestate

View File

@ -1,7 +1,7 @@
/* Data for Linux/i386 version of processor capability information. /* Data for Linux/i386 version of processor capability information.
Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2001. Contributed by Ulrich Drepper <drepper@redhat.com>, 2001.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public modify it under the terms of the GNU Lesser General Public
@ -19,20 +19,66 @@
02111-1307 USA. */ 02111-1307 USA. */
/* This information must be kept in sync with the _DL_HWCAP_COUNT and /* This information must be kept in sync with the _DL_HWCAP_COUNT and
_DL_PLATFORM_COUNT definitions in procinfo.h. */ _DL_PLATFORM_COUNT definitions in procinfo.h.
If anything should be added here check whether the size of each string
is still ok with the given array size.
/* If anything should be added here check whether the size of each string All the #ifdefs in the definitions ar equite irritating but
is still ok with the given array size. */ necessary if we want to avoid duplicating the information. There
const char _dl_x86_cap_flags[][7] = are three different modes:
{
- PROCINFO_DECL is defined. This means we are only interested in
declarations.
- PROCINFO_DECL is not defined:
+ if SHARED is defined the file is included in an array
initializer. The .element = { ... } syntax is needed.
+ if SHARED is not defined a normal array initialization is
needed.
*/
#ifdef PROCINFO_DECL
EXTERN
#endif
#if !defined PROCINFO_DECL && defined SHARED
._dl_x86_cap_flags
#else
const char _dl_x86_cap_flags[32][8]
#endif
#ifndef PROCINFO_DECL
= {
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
"cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov", "cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
"pat", "pse36", "psn", "19", "20", "21", "22", "mmx", "pat", "pse36", "pn", "clflush", "20", "dts", "acpi", "mmx",
"osfxsr", "xmm", "xmm2", "27", "28", "29", "30", "amd3d" "fxsr", "sse", "sse2", "ss", "ht", "tm", "ia64", "amd3d"
}; }
#endif
#if !defined SHARED || defined PROCINFO_DECL
;
#else
,
#endif
const char _dl_x86_platforms[][5] = #ifdef PROCINFO_DECL
{ EXTERN
#endif
#if !defined PROCINFO_DECL && defined SHARED
._dl_x86_platforms
#else
const char _dl_x86_platforms[4][5]
#endif
#ifndef PROCINFO_DECL
= {
"i386", "i486", "i586", "i686" "i386", "i486", "i586", "i686"
}; }
#endif
#if !defined SHARED || defined PROCINFO_DECL
;
#else
,
#endif
#undef PROCINFO_DECL

View File

@ -1,5 +1,5 @@
/* Linux/i386 version of processor capability information handling macros. /* Linux/i386 version of processor capability information handling macros.
Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -23,12 +23,8 @@
#include <ldsodefs.h> #include <ldsodefs.h>
/* If anything should be added here check whether the size of each string
is still ok with the given array size. */
extern const char _dl_x86_cap_flags[][7];
#define _DL_HWCAP_COUNT 32 #define _DL_HWCAP_COUNT 32
extern const char _dl_x86_platforms[][5];
#define _DL_PLATFORMS_COUNT 4 #define _DL_PLATFORMS_COUNT 4
/* Start at 48 to reserve some space. */ /* Start at 48 to reserve some space. */
@ -49,7 +45,7 @@ _dl_procinfo (int word)
for (i = 0; i < _DL_HWCAP_COUNT; ++i) for (i = 0; i < _DL_HWCAP_COUNT; ++i)
if (word & (1 << i)) if (word & (1 << i))
_dl_printf (" %s", _dl_x86_cap_flags[i]); _dl_printf (" %s", GL(dl_x86_cap_flags)[i]);
_dl_printf ("\n"); _dl_printf ("\n");
@ -60,14 +56,14 @@ static inline const char *
__attribute__ ((unused)) __attribute__ ((unused))
_dl_hwcap_string (int idx) _dl_hwcap_string (int idx)
{ {
return _dl_x86_cap_flags[idx]; return GL(dl_x86_cap_flags)[idx];
}; };
static inline const char * static inline const char *
__attribute__ ((unused)) __attribute__ ((unused))
_dl_platform_string (int idx) _dl_platform_string (int idx)
{ {
return _dl_x86_platforms [idx - _DL_FIRST_PLATFORM]; return GL(dl_x86_platforms)[idx - _DL_FIRST_PLATFORM];
}; };
enum enum
@ -107,7 +103,7 @@ _dl_string_hwcap (const char *str)
for (i = 0; i < _DL_HWCAP_COUNT; i++) for (i = 0; i < _DL_HWCAP_COUNT; i++)
{ {
if (strcmp (str, _dl_x86_cap_flags[i]) == 0) if (strcmp (str, GL(dl_x86_cap_flags)[i]) == 0)
return i; return i;
} }
return -1; return -1;
@ -123,7 +119,7 @@ _dl_string_platform (const char *str)
if (str != NULL) if (str != NULL)
for (i = 0; i < _DL_PLATFORMS_COUNT; ++i) for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
{ {
if (strcmp (str, _dl_x86_platforms[i]) == 0) if (strcmp (str, GL(dl_x86_platforms)[i]) == 0)
return _DL_FIRST_PLATFORM + i; return _DL_FIRST_PLATFORM + i;
} }
return -1; return -1;

View File

@ -3,4 +3,5 @@ long-double-fcts = yes
ifeq ($(subdir),csu) ifeq ($(subdir),csu)
sysdep_routines += hp-timing sysdep_routines += hp-timing
static-only-routines += hp-timing
endif endif