/* 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.
Contributed by Philip Blundell <philb@gnu.org>, 2001.
02111-1307 USA. */
/* 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
- is still ok with the given array size. */
-const char _dl_arm_cap_flags[][10] =
- {
+ All the #ifdefs in the definitions ar equite irritating but
+ necessary if we want to avoid duplicating the information. There
+ 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",
- };
+ }
+#endif
+#if !defined SHARED || defined PROCINFO_DECL
+;
+#else
+,
+#endif
+#undef PROCINFO_DECL
/* 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.
Contributed by Philip Blundell <philb@gnu.org>, 2001.
#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
/* The kernel provides platform data but it is not interesting. */
for (i = 0; i < _DL_HWCAP_COUNT; ++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");
__attribute__ ((unused))
_dl_hwcap_string (int idx)
{
- return _dl_arm_cap_flags[idx];
+ return GL(dl_arm_cap_flags)[idx];
};
enum
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 -1;