[PATCH v7 0/9] ARM: VDSO

Nathan Lynch Nathan_Lynch at mentor.com
Fri Jun 27 09:00:23 PDT 2014

On 06/27/2014 03:51 AM, Jan Glauber wrote:
> On Sun, Jun 22, 2014 at 10:11:49PM -0500, Nathan Lynch wrote:
>> Provide fast userspace implementations of gettimeofday and
>> clock_gettime on systems that implement the generic timers extension
>> defined in ARMv7.  This follows the example of arm64 in conception but
>> significantly differs in some aspects of the implementation (C vs
>> assembly, mainly).
> Hi Nathan,
> applying your patches I get the following compile error under Ubuntu 12.04:
>   CC      arch/arm/kernel/vdso.o
>   LDS     arch/arm/kernel/vdso/vdso.lds
>   CC      arch/arm/kernel/vdso/vgettimeofday.o
>   AS      arch/arm/kernel/vdso/datapage.o
>   VDSOL   arch/arm/kernel/vdso/vdso.so.raw
>   HOSTCC  arch/arm/kernel/vdso/vdsomunge
> arch/arm/kernel/vdso/vdsomunge.c: In function ‘main’:
> arch/arm/kernel/vdso/vdsomunge.c:152:16: error: ‘EF_ARM_ABI_FLOAT_HARD’ undeclared (first use in this function)
> arch/arm/kernel/vdso/vdsomunge.c:152:16: note: each undeclared identifier is reported only once for each function it appears in
> arch/arm/kernel/vdso/vdsomunge.c:156:34: error: ‘EF_ARM_ABI_FLOAT_SOFT’ undeclared (first use in this function)
> make[2]: *** [arch/arm/kernel/vdso/vdsomunge] Error 1
> make[1]: *** [arch/arm/kernel/vdso] Error 2
> make: *** [arch/arm/kernel] Error 2
> Looks like the libc dev is too old (EF_ARM_ABI_FLOAT_* not in /usr/include/elf.h).
> On a more recent Ubuntu it compiles fine. Not sure how to solve this, maybe disable
> vdso if the libc is too old?

We should just define some of the needed ELF constants in the tool if
the host <elf.h> lacks them.  EF_ARM_ABI_FLOAT_HARD/SOFT were added in
2012, EF_ARM_EABI_VER5 in 2009... everything else the tool uses has been
there for twelve years or more.

Thanks for the report -- please try the below?

diff --git a/arch/arm/kernel/vdso/vdsomunge.c
index 823b84d142bc..b586ef699fb8 100644
--- a/arch/arm/kernel/vdso/vdsomunge.c
+++ b/arch/arm/kernel/vdso/vdsomunge.c
@@ -67,6 +67,21 @@

+/* Some of the ELF constants we'd like to use were added to <elf.h>
+ * relatively recently.
+ */
+#ifndef EF_ARM_EABI_VER5
+#define EF_ARM_EABI_VER5 0x05000000
+#define EF_ARM_ABI_FLOAT_SOFT 0x200
+#define EF_ARM_ABI_FLOAT_HARD 0x400
 static const char *outfile;

 static void cleanup(void)

More information about the linux-arm-kernel mailing list