All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
       [not found] <cover.1443628457.git.hns@goldelico.com>
@ 2015-09-30 15:56   ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 15:56 UTC (permalink / raw)
  To: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon
  Cc: linux-arm-kernel, LKML, Marek Belisko

If the host toolchain is not glibc based then the arm kernel build
fails with

 HOSTCC  arch/arm/vdso/vdsomunge
 arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Changed to detect the host and include the right file as described at:

 https://bugs.freedesktop.org/show_bug.cgi?id=8882

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..5364cea 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,25 @@
 * it does.
 */

+#if defined(__linux__)
#include <byteswap.h>
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 __swap16
+#define bswap_32 __swap32
+#define bswap_64 __swap64
+#elif defined(__APPLE__)
+#include <libkern/OSByteOrder.h>
+#define bswap_16 OSSwapInt16
+#define bswap_32 OSSwapInt32
+#define bswap_64 OSSwapInt64
+#else
+#include <sys/endian.h>
+#define bswap_16 bswap16
+#define bswap_32 bswap32
+#define bswap_64 bswap64
+#endif
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
-- 
2.5.1


^ permalink raw reply related	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 15:56   ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 15:56 UTC (permalink / raw)
  To: linux-arm-kernel

If the host toolchain is not glibc based then the arm kernel build
fails with

 HOSTCC  arch/arm/vdso/vdsomunge
 arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Changed to detect the host and include the right file as described at:

 https://bugs.freedesktop.org/show_bug.cgi?id=8882

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..5364cea 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,25 @@
 * it does.
 */

+#if defined(__linux__)
#include <byteswap.h>
+#elif defined(__OpenBSD__)
+#include <sys/endian.h>
+#define bswap_16 __swap16
+#define bswap_32 __swap32
+#define bswap_64 __swap64
+#elif defined(__APPLE__)
+#include <libkern/OSByteOrder.h>
+#define bswap_16 OSSwapInt16
+#define bswap_32 OSSwapInt32
+#define bswap_64 OSSwapInt64
+#else
+#include <sys/endian.h>
+#define bswap_16 bswap16
+#define bswap_32 bswap32
+#define bswap_64 bswap64
+#endif
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
-- 
2.5.1

^ permalink raw reply related	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 15:56   ` H. Nikolaus Schaller
@ 2015-09-30 16:02     ` Ard Biesheuvel
  -1 siblings, 0 replies; 38+ messages in thread
From: Ard Biesheuvel @ 2015-09-30 16:02 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel

On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
> If the host toolchain is not glibc based then the arm kernel build
> fails with
>
>  HOSTCC  arch/arm/vdso/vdsomunge
>  arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>
> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
> cross-compiler.
>
> Reason: byteswap.h is a glibc only header.
>
> Changed to detect the host and include the right file as described at:
>
>  https://bugs.freedesktop.org/show_bug.cgi?id=8882
>
> Tested to compile on Mac OS X 10.9.5 host.
>
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> ---
> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
> index aedec81..5364cea 100644
> --- a/arch/arm/vdso/vdsomunge.c
> +++ b/arch/arm/vdso/vdsomunge.c
> @@ -45,7 +45,25 @@
>  * it does.
>  */
>
> +#if defined(__linux__)
> #include <byteswap.h>
> +#elif defined(__OpenBSD__)
> +#include <sys/endian.h>
> +#define bswap_16 __swap16
> +#define bswap_32 __swap32
> +#define bswap_64 __swap64
> +#elif defined(__APPLE__)
> +#include <libkern/OSByteOrder.h>
> +#define bswap_16 OSSwapInt16
> +#define bswap_32 OSSwapInt32
> +#define bswap_64 OSSwapInt64
> +#else
> +#include <sys/endian.h>
> +#define bswap_16 bswap16
> +#define bswap_32 bswap32
> +#define bswap_64 bswap64
> +#endif
> +

Have you tried this?

#define bswap_16 __builtin_bswap16
#define bswap_32 __builtin_bswap32
#define bswap_64 __builtin_bswap64

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 16:02     ` Ard Biesheuvel
  0 siblings, 0 replies; 38+ messages in thread
From: Ard Biesheuvel @ 2015-09-30 16:02 UTC (permalink / raw)
  To: linux-arm-kernel

On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
> If the host toolchain is not glibc based then the arm kernel build
> fails with
>
>  HOSTCC  arch/arm/vdso/vdsomunge
>  arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>
> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
> cross-compiler.
>
> Reason: byteswap.h is a glibc only header.
>
> Changed to detect the host and include the right file as described at:
>
>  https://bugs.freedesktop.org/show_bug.cgi?id=8882
>
> Tested to compile on Mac OS X 10.9.5 host.
>
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> ---
> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
> index aedec81..5364cea 100644
> --- a/arch/arm/vdso/vdsomunge.c
> +++ b/arch/arm/vdso/vdsomunge.c
> @@ -45,7 +45,25 @@
>  * it does.
>  */
>
> +#if defined(__linux__)
> #include <byteswap.h>
> +#elif defined(__OpenBSD__)
> +#include <sys/endian.h>
> +#define bswap_16 __swap16
> +#define bswap_32 __swap32
> +#define bswap_64 __swap64
> +#elif defined(__APPLE__)
> +#include <libkern/OSByteOrder.h>
> +#define bswap_16 OSSwapInt16
> +#define bswap_32 OSSwapInt32
> +#define bswap_64 OSSwapInt64
> +#else
> +#include <sys/endian.h>
> +#define bswap_16 bswap16
> +#define bswap_32 bswap32
> +#define bswap_64 bswap64
> +#endif
> +

Have you tried this?

#define bswap_16 __builtin_bswap16
#define bswap_32 __builtin_bswap32
#define bswap_64 __builtin_bswap64

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 16:02     ` Ard Biesheuvel
@ 2015-09-30 16:13       ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 16:13 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel


Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:

> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>> If the host toolchain is not glibc based then the arm kernel build
>> fails with
>> 
>> HOSTCC  arch/arm/vdso/vdsomunge
>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>> 
>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>> cross-compiler.
>> 
>> Reason: byteswap.h is a glibc only header.
>> 
>> Changed to detect the host and include the right file as described at:
>> 
>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>> 
>> Tested to compile on Mac OS X 10.9.5 host.
>> 
>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>> ---
>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>> 
>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>> index aedec81..5364cea 100644
>> --- a/arch/arm/vdso/vdsomunge.c
>> +++ b/arch/arm/vdso/vdsomunge.c
>> @@ -45,7 +45,25 @@
>> * it does.
>> */
>> 
>> +#if defined(__linux__)
>> #include <byteswap.h>
>> +#elif defined(__OpenBSD__)
>> +#include <sys/endian.h>
>> +#define bswap_16 __swap16
>> +#define bswap_32 __swap32
>> +#define bswap_64 __swap64
>> +#elif defined(__APPLE__)
>> +#include <libkern/OSByteOrder.h>
>> +#define bswap_16 OSSwapInt16
>> +#define bswap_32 OSSwapInt32
>> +#define bswap_64 OSSwapInt64
>> +#else
>> +#include <sys/endian.h>
>> +#define bswap_16 bswap16
>> +#define bswap_32 bswap32
>> +#define bswap_64 bswap64
>> +#endif
>> +
> 
> Have you tried this?
> 
> #define bswap_16 __builtin_bswap16
> #define bswap_32 __builtin_bswap32
> #define bswap_64 __builtin_bswap64
> 
> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

OS X host uses llvm and I am not sure if these builtins are
always available.

So it replaces an include file dependency by a compiler
built-in dependency. IMHO my approach is more general
and should cover a broader range of compile hosts.

This is a tool compiled by HOSTCC to be run on the build
host - so I think we can't assume to have a gcc host compiler
(while for the CC cross-compiler we can).

Thanks,
Nikolaus Schaller


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 16:13       ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 16:13 UTC (permalink / raw)
  To: linux-arm-kernel


Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:

> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>> If the host toolchain is not glibc based then the arm kernel build
>> fails with
>> 
>> HOSTCC  arch/arm/vdso/vdsomunge
>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>> 
>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>> cross-compiler.
>> 
>> Reason: byteswap.h is a glibc only header.
>> 
>> Changed to detect the host and include the right file as described at:
>> 
>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>> 
>> Tested to compile on Mac OS X 10.9.5 host.
>> 
>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>> ---
>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>> 
>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>> index aedec81..5364cea 100644
>> --- a/arch/arm/vdso/vdsomunge.c
>> +++ b/arch/arm/vdso/vdsomunge.c
>> @@ -45,7 +45,25 @@
>> * it does.
>> */
>> 
>> +#if defined(__linux__)
>> #include <byteswap.h>
>> +#elif defined(__OpenBSD__)
>> +#include <sys/endian.h>
>> +#define bswap_16 __swap16
>> +#define bswap_32 __swap32
>> +#define bswap_64 __swap64
>> +#elif defined(__APPLE__)
>> +#include <libkern/OSByteOrder.h>
>> +#define bswap_16 OSSwapInt16
>> +#define bswap_32 OSSwapInt32
>> +#define bswap_64 OSSwapInt64
>> +#else
>> +#include <sys/endian.h>
>> +#define bswap_16 bswap16
>> +#define bswap_32 bswap32
>> +#define bswap_64 bswap64
>> +#endif
>> +
> 
> Have you tried this?
> 
> #define bswap_16 __builtin_bswap16
> #define bswap_32 __builtin_bswap32
> #define bswap_64 __builtin_bswap64
> 
> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

OS X host uses llvm and I am not sure if these builtins are
always available.

So it replaces an include file dependency by a compiler
built-in dependency. IMHO my approach is more general
and should cover a broader range of compile hosts.

This is a tool compiled by HOSTCC to be run on the build
host - so I think we can't assume to have a gcc host compiler
(while for the CC cross-compiler we can).

Thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 16:13       ` H. Nikolaus Schaller
@ 2015-09-30 16:17         ` Ard Biesheuvel
  -1 siblings, 0 replies; 38+ messages in thread
From: Ard Biesheuvel @ 2015-09-30 16:17 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel

On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>
>> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>> If the host toolchain is not glibc based then the arm kernel build
>>> fails with
>>>
>>> HOSTCC  arch/arm/vdso/vdsomunge
>>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>>>
>>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>>> cross-compiler.
>>>
>>> Reason: byteswap.h is a glibc only header.
>>>
>>> Changed to detect the host and include the right file as described at:
>>>
>>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>>>
>>> Tested to compile on Mac OS X 10.9.5 host.
>>>
>>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>>> ---
>>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>>> 1 file changed, 18 insertions(+)
>>>
>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>> index aedec81..5364cea 100644
>>> --- a/arch/arm/vdso/vdsomunge.c
>>> +++ b/arch/arm/vdso/vdsomunge.c
>>> @@ -45,7 +45,25 @@
>>> * it does.
>>> */
>>>
>>> +#if defined(__linux__)
>>> #include <byteswap.h>
>>> +#elif defined(__OpenBSD__)
>>> +#include <sys/endian.h>
>>> +#define bswap_16 __swap16
>>> +#define bswap_32 __swap32
>>> +#define bswap_64 __swap64
>>> +#elif defined(__APPLE__)
>>> +#include <libkern/OSByteOrder.h>
>>> +#define bswap_16 OSSwapInt16
>>> +#define bswap_32 OSSwapInt32
>>> +#define bswap_64 OSSwapInt64
>>> +#else
>>> +#include <sys/endian.h>
>>> +#define bswap_16 bswap16
>>> +#define bswap_32 bswap32
>>> +#define bswap_64 bswap64
>>> +#endif
>>> +
>>
>> Have you tried this?
>>
>> #define bswap_16 __builtin_bswap16
>> #define bswap_32 __builtin_bswap32
>> #define bswap_64 __builtin_bswap64
>>
>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>
> OS X host uses llvm and I am not sure if these builtins are
> always available.
>

I am pretty sure recent clang supports these as well. Could you please try it?

> So it replaces an include file dependency by a compiler
> built-in dependency. IMHO my approach is more general
> and should cover a broader range of compile hosts.
>
> This is a tool compiled by HOSTCC to be run on the build
> host - so I think we can't assume to have a gcc host compiler
> (while for the CC cross-compiler we can).
>

If my suggestion works, we'll support host side GCC and clang without
decorating the source code with lots of #ifdefs for OSes few people
care about. That would be an improvement imo

Thanks,
Ard.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 16:17         ` Ard Biesheuvel
  0 siblings, 0 replies; 38+ messages in thread
From: Ard Biesheuvel @ 2015-09-30 16:17 UTC (permalink / raw)
  To: linux-arm-kernel

On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>
> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>
>> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>> If the host toolchain is not glibc based then the arm kernel build
>>> fails with
>>>
>>> HOSTCC  arch/arm/vdso/vdsomunge
>>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>>>
>>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>>> cross-compiler.
>>>
>>> Reason: byteswap.h is a glibc only header.
>>>
>>> Changed to detect the host and include the right file as described at:
>>>
>>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>>>
>>> Tested to compile on Mac OS X 10.9.5 host.
>>>
>>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>>> ---
>>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>>> 1 file changed, 18 insertions(+)
>>>
>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>> index aedec81..5364cea 100644
>>> --- a/arch/arm/vdso/vdsomunge.c
>>> +++ b/arch/arm/vdso/vdsomunge.c
>>> @@ -45,7 +45,25 @@
>>> * it does.
>>> */
>>>
>>> +#if defined(__linux__)
>>> #include <byteswap.h>
>>> +#elif defined(__OpenBSD__)
>>> +#include <sys/endian.h>
>>> +#define bswap_16 __swap16
>>> +#define bswap_32 __swap32
>>> +#define bswap_64 __swap64
>>> +#elif defined(__APPLE__)
>>> +#include <libkern/OSByteOrder.h>
>>> +#define bswap_16 OSSwapInt16
>>> +#define bswap_32 OSSwapInt32
>>> +#define bswap_64 OSSwapInt64
>>> +#else
>>> +#include <sys/endian.h>
>>> +#define bswap_16 bswap16
>>> +#define bswap_32 bswap32
>>> +#define bswap_64 bswap64
>>> +#endif
>>> +
>>
>> Have you tried this?
>>
>> #define bswap_16 __builtin_bswap16
>> #define bswap_32 __builtin_bswap32
>> #define bswap_64 __builtin_bswap64
>>
>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>
> OS X host uses llvm and I am not sure if these builtins are
> always available.
>

I am pretty sure recent clang supports these as well. Could you please try it?

> So it replaces an include file dependency by a compiler
> built-in dependency. IMHO my approach is more general
> and should cover a broader range of compile hosts.
>
> This is a tool compiled by HOSTCC to be run on the build
> host - so I think we can't assume to have a gcc host compiler
> (while for the CC cross-compiler we can).
>

If my suggestion works, we'll support host side GCC and clang without
decorating the source code with lots of #ifdefs for OSes few people
care about. That would be an improvement imo

Thanks,
Ard.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 16:17         ` Ard Biesheuvel
@ 2015-09-30 17:25           ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 17:25 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel

Hi,

Am 30.09.2015 um 18:17 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:

> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>> 
>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>> 
>>> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>>> If the host toolchain is not glibc based then the arm kernel build
>>>> fails with
>>>> 
>>>> HOSTCC  arch/arm/vdso/vdsomunge
>>>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>>>> 
>>>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>>>> cross-compiler.
>>>> 
>>>> Reason: byteswap.h is a glibc only header.
>>>> 
>>>> Changed to detect the host and include the right file as described at:
>>>> 
>>>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>>>> 
>>>> Tested to compile on Mac OS X 10.9.5 host.
>>>> 
>>>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>>>> ---
>>>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>>>> 1 file changed, 18 insertions(+)
>>>> 
>>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>>> index aedec81..5364cea 100644
>>>> --- a/arch/arm/vdso/vdsomunge.c
>>>> +++ b/arch/arm/vdso/vdsomunge.c
>>>> @@ -45,7 +45,25 @@
>>>> * it does.
>>>> */
>>>> 
>>>> +#if defined(__linux__)
>>>> #include <byteswap.h>
>>>> +#elif defined(__OpenBSD__)
>>>> +#include <sys/endian.h>
>>>> +#define bswap_16 __swap16
>>>> +#define bswap_32 __swap32
>>>> +#define bswap_64 __swap64
>>>> +#elif defined(__APPLE__)
>>>> +#include <libkern/OSByteOrder.h>
>>>> +#define bswap_16 OSSwapInt16
>>>> +#define bswap_32 OSSwapInt32
>>>> +#define bswap_64 OSSwapInt64
>>>> +#else
>>>> +#include <sys/endian.h>
>>>> +#define bswap_16 bswap16
>>>> +#define bswap_32 bswap32
>>>> +#define bswap_64 bswap64
>>>> +#endif
>>>> +
>>> 
>>> Have you tried this?
>>> 
>>> #define bswap_16 __builtin_bswap16
>>> #define bswap_32 __builtin_bswap32
>>> #define bswap_64 __builtin_bswap64
>>> 
>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>> 
>> OS X host uses llvm and I am not sure if these builtins are
>> always available.
>> 
> 
> I am pretty sure recent clang supports these as well. Could you please try it?

What release date (= feature set) of a compiler would you no longer consider as "recent"?

> 
>> So it replaces an include file dependency by a compiler
>> built-in dependency. IMHO my approach is more general
>> and should cover a broader range of compile hosts.
>> 
>> This is a tool compiled by HOSTCC to be run on the build
>> host - so I think we can't assume to have a gcc host compiler
>> (while for the CC cross-compiler we can).
>> 
> 
> If my suggestion works, we'll support host side GCC and clang without
> decorating the source code with lots of #ifdefs for OSes few people
> care about. That would be an improvement imo

Indeed it would be the best solution.

But at least my Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
it does *not* work (see also for example http://sourceforge.net/p/flac/bugs/416/ ).

Clang 3.5 appears to provide all features of GCC 4.7.

I have checked and it appears that __builtin_bswap16 only became available in
GCC 4.8 (released 2013-03-22). And maybe in Clang 3.7.

Unfortunately I could not find a reference what the minimum required gcc for
the Linux HOSTCC currently is.

So if we require gcc >= 4.8 just by this small tool, this should be made well
known and well decided.

Therefore I would propose to use the #ifdef approach now and revise 5 years
after gcc 4.8 release (2013 ==> 2018) if __builtin_bswap16 (or something else)
has become a widely available standard.

I can add this to the patch commit V2 for reference.

BR and thanks,
Nikolaus Schaller


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 17:25           ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 17:25 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Am 30.09.2015 um 18:17 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:

> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>> 
>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>> 
>>> On 30 September 2015 at 17:56, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>>> If the host toolchain is not glibc based then the arm kernel build
>>>> fails with
>>>> 
>>>> HOSTCC  arch/arm/vdso/vdsomunge
>>>> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
>>>> 
>>>> Observed with omap2plus_defconfig and compile on Mac OS X with arm ELF
>>>> cross-compiler.
>>>> 
>>>> Reason: byteswap.h is a glibc only header.
>>>> 
>>>> Changed to detect the host and include the right file as described at:
>>>> 
>>>> https://bugs.freedesktop.org/show_bug.cgi?id=8882
>>>> 
>>>> Tested to compile on Mac OS X 10.9.5 host.
>>>> 
>>>> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
>>>> ---
>>>> arch/arm/vdso/vdsomunge.c | 18 ++++++++++++++++++
>>>> 1 file changed, 18 insertions(+)
>>>> 
>>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>>> index aedec81..5364cea 100644
>>>> --- a/arch/arm/vdso/vdsomunge.c
>>>> +++ b/arch/arm/vdso/vdsomunge.c
>>>> @@ -45,7 +45,25 @@
>>>> * it does.
>>>> */
>>>> 
>>>> +#if defined(__linux__)
>>>> #include <byteswap.h>
>>>> +#elif defined(__OpenBSD__)
>>>> +#include <sys/endian.h>
>>>> +#define bswap_16 __swap16
>>>> +#define bswap_32 __swap32
>>>> +#define bswap_64 __swap64
>>>> +#elif defined(__APPLE__)
>>>> +#include <libkern/OSByteOrder.h>
>>>> +#define bswap_16 OSSwapInt16
>>>> +#define bswap_32 OSSwapInt32
>>>> +#define bswap_64 OSSwapInt64
>>>> +#else
>>>> +#include <sys/endian.h>
>>>> +#define bswap_16 bswap16
>>>> +#define bswap_32 bswap32
>>>> +#define bswap_64 bswap64
>>>> +#endif
>>>> +
>>> 
>>> Have you tried this?
>>> 
>>> #define bswap_16 __builtin_bswap16
>>> #define bswap_32 __builtin_bswap32
>>> #define bswap_64 __builtin_bswap64
>>> 
>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>> 
>> OS X host uses llvm and I am not sure if these builtins are
>> always available.
>> 
> 
> I am pretty sure recent clang supports these as well. Could you please try it?

What release date (= feature set) of a compiler would you no longer consider as "recent"?

> 
>> So it replaces an include file dependency by a compiler
>> built-in dependency. IMHO my approach is more general
>> and should cover a broader range of compile hosts.
>> 
>> This is a tool compiled by HOSTCC to be run on the build
>> host - so I think we can't assume to have a gcc host compiler
>> (while for the CC cross-compiler we can).
>> 
> 
> If my suggestion works, we'll support host side GCC and clang without
> decorating the source code with lots of #ifdefs for OSes few people
> care about. That would be an improvement imo

Indeed it would be the best solution.

But at least my Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
it does *not* work (see also for example http://sourceforge.net/p/flac/bugs/416/ ).

Clang 3.5 appears to provide all features of GCC 4.7.

I have checked and it appears that __builtin_bswap16 only became available in
GCC 4.8 (released 2013-03-22). And maybe in Clang 3.7.

Unfortunately I could not find a reference what the minimum required gcc for
the Linux HOSTCC currently is.

So if we require gcc >= 4.8 just by this small tool, this should be made well
known and well decided.

Therefore I would propose to use the #ifdef approach now and revise 5 years
after gcc 4.8 release (2013 ==> 2018) if __builtin_bswap16 (or something else)
has become a widely available standard.

I can add this to the patch commit V2 for reference.

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 16:17         ` Ard Biesheuvel
@ 2015-09-30 17:37           ` Nathan Lynch
  -1 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-09-30 17:37 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: H. Nikolaus Schaller, Szabolcs Nagy, Russell King, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel

On 09/30/2015 11:17 AM, Ard Biesheuvel wrote:
> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>
>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>>>
>>> Have you tried this?
>>>
>>> #define bswap_16 __builtin_bswap16
>>> #define bswap_32 __builtin_bswap32
>>> #define bswap_64 __builtin_bswap64
>>>
>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>>
>> OS X host uses llvm and I am not sure if these builtins are
>> always available.
>>
> 
> I am pretty sure recent clang supports these as well. Could you please try it?

Well, I think GCC did not provide __builtin_bswap16 consistently until
the 4.8 release:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624

That seems too recent to me.

vdsomunge makes only three or four potentially byteswapped accesses to
the ELF header.  It's not worth a lot of effort to try to use the most
optimal implementation available.  Why not just use a generic
implementation like is found in mips' elf2ecoff?


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 17:37           ` Nathan Lynch
  0 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-09-30 17:37 UTC (permalink / raw)
  To: linux-arm-kernel

On 09/30/2015 11:17 AM, Ard Biesheuvel wrote:
> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>
>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>>>
>>> Have you tried this?
>>>
>>> #define bswap_16 __builtin_bswap16
>>> #define bswap_32 __builtin_bswap32
>>> #define bswap_64 __builtin_bswap64
>>>
>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>>
>> OS X host uses llvm and I am not sure if these builtins are
>> always available.
>>
> 
> I am pretty sure recent clang supports these as well. Could you please try it?

Well, I think GCC did not provide __builtin_bswap16 consistently until
the 4.8 release:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624

That seems too recent to me.

vdsomunge makes only three or four potentially byteswapped accesses to
the ELF header.  It's not worth a lot of effort to try to use the most
optimal implementation available.  Why not just use a generic
implementation like is found in mips' elf2ecoff?

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 17:37           ` Nathan Lynch
@ 2015-09-30 17:47             ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 17:47 UTC (permalink / raw)
  To: Nathan Lynch
  Cc: Ard Biesheuvel, Szabolcs Nagy, Russell King, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel


Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 09/30/2015 11:17 AM, Ard Biesheuvel wrote:
>> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>> 
>>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>>>> 
>>>> Have you tried this?
>>>> 
>>>> #define bswap_16 __builtin_bswap16
>>>> #define bswap_32 __builtin_bswap32
>>>> #define bswap_64 __builtin_bswap64
>>>> 
>>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>>> 
>>> OS X host uses llvm and I am not sure if these builtins are
>>> always available.
>>> 
>> 
>> I am pretty sure recent clang supports these as well. Could you please try it?
> 
> Well, I think GCC did not provide __builtin_bswap16 consistently until
> the 4.8 release:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624
> 
> That seems too recent to me.

Same for me.

> 
> vdsomunge makes only three or four potentially byteswapped accesses to
> the ELF header.  It's not worth a lot of effort to try to use the most
> optimal implementation available.

Especially as it does not run on the target device but the build host.

>  Why not just use a generic
> implementation like is found in mips' elf2ecoff?

Do you have a reference?
I can't find byte swapping in

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 17:47             ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 17:47 UTC (permalink / raw)
  To: linux-arm-kernel


Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 09/30/2015 11:17 AM, Ard Biesheuvel wrote:
>> On 30 September 2015 at 18:13, H. Nikolaus Schaller <hns@goldelico.com> wrote:
>>> 
>>> Am 30.09.2015 um 18:02 schrieb Ard Biesheuvel <ard.biesheuvel@linaro.org>:
>>>> 
>>>> Have you tried this?
>>>> 
>>>> #define bswap_16 __builtin_bswap16
>>>> #define bswap_32 __builtin_bswap32
>>>> #define bswap_64 __builtin_bswap64
>>>> 
>>>> https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
>>> 
>>> OS X host uses llvm and I am not sure if these builtins are
>>> always available.
>>> 
>> 
>> I am pretty sure recent clang supports these as well. Could you please try it?
> 
> Well, I think GCC did not provide __builtin_bswap16 consistently until
> the 4.8 release:
> 
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52624
> 
> That seems too recent to me.

Same for me.

> 
> vdsomunge makes only three or four potentially byteswapped accesses to
> the ELF header.  It's not worth a lot of effort to try to use the most
> optimal implementation available.

Especially as it does not run on the target device but the build host.

>  Why not just use a generic
> implementation like is found in mips' elf2ecoff?

Do you have a reference?
I can't find byte swapping in

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 17:47             ` H. Nikolaus Schaller
@ 2015-09-30 18:17               ` Nathan Lynch
  -1 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-09-30 18:17 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Ard Biesheuvel, Szabolcs Nagy, Russell King, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel

On 09/30/2015 12:47 PM, H. Nikolaus Schaller wrote:
> 
> Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:
>>  Why not just use a generic
>> implementation like is found in mips' elf2ecoff?
> 
> Do you have a reference?
> I can't find byte swapping in
> 
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3

See the swab16 and swab32 macros (yes, "swab" not "swap").

Or the __constant_swab* macros in include/linux/uapi/swab.h.


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 18:17               ` Nathan Lynch
  0 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-09-30 18:17 UTC (permalink / raw)
  To: linux-arm-kernel

On 09/30/2015 12:47 PM, H. Nikolaus Schaller wrote:
> 
> Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:
>>  Why not just use a generic
>> implementation like is found in mips' elf2ecoff?
> 
> Do you have a reference?
> I can't find byte swapping in
> 
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3

See the swab16 and swab32 macros (yes, "swab" not "swap").

Or the __constant_swab* macros in include/linux/uapi/swab.h.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
  2015-09-30 18:17               ` Nathan Lynch
@ 2015-09-30 19:08                 ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 19:08 UTC (permalink / raw)
  To: Nathan Lynch
  Cc: Ard Biesheuvel, Szabolcs Nagy, Russell King, Will Deacon,
	Marek Belisko, LKML, linux-arm-kernel


Am 30.09.2015 um 20:17 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 09/30/2015 12:47 PM, H. Nikolaus Schaller wrote:
>> 
>> Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:
>>> Why not just use a generic
>>> implementation like is found in mips' elf2ecoff?
>> 
>> Do you have a reference?
>> I can't find byte swapping in
>> 
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3
> 
> See the swab16 and swab32 macros (yes, "swab" not "swap").
> 
> Or the __constant_swab* macros in include/linux/uapi/swab.h.
> 

Ah, I did search for swaP...

And, I though that they are more conditional on the CPU endianness but that
would be sort of htons() and ntohl() and friends.

Then I see no problem adding such macros and getting rid of the #include
completely. Which is compiler independent and OS independent.

Will prepare and submit a V2 asap.

Thanks and BR,
Nikolaus


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h
@ 2015-09-30 19:08                 ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-09-30 19:08 UTC (permalink / raw)
  To: linux-arm-kernel


Am 30.09.2015 um 20:17 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 09/30/2015 12:47 PM, H. Nikolaus Schaller wrote:
>> 
>> Am 30.09.2015 um 19:37 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:
>>> Why not just use a generic
>>> implementation like is found in mips' elf2ecoff?
>> 
>> Do you have a reference?
>> I can't find byte swapping in
>> 
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/mips/boot/elf2ecoff.c?id=refs/tags/v4.3-rc3
> 
> See the swab16 and swab32 macros (yes, "swab" not "swap").
> 
> Or the __constant_swab* macros in include/linux/uapi/swab.h.
> 

Ah, I did search for swaP...

And, I though that they are more conditional on the CPU endianness but that
would be sort of htons() and ntohl() and friends.

Then I see no problem adding such macros and getting rid of the #include
completely. Which is compiler independent and OS independent.

Will prepare and submit a V2 asap.

Thanks and BR,
Nikolaus

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
       [not found]                 ` <cover.1443791320.git.hns@goldelico.com>
@ 2015-10-02 13:10                   ` H. Nikolaus Schaller
  2015-10-03  8:20                   ` H. Nikolaus Schaller
  1 sibling, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-02 13:10 UTC (permalink / raw)
  To: linux-arm-kernel

If the host toolchain is not glibc based then the arm kernel build
fails with

 HOSTCC  arch/arm/vdso/vdsomunge
 arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Solution: replace by private byte-swapping macros (taken from
arch/mips/boot/elf2ecoff.c)

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..27a9a0b 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,18 @@
 * it does.
 */

-#include <byteswap.h>
+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
@@ -104,17 +115,17 @@ static void cleanup(void)

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}

static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
{
-	return swap ? bswap_16(half) : half;
+	return swap ? swab16(half) : half;
}

static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
{
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
}

int main(int argc, char **argv)
-- 
2.5.1

^ permalink raw reply related	[flat|nested] 38+ messages in thread

* [PATCH] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
       [not found]                 ` <cover.1443791320.git.hns@goldelico.com>
  2015-10-02 13:10                   ` [PATCH] ARM: fix vdsomunge not to depend " H. Nikolaus Schaller
@ 2015-10-03  8:20                   ` H. Nikolaus Schaller
  1 sibling, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-03  8:20 UTC (permalink / raw)
  To: linux-arm-kernel

If the host toolchain is not glibc based then the arm kernel build
fails with

HOSTCC  arch/arm/vdso/vdsomunge
arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Solution: replace by private byte-swapping macros (taken from
arch/mips/boot/elf2ecoff.c)

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..27a9a0b 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,18 @@
* it does.
*/

-#include <byteswap.h>
+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
@@ -104,17 +115,17 @@ static void cleanup(void)

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}

static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
{
-	return swap ? bswap_16(half) : half;
+	return swap ? swab16(half) : half;
}

static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
{
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
}

int main(int argc, char **argv)
-- 
2.5.1

^ permalink raw reply related	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-09-30 15:56   ` H. Nikolaus Schaller
@ 2015-10-03 20:46     ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-03 20:46 UTC (permalink / raw)
  To: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon
  Cc: linux-arm-kernel, linux-kernel, marek

If the host toolchain is not glibc based then the arm kernel build
fails with

 HOSTCC  arch/arm/vdso/vdsomunge
 arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Solution: replace by private byte-swapping macros (taken from
arch/mips/boot/elf2ecoff.c)

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..27a9a0b 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,18 @@
 * it does.
 */

-#include <byteswap.h>
+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
@@ -104,17 +115,17 @@ static void cleanup(void)

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}

static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
{
-	return swap ? bswap_16(half) : half;
+	return swap ? swab16(half) : half;
}

static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
{
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
}

int main(int argc, char **argv)
-- 
2.5.1


^ permalink raw reply related	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-03 20:46     ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-03 20:46 UTC (permalink / raw)
  To: linux-arm-kernel

If the host toolchain is not glibc based then the arm kernel build
fails with

 HOSTCC  arch/arm/vdso/vdsomunge
 arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory

Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
cross-compiler.

Reason: byteswap.h is a glibc only header.

Solution: replace by private byte-swapping macros (taken from
arch/mips/boot/elf2ecoff.c)

Tested to compile on Mac OS X 10.9.5 host.

Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
---
arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
index aedec81..27a9a0b 100644
--- a/arch/arm/vdso/vdsomunge.c
+++ b/arch/arm/vdso/vdsomunge.c
@@ -45,7 +45,18 @@
 * it does.
 */

-#include <byteswap.h>
+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
+
#include <elf.h>
#include <errno.h>
#include <fcntl.h>
@@ -104,17 +115,17 @@ static void cleanup(void)

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}

static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
{
-	return swap ? bswap_16(half) : half;
+	return swap ? swab16(half) : half;
}

static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
{
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
}

int main(int argc, char **argv)
-- 
2.5.1

^ permalink raw reply related	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-03 20:46     ` H. Nikolaus Schaller
@ 2015-10-14 12:47       ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-14 12:47 UTC (permalink / raw)
  To: Szabolcs Nagy, Russell King, Nathan Lynch, Will Deacon
  Cc: linux-arm-kernel, linux-kernel, marek

ping.

Am 03.10.2015 um 22:46 schrieb H. Nikolaus Schaller <hns@goldelico.com>:

> If the host toolchain is not glibc based then the arm kernel build
> fails with
> 
> HOSTCC  arch/arm/vdso/vdsomunge
> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
> 
> Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
> cross-compiler.
> 
> Reason: byteswap.h is a glibc only header.
> 
> Solution: replace by private byte-swapping macros (taken from
> arch/mips/boot/elf2ecoff.c)
> 
> Tested to compile on Mac OS X 10.9.5 host.
> 
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> ---
> arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
> index aedec81..27a9a0b 100644
> --- a/arch/arm/vdso/vdsomunge.c
> +++ b/arch/arm/vdso/vdsomunge.c
> @@ -45,7 +45,18 @@
> * it does.
> */
> 
> -#include <byteswap.h>
> +#define swab16(x) \
> +	((unsigned short)( \
> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> +
> +#define swab32(x) \
> +	((unsigned int)( \
> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> +
> #include <elf.h>
> #include <errno.h>
> #include <fcntl.h>
> @@ -104,17 +115,17 @@ static void cleanup(void)
> 
> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
> {
> -	return swap ? bswap_32(word) : word;
> +	return swap ? swab32(word) : word;
> }
> 
> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
> {
> -	return swap ? bswap_16(half) : half;
> +	return swap ? swab16(half) : half;
> }
> 
> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
> {
> -	*dst = swap ? bswap_32(val) : val;
> +	*dst = swap ? swab32(val) : val;
> }
> 
> int main(int argc, char **argv)
> -- 
> 2.5.1
> 


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-14 12:47       ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-14 12:47 UTC (permalink / raw)
  To: linux-arm-kernel

ping.

Am 03.10.2015 um 22:46 schrieb H. Nikolaus Schaller <hns@goldelico.com>:

> If the host toolchain is not glibc based then the arm kernel build
> fails with
> 
> HOSTCC  arch/arm/vdso/vdsomunge
> arch/arm/vdso/vdsomunge.c:48:22: fatal error: byteswap.h: No such file or directory
> 
> Observed: with omap2plus_defconfig and compile on Mac OS X with arm ELF
> cross-compiler.
> 
> Reason: byteswap.h is a glibc only header.
> 
> Solution: replace by private byte-swapping macros (taken from
> arch/mips/boot/elf2ecoff.c)
> 
> Tested to compile on Mac OS X 10.9.5 host.
> 
> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> ---
> arch/arm/vdso/vdsomunge.c | 19 +++++++++++++++----
> 1 file changed, 15 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
> index aedec81..27a9a0b 100644
> --- a/arch/arm/vdso/vdsomunge.c
> +++ b/arch/arm/vdso/vdsomunge.c
> @@ -45,7 +45,18 @@
> * it does.
> */
> 
> -#include <byteswap.h>
> +#define swab16(x) \
> +	((unsigned short)( \
> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> +
> +#define swab32(x) \
> +	((unsigned int)( \
> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> +
> #include <elf.h>
> #include <errno.h>
> #include <fcntl.h>
> @@ -104,17 +115,17 @@ static void cleanup(void)
> 
> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
> {
> -	return swap ? bswap_32(word) : word;
> +	return swap ? swab32(word) : word;
> }
> 
> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
> {
> -	return swap ? bswap_16(half) : half;
> +	return swap ? swab16(half) : half;
> }
> 
> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
> {
> -	*dst = swap ? bswap_32(val) : val;
> +	*dst = swap ? swab32(val) : val;
> }
> 
> int main(int argc, char **argv)
> -- 
> 2.5.1
> 

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-14 12:47       ` H. Nikolaus Schaller
@ 2015-10-14 14:16         ` Nathan Lynch
  -1 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-14 14:16 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Szabolcs Nagy, Russell King, Will Deacon, linux-arm-kernel,
	linux-kernel, marek

On 10/14/2015 07:47 AM, H. Nikolaus Schaller wrote:
>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>> index aedec81..27a9a0b 100644
>> --- a/arch/arm/vdso/vdsomunge.c
>> +++ b/arch/arm/vdso/vdsomunge.c
>> @@ -45,7 +45,18 @@
>> * it does.
>> */
>>
>> -#include <byteswap.h>
>> +#define swab16(x) \
>> +	((unsigned short)( \
>> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>> +
>> +#define swab32(x) \
>> +	((unsigned int)( \
>> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
>> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
>> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>> +
>> #include <elf.h>
>> #include <errno.h>
>> #include <fcntl.h>
>> @@ -104,17 +115,17 @@ static void cleanup(void)
>>
>> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
>> {
>> -	return swap ? bswap_32(word) : word;
>> +	return swap ? swab32(word) : word;
>> }
>>
>> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
>> {
>> -	return swap ? bswap_16(half) : half;
>> +	return swap ? swab16(half) : half;
>> }
>>
>> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
>> {
>> -	*dst = swap ? bswap_32(val) : val;
>> +	*dst = swap ? swab32(val) : val;
>> }
> ping.

Sorry for the delay.

This is okay but I'd prefer the swab macros to be below the #include
lines, and it would be easier for me to deal with a patch that isn't
whitespace-damaged.


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-14 14:16         ` Nathan Lynch
  0 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-14 14:16 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/14/2015 07:47 AM, H. Nikolaus Schaller wrote:
>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>> index aedec81..27a9a0b 100644
>> --- a/arch/arm/vdso/vdsomunge.c
>> +++ b/arch/arm/vdso/vdsomunge.c
>> @@ -45,7 +45,18 @@
>> * it does.
>> */
>>
>> -#include <byteswap.h>
>> +#define swab16(x) \
>> +	((unsigned short)( \
>> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>> +
>> +#define swab32(x) \
>> +	((unsigned int)( \
>> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
>> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
>> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>> +
>> #include <elf.h>
>> #include <errno.h>
>> #include <fcntl.h>
>> @@ -104,17 +115,17 @@ static void cleanup(void)
>>
>> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
>> {
>> -	return swap ? bswap_32(word) : word;
>> +	return swap ? swab32(word) : word;
>> }
>>
>> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
>> {
>> -	return swap ? bswap_16(half) : half;
>> +	return swap ? swab16(half) : half;
>> }
>>
>> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
>> {
>> -	*dst = swap ? bswap_32(val) : val;
>> +	*dst = swap ? swab32(val) : val;
>> }
> ping.

Sorry for the delay.

This is okay but I'd prefer the swab macros to be below the #include
lines, and it would be easier for me to deal with a patch that isn't
whitespace-damaged.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-14 14:16         ` Nathan Lynch
@ 2015-10-15  5:52           ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15  5:52 UTC (permalink / raw)
  To: Nathan Lynch
  Cc: Szabolcs Nagy, Russell King, Will Deacon, linux-arm-kernel,
	linux-kernel, marek


Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:

> On 10/14/2015 07:47 AM, H. Nikolaus Schaller wrote:
>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>> index aedec81..27a9a0b 100644
>>> --- a/arch/arm/vdso/vdsomunge.c
>>> +++ b/arch/arm/vdso/vdsomunge.c
>>> @@ -45,7 +45,18 @@
>>> * it does.
>>> */
>>> 
>>> -#include <byteswap.h>
>>> +#define swab16(x) \
>>> +	((unsigned short)( \
>>> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
>>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>>> +
>>> +#define swab32(x) \
>>> +	((unsigned int)( \
>>> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
>>> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
>>> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
>>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>>> +
>>> #include <elf.h>
>>> #include <errno.h>
>>> #include <fcntl.h>
>>> @@ -104,17 +115,17 @@ static void cleanup(void)
>>> 
>>> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
>>> {
>>> -	return swap ? bswap_32(word) : word;
>>> +	return swap ? swab32(word) : word;
>>> }
>>> 
>>> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
>>> {
>>> -	return swap ? bswap_16(half) : half;
>>> +	return swap ? swab16(half) : half;
>>> }
>>> 
>>> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
>>> {
>>> -	*dst = swap ? bswap_32(val) : val;
>>> +	*dst = swap ? swab32(val) : val;
>>> }
>> ping.
> 
> Sorry for the delay.
> 
> This is okay but I'd prefer the swab macros to be below the #include
> lines,

Ok.

> and it would be easier for me to deal with a patch that isn't
> whitespace-damaged.

You mean:

ERROR: space prohibited before that close parenthesis ')'
#46: FILE: arch/arm/vdso/vdsomunge.c:64:
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))

ERROR: space prohibited before that close parenthesis ')'
#53: FILE: arch/arm/vdso/vdsomunge.c:71:
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))

Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
thought that it is better readable, but it is easy to fix.

V3 is coming.

BR and thanks,
Nikolaus


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15  5:52           ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15  5:52 UTC (permalink / raw)
  To: linux-arm-kernel


Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:

> On 10/14/2015 07:47 AM, H. Nikolaus Schaller wrote:
>>> diff --git a/arch/arm/vdso/vdsomunge.c b/arch/arm/vdso/vdsomunge.c
>>> index aedec81..27a9a0b 100644
>>> --- a/arch/arm/vdso/vdsomunge.c
>>> +++ b/arch/arm/vdso/vdsomunge.c
>>> @@ -45,7 +45,18 @@
>>> * it does.
>>> */
>>> 
>>> -#include <byteswap.h>
>>> +#define swab16(x) \
>>> +	((unsigned short)( \
>>> +		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
>>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>>> +
>>> +#define swab32(x) \
>>> +	((unsigned int)( \
>>> +		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
>>> +		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
>>> +		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
>>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>>> +
>>> #include <elf.h>
>>> #include <errno.h>
>>> #include <fcntl.h>
>>> @@ -104,17 +115,17 @@ static void cleanup(void)
>>> 
>>> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
>>> {
>>> -	return swap ? bswap_32(word) : word;
>>> +	return swap ? swab32(word) : word;
>>> }
>>> 
>>> static Elf32_Half read_elf_half(Elf32_Half half, bool swap)
>>> {
>>> -	return swap ? bswap_16(half) : half;
>>> +	return swap ? swab16(half) : half;
>>> }
>>> 
>>> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
>>> {
>>> -	*dst = swap ? bswap_32(val) : val;
>>> +	*dst = swap ? swab32(val) : val;
>>> }
>> ping.
> 
> Sorry for the delay.
> 
> This is okay but I'd prefer the swab macros to be below the #include
> lines,

Ok.

> and it would be easier for me to deal with a patch that isn't
> whitespace-damaged.

You mean:

ERROR: space prohibited before that close parenthesis ')'
#46: FILE: arch/arm/vdso/vdsomunge.c:64:
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))

ERROR: space prohibited before that close parenthesis ')'
#53: FILE: arch/arm/vdso/vdsomunge.c:71:
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))

Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
thought that it is better readable, but it is easy to fix.

V3 is coming.

BR and thanks,
Nikolaus

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-15  5:52           ` H. Nikolaus Schaller
@ 2015-10-15 16:37             ` Russell King - ARM Linux
  -1 siblings, 0 replies; 38+ messages in thread
From: Russell King - ARM Linux @ 2015-10-15 16:37 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Nathan Lynch, Szabolcs Nagy, Will Deacon, linux-arm-kernel,
	linux-kernel, marek

On Thu, Oct 15, 2015 at 07:52:38AM +0200, H. Nikolaus Schaller wrote:
> ERROR: space prohibited before that close parenthesis ')'
> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))

I have a pet hatred of too many parens.  I also have a hatred of idiotic
casts.  What about changing the above to one of:

		(((x) & 0xff00) >> 8)
		(((x) >> 8) & 0xff)

> 
> ERROR: space prohibited before that close parenthesis ')'
> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))

and one of:

		(((x) & 0xff000000) >> 24)
		(((x) >> 24) & 0xff)

?

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15 16:37             ` Russell King - ARM Linux
  0 siblings, 0 replies; 38+ messages in thread
From: Russell King - ARM Linux @ 2015-10-15 16:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Oct 15, 2015 at 07:52:38AM +0200, H. Nikolaus Schaller wrote:
> ERROR: space prohibited before that close parenthesis ')'
> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))

I have a pet hatred of too many parens.  I also have a hatred of idiotic
casts.  What about changing the above to one of:

		(((x) & 0xff00) >> 8)
		(((x) >> 8) & 0xff)

> 
> ERROR: space prohibited before that close parenthesis ')'
> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))

and one of:

		(((x) & 0xff000000) >> 24)
		(((x) >> 24) & 0xff)

?

-- 
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-15 16:37             ` Russell King - ARM Linux
@ 2015-10-15 16:52               ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15 16:52 UTC (permalink / raw)
  To: Russell King - ARM Linux
  Cc: Nathan Lynch, Szabolcs Nagy, Will Deacon, linux-arm-kernel,
	linux-kernel, marek


Am 15.10.2015 um 18:37 schrieb Russell King - ARM Linux <linux@arm.linux.org.uk>:

> On Thu, Oct 15, 2015 at 07:52:38AM +0200, H. Nikolaus Schaller wrote:
>> ERROR: space prohibited before that close parenthesis ')'
>> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> 
> I have a pet hatred of too many parens.  I also have a hatred of idiotic
> casts.  What about changing the above to one of:
> 
> 		(((x) & 0xff00) >> 8)
> 		(((x) >> 8) & 0xff)
> 
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> 
> and one of:
> 
> 		(((x) & 0xff000000) >> 24)
> 		(((x) >> 24) & 0xff)
> 
> ?

Well, the semantics is sometimes the same but I think readability goes down
because the macro becomes quite un-symmetric and for >> 8 you should
better be sure that values are unsigned if combining with | operator.

Of course it is questionable why the constants (with U and UL modifiers)
are casted.

The full macro (as copied verbatim from existing arch/mips/boot/elf2ecoff.c) is:

+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8)))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24)))
+

I have already submitted a V3 of this patch, so please comment that.

A question is why this is not generally available for all HOSTCC based tools
so that we could simply include some header. But since that is no kernel
code but a tool, I think it is not really necessary to put significant efforts
into this piece of code.

This was probably the intention of the original code to simply include
byteswap.h - then you don't even see how complex the macros are -
but it is not a standard header.

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15 16:52               ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15 16:52 UTC (permalink / raw)
  To: linux-arm-kernel


Am 15.10.2015 um 18:37 schrieb Russell King - ARM Linux <linux@arm.linux.org.uk>:

> On Thu, Oct 15, 2015 at 07:52:38AM +0200, H. Nikolaus Schaller wrote:
>> ERROR: space prohibited before that close parenthesis ')'
>> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> 
> I have a pet hatred of too many parens.  I also have a hatred of idiotic
> casts.  What about changing the above to one of:
> 
> 		(((x) & 0xff00) >> 8)
> 		(((x) >> 8) & 0xff)
> 
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> 
> and one of:
> 
> 		(((x) & 0xff000000) >> 24)
> 		(((x) >> 24) & 0xff)
> 
> ?

Well, the semantics is sometimes the same but I think readability goes down
because the macro becomes quite un-symmetric and for >> 8 you should
better be sure that values are unsigned if combining with | operator.

Of course it is questionable why the constants (with U and UL modifiers)
are casted.

The full macro (as copied verbatim from existing arch/mips/boot/elf2ecoff.c) is:

+#define swab16(x) \
+	((unsigned short)( \
+		(((unsigned short)(x) & (unsigned short)0x00ffU) << 8) | \
+		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8)))
+
+#define swab32(x) \
+	((unsigned int)( \
+		(((unsigned int)(x) & (unsigned int)0x000000ffUL) << 24) | \
+		(((unsigned int)(x) & (unsigned int)0x0000ff00UL) <<  8) | \
+		(((unsigned int)(x) & (unsigned int)0x00ff0000UL) >>  8) | \
+		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24)))
+

I have already submitted a V3 of this patch, so please comment that.

A question is why this is not generally available for all HOSTCC based tools
so that we could simply include some header. But since that is no kernel
code but a tool, I think it is not really necessary to put significant efforts
into this piece of code.

This was probably the intention of the original code to simply include
byteswap.h - then you don't even see how complex the macros are -
but it is not a standard header.

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-15  5:52           ` H. Nikolaus Schaller
@ 2015-10-15 17:07             ` Nathan Lynch
  -1 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-15 17:07 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Szabolcs Nagy, Russell King, Will Deacon, linux-arm-kernel,
	linux-kernel, marek

On 10/15/2015 12:52 AM, H. Nikolaus Schaller wrote:
> Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:
>> and it would be easier for me to deal with a patch that isn't
>> whitespace-damaged.
> 
> You mean:
> 
> ERROR: space prohibited before that close parenthesis ')'
> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> 
> ERROR: space prohibited before that close parenthesis ')'
> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> 
> Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
> thought that it is better readable, but it is easy to fix.

That's not what I was referring to, but it is fine to fix that too.

What I meant was that the first column of the patch body is corrupted.
Your v2 has hunks like this (bad):

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}


Your v3 has this (good):

 static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
 {
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
 }



^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15 17:07             ` Nathan Lynch
  0 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-15 17:07 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/15/2015 12:52 AM, H. Nikolaus Schaller wrote:
> Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:
>> and it would be easier for me to deal with a patch that isn't
>> whitespace-damaged.
> 
> You mean:
> 
> ERROR: space prohibited before that close parenthesis ')'
> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
> 
> ERROR: space prohibited before that close parenthesis ')'
> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
> 
> Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
> thought that it is better readable, but it is easy to fix.

That's not what I was referring to, but it is fine to fix that too.

What I meant was that the first column of the patch body is corrupted.
Your v2 has hunks like this (bad):

static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
{
-	return swap ? bswap_32(word) : word;
+	return swap ? swab32(word) : word;
}


Your v3 has this (good):

 static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
 {
-	*dst = swap ? bswap_32(val) : val;
+	*dst = swap ? swab32(val) : val;
 }

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-15 17:07             ` Nathan Lynch
@ 2015-10-15 17:16               ` H. Nikolaus Schaller
  -1 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15 17:16 UTC (permalink / raw)
  To: Nathan Lynch
  Cc: Szabolcs Nagy, Russell King, Will Deacon, linux-arm-kernel,
	linux-kernel, marek


Am 15.10.2015 um 19:07 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 10/15/2015 12:52 AM, H. Nikolaus Schaller wrote:
>> Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:
>>> and it would be easier for me to deal with a patch that isn't
>>> whitespace-damaged.
>> 
>> You mean:
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>> 
>> Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
>> thought that it is better readable, but it is easy to fix.
> 
> That's not what I was referring to, but it is fine to fix that too.
> 
> What I meant was that the first column of the patch body is corrupted.
> Your v2 has hunks like this (bad):
> 
> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
> {
> -	return swap ? bswap_32(word) : word;
> +	return swap ? swab32(word) : word;
> }
> 
> 
> Your v3 has this (good):
> 
> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
> {
> -	*dst = swap ? bswap_32(val) : val;
> +	*dst = swap ? swab32(val) : val;
> }

Does this mean it is ok now in V3 in all cases? I have switched my patch editor
tool from indirect git imap-send to git send-email (which appears to be more
compatible).

BR and thanks,
Nikolaus Schaller


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15 17:16               ` H. Nikolaus Schaller
  0 siblings, 0 replies; 38+ messages in thread
From: H. Nikolaus Schaller @ 2015-10-15 17:16 UTC (permalink / raw)
  To: linux-arm-kernel


Am 15.10.2015 um 19:07 schrieb Nathan Lynch <Nathan_Lynch@mentor.com>:

> On 10/15/2015 12:52 AM, H. Nikolaus Schaller wrote:
>> Am 14.10.2015 um 16:16 schrieb Nathan Lynch <nathan_lynch@mentor.com>:
>>> and it would be easier for me to deal with a patch that isn't
>>> whitespace-damaged.
>> 
>> You mean:
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #46: FILE: arch/arm/vdso/vdsomunge.c:64:
>> +		(((unsigned short)(x) & (unsigned short)0xff00U) >> 8) ))
>> 
>> ERROR: space prohibited before that close parenthesis ')'
>> #53: FILE: arch/arm/vdso/vdsomunge.c:71:
>> +		(((unsigned int)(x) & (unsigned int)0xff000000UL) >> 24) ))
>> 
>> Well, I had copied that verbatim from arch/mips/boot/elf2ecoff.c and
>> thought that it is better readable, but it is easy to fix.
> 
> That's not what I was referring to, but it is fine to fix that too.
> 
> What I meant was that the first column of the patch body is corrupted.
> Your v2 has hunks like this (bad):
> 
> static Elf32_Word read_elf_word(Elf32_Word word, bool swap)
> {
> -	return swap ? bswap_32(word) : word;
> +	return swap ? swab32(word) : word;
> }
> 
> 
> Your v3 has this (good):
> 
> static void write_elf_word(Elf32_Word val, Elf32_Word *dst, bool swap)
> {
> -	*dst = swap ? bswap_32(val) : val;
> +	*dst = swap ? swab32(val) : val;
> }

Does this mean it is ok now in V3 in all cases? I have switched my patch editor
tool from indirect git imap-send to git send-email (which appears to be more
compatible).

BR and thanks,
Nikolaus Schaller

^ permalink raw reply	[flat|nested] 38+ messages in thread

* Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
  2015-10-15 17:16               ` H. Nikolaus Schaller
@ 2015-10-15 17:23                 ` Nathan Lynch
  -1 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-15 17:23 UTC (permalink / raw)
  To: H. Nikolaus Schaller
  Cc: Szabolcs Nagy, Russell King, Will Deacon, linux-arm-kernel,
	linux-kernel, marek

On 10/15/2015 12:16 PM, H. Nikolaus Schaller wrote:
> Does this mean it is ok now in V3 in all cases? I have switched my patch editor
> tool from indirect git imap-send to git send-email (which appears to be more
> compatible).

v3 applied without issue, so yes, in that respect it is fine.


^ permalink raw reply	[flat|nested] 38+ messages in thread

* [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h
@ 2015-10-15 17:23                 ` Nathan Lynch
  0 siblings, 0 replies; 38+ messages in thread
From: Nathan Lynch @ 2015-10-15 17:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/15/2015 12:16 PM, H. Nikolaus Schaller wrote:
> Does this mean it is ok now in V3 in all cases? I have switched my patch editor
> tool from indirect git imap-send to git send-email (which appears to be more
> compatible).

v3 applied without issue, so yes, in that respect it is fine.

^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2015-10-15 17:24 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <cover.1443628457.git.hns@goldelico.com>
2015-09-30 15:56 ` [PATCH] ARM: fix vdsomunge depends on glibc specific byteswap.h H. Nikolaus Schaller
2015-09-30 15:56   ` H. Nikolaus Schaller
2015-09-30 16:02   ` Ard Biesheuvel
2015-09-30 16:02     ` Ard Biesheuvel
2015-09-30 16:13     ` H. Nikolaus Schaller
2015-09-30 16:13       ` H. Nikolaus Schaller
2015-09-30 16:17       ` Ard Biesheuvel
2015-09-30 16:17         ` Ard Biesheuvel
2015-09-30 17:25         ` H. Nikolaus Schaller
2015-09-30 17:25           ` H. Nikolaus Schaller
2015-09-30 17:37         ` Nathan Lynch
2015-09-30 17:37           ` Nathan Lynch
2015-09-30 17:47           ` H. Nikolaus Schaller
2015-09-30 17:47             ` H. Nikolaus Schaller
2015-09-30 18:17             ` Nathan Lynch
2015-09-30 18:17               ` Nathan Lynch
2015-09-30 19:08               ` H. Nikolaus Schaller
2015-09-30 19:08                 ` H. Nikolaus Schaller
     [not found]                 ` <cover.1443791320.git.hns@goldelico.com>
2015-10-02 13:10                   ` [PATCH] ARM: fix vdsomunge not to depend " H. Nikolaus Schaller
2015-10-03  8:20                   ` H. Nikolaus Schaller
2015-10-03 20:46   ` [PATCH v2] " H. Nikolaus Schaller
2015-10-03 20:46     ` H. Nikolaus Schaller
2015-10-14 12:47     ` H. Nikolaus Schaller
2015-10-14 12:47       ` H. Nikolaus Schaller
2015-10-14 14:16       ` Nathan Lynch
2015-10-14 14:16         ` Nathan Lynch
2015-10-15  5:52         ` H. Nikolaus Schaller
2015-10-15  5:52           ` H. Nikolaus Schaller
2015-10-15 16:37           ` Russell King - ARM Linux
2015-10-15 16:37             ` Russell King - ARM Linux
2015-10-15 16:52             ` H. Nikolaus Schaller
2015-10-15 16:52               ` H. Nikolaus Schaller
2015-10-15 17:07           ` Nathan Lynch
2015-10-15 17:07             ` Nathan Lynch
2015-10-15 17:16             ` H. Nikolaus Schaller
2015-10-15 17:16               ` H. Nikolaus Schaller
2015-10-15 17:23               ` Nathan Lynch
2015-10-15 17:23                 ` Nathan Lynch

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.