Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1246634 > unrolled thread
| Started by | "H. Nikolaus Schaller" <hns@goldelico.com> |
|---|---|
| First post | 2015-10-14 14:50 +0200 |
| Last post | 2015-10-15 19:30 +0200 |
| Articles | 8 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h "H. Nikolaus Schaller" <hns@goldelico.com> - 2015-10-14 14:50 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h Nathan Lynch <Nathan_Lynch@mentor.com> - 2015-10-14 16:20 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h "H. Nikolaus Schaller" <hns@goldelico.com> - 2015-10-15 08:00 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h Russell King - ARM Linux <linux@arm.linux.org.uk> - 2015-10-15 18:40 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h "H. Nikolaus Schaller" <hns@goldelico.com> - 2015-10-15 19:00 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h Nathan Lynch <Nathan_Lynch@mentor.com> - 2015-10-15 19:10 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h "H. Nikolaus Schaller" <hns@goldelico.com> - 2015-10-15 19:20 +0200
Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h Nathan Lynch <Nathan_Lynch@mentor.com> - 2015-10-15 19:30 +0200
| From | "H. Nikolaus Schaller" <hns@goldelico.com> |
|---|---|
| Date | 2015-10-14 14:50 +0200 |
| Subject | Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h |
| Message-ID | <qjtFf-7cv-11@gated-at.bofh.it> |
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
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Nathan Lynch <Nathan_Lynch@mentor.com> |
|---|---|
| Date | 2015-10-14 16:20 +0200 |
| Subject | Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h |
| Message-ID | <qjv4m-Wf-7@gated-at.bofh.it> |
| In reply to | #1246634 |
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "H. Nikolaus Schaller" <hns@goldelico.com> |
|---|---|
| Date | 2015-10-15 08:00 +0200 |
| Message-ID | <qjJK4-5GL-27@gated-at.bofh.it> |
| In reply to | #1246798 |
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Russell King - ARM Linux <linux@arm.linux.org.uk> |
|---|---|
| Date | 2015-10-15 18:40 +0200 |
| Subject | Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h |
| Message-ID | <qjTJo-3xl-21@gated-at.bofh.it> |
| In reply to | #1247411 |
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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "H. Nikolaus Schaller" <hns@goldelico.com> |
|---|---|
| Date | 2015-10-15 19:00 +0200 |
| Message-ID | <qjU2J-3Ul-3@gated-at.bofh.it> |
| In reply to | #1247994 |
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-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Nathan Lynch <Nathan_Lynch@mentor.com> |
|---|---|
| Date | 2015-10-15 19:10 +0200 |
| Subject | Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h |
| Message-ID | <qjUcp-4l6-1@gated-at.bofh.it> |
| In reply to | #1247411 |
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;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "H. Nikolaus Schaller" <hns@goldelico.com> |
|---|---|
| Date | 2015-10-15 19:20 +0200 |
| Message-ID | <qjUm6-4xd-19@gated-at.bofh.it> |
| In reply to | #1248014 |
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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Nathan Lynch <Nathan_Lynch@mentor.com> |
|---|---|
| Date | 2015-10-15 19:30 +0200 |
| Subject | Re: [PATCH v2] ARM: fix vdsomunge not to depend on glibc specific byteswap.h |
| Message-ID | <qjUvM-4Ij-13@gated-at.bofh.it> |
| In reply to | #1248022 |
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. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web