From: Christophe LEROY <christophe.leroy@c-s.fr>
To: Michael Ellerman <mpe@ellerman.id.au>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] lib/test_hexdump: fix failure on big endian cpu
Date: Wed, 8 Aug 2018 09:44:28 +0200 [thread overview]
Message-ID: <1690d8af-3e67-e82b-ef2a-8adee6eaa497@c-s.fr> (raw)
In-Reply-To: <87mutxb9qy.fsf@concordia.ellerman.id.au>
Le 08/08/2018 à 09:25, Michael Ellerman a écrit :
> Christophe Leroy <christophe.leroy@c-s.fr> writes:
>> diff --git a/lib/test_hexdump.c b/lib/test_hexdump.c
>> index 3f415d8101f3..626f580b4ff7 100644
>> --- a/lib/test_hexdump.c
>> +++ b/lib/test_hexdump.c
>> @@ -32,16 +32,33 @@ static const char * const test_data_2_le[] __initconst = {
>> "d14c", "9919", "b143", "0caf",
>> };
>>
>> +static const char * const test_data_2_be[] __initconst = {
>> + "be32", "db7b", "0a18", "93b2",
>> + "70ba", "c424", "7d83", "349b",
>> + "a69c", "31ad", "9c0f", "ace9",
>> + "4cd1", "1999", "43b1", "af0c",
>> +};
>> +
>> static const char * const test_data_4_le[] __initconst = {
>> "7bdb32be", "b293180a", "24c4ba70", "9b34837d",
>> "ad319ca6", "e9ac0f9c", "9919d14c", "0cafb143",
>> };
>>
>> +static const char * const test_data_4_be[] __initconst = {
>> + "be32db7b", "0a1893b2", "70bac424", "7d83349b",
>> + "a69c31ad", "9c0face9", "4cd11999", "43b1af0c",
>> +};
>> +
>
> Is there a reason we can't do it all at compile time?
Codyingstyle suggests to use IS_ENABLED() as much as possible.
I checked symbols inside resulting vmlinux, only the BE ones are there
so it has
the same effect as an #ifdef
Extract from Documentation/process/codying-style.rst:
Within code, where possible, use the IS_ENABLED macro to convert a Kconfig
symbol into a C boolean expression, and use it in a normal C conditional:
.. code-block:: c
if (IS_ENABLED(CONFIG_SOMETHING)) {
...
}
The compiler will constant-fold the conditional away, and include or exclude
the block of code just as with an #ifdef, so this will not add any runtime
overhead. However, this approach still allows the C compiler to see the
code
inside the block, and check it for correctness (syntax, types, symbol
references, etc). Thus, you still have to use an #ifdef if the code
inside the
block references symbols that will not exist if the condition is not met.
Christophe
>
> eg:
>
> static const char * const test_data_4[] __initconst = {
> #ifdef CONFIG_CPU_LITTLE_ENDIAN
> "7bdb32be", "b293180a", "24c4ba70", "9b34837d",
> "ad319ca6", "e9ac0f9c", "9919d14c", "0cafb143",
> #else
> "be32db7b", "0a1893b2", "70bac424", "7d83349b",
> "a69c31ad", "9c0face9", "4cd11999", "43b1af0c",
> #endif
> };
>
>
> cheers
>
next prev parent reply other threads:[~2018-08-08 7:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-08 6:37 Christophe Leroy
2018-08-08 7:25 ` Michael Ellerman
2018-08-08 7:44 ` Christophe LEROY [this message]
2018-08-09 2:04 ` rashmica
2018-08-09 6:18 ` Michael Ellerman
2018-08-09 9:34 ` Andy Shevchenko
2018-08-09 12:33 ` Michael Ellerman
2018-08-08 12:13 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1690d8af-3e67-e82b-ef2a-8adee6eaa497@c-s.fr \
--to=christophe.leroy@c-s.fr \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®