lib/test_hexdump.c: fix failure on big endian cpu
On a big endian cpu, test_hexdump fails as follows. The logs show that bytes are expected in reversed order. [...] test_hexdump: Len: 24 buflen: 130 strlen: 97 test_hexdump: Result: 97 'be32db7b 0a1893b2 70bac424 7d83349b a69c31ad 9c0face9 .2.{....p..$}.4...1.....' test_hexdump: Expect: 97 '7bdb32be b293180a 24c4ba70 9b34837d ad319ca6 e9ac0f9c .2.{....p..$}.4...1.....' test_hexdump: Len: 8 buflen: 130 strlen: 77 test_hexdump: Result: 77 'be32db7b0a1893b2 .2.{....' test_hexdump: Expect: 77 'b293180a7bdb32be .2.{....' test_hexdump: Len: 6 buflen: 131 strlen: 87 test_hexdump: Result: 87 'be32 db7b 0a18 .2.{..' test_hexdump: Expect: 87 '32be 7bdb 180a .2.{..' test_hexdump: Len: 24 buflen: 131 strlen: 97 test_hexdump: Result: 97 'be32db7b 0a1893b2 70bac424 7d83349b a69c31ad 9c0face9 .2.{....p..$}.4...1.....' test_hexdump: Expect: 97 '7bdb32be b293180a 24c4ba70 9b34837d ad319ca6 e9ac0f9c .2.{....p..$}.4...1.....' test_hexdump: Len: 32 buflen: 131 strlen: 101 test_hexdump: Result: 101 'be32db7b0a1893b2 70bac4247d83349b a69c31ad9c0face9 4cd1199943b1af0c .2.{....p..$}.4...1.....L...C...' test_hexdump: Expect: 101 'b293180a7bdb32be 9b34837d24c4ba70 e9ac0f9cad319ca6 0cafb1439919d14c .2.{....p..$}.4...1.....L...C...' test_hexdump: failed 801 out of 1184 tests This patch fixes it. Link: http://lkml.kernel.org/r/f3112437f62c2f48300535510918e8be1dceacfb.1533610877.git.christophe.leroy@c-s.fr Fixes: 64d1d77a44697 ("hexdump: introduce test suite") Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: rashmica <rashmicy@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
fd7338ef62
commit
de9df3993c
@ -18,7 +18,7 @@ static const unsigned char data_b[] = {
|
||||
|
||||
static const unsigned char data_a[] = ".2.{....p..$}.4...1.....L...C...";
|
||||
|
||||
static const char * const test_data_1_le[] __initconst = {
|
||||
static const char * const test_data_1[] __initconst = {
|
||||
"be", "32", "db", "7b", "0a", "18", "93", "b2",
|
||||
"70", "ba", "c4", "24", "7d", "83", "34", "9b",
|
||||
"a6", "9c", "31", "ad", "9c", "0f", "ac", "e9",
|
||||
@ -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",
|
||||
};
|
||||
|
||||
static const char * const test_data_8_le[] __initconst = {
|
||||
"b293180a7bdb32be", "9b34837d24c4ba70",
|
||||
"e9ac0f9cad319ca6", "0cafb1439919d14c",
|
||||
};
|
||||
|
||||
static const char * const test_data_8_be[] __initconst = {
|
||||
"be32db7b0a1893b2", "70bac4247d83349b",
|
||||
"a69c31ad9c0face9", "4cd1199943b1af0c",
|
||||
};
|
||||
|
||||
#define FILL_CHAR '#'
|
||||
|
||||
static unsigned total_tests __initdata;
|
||||
@ -56,6 +73,7 @@ static void __init test_hexdump_prepare_test(size_t len, int rowsize,
|
||||
size_t l = len;
|
||||
int gs = groupsize, rs = rowsize;
|
||||
unsigned int i;
|
||||
const bool is_be = IS_ENABLED(CONFIG_CPU_BIG_ENDIAN);
|
||||
|
||||
if (rs != 16 && rs != 32)
|
||||
rs = 16;
|
||||
@ -67,13 +85,13 @@ static void __init test_hexdump_prepare_test(size_t len, int rowsize,
|
||||
gs = 1;
|
||||
|
||||
if (gs == 8)
|
||||
result = test_data_8_le;
|
||||
result = is_be ? test_data_8_be : test_data_8_le;
|
||||
else if (gs == 4)
|
||||
result = test_data_4_le;
|
||||
result = is_be ? test_data_4_be : test_data_4_le;
|
||||
else if (gs == 2)
|
||||
result = test_data_2_le;
|
||||
result = is_be ? test_data_2_be : test_data_2_le;
|
||||
else
|
||||
result = test_data_1_le;
|
||||
result = test_data_1;
|
||||
|
||||
/* hex dump */
|
||||
p = test;
|
||||
|
Loading…
x
Reference in New Issue
Block a user