Message ID | 1606277097-5853-1-git-send-email-suxingxing@loongson.cn (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | rseq/selftests: Fix MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ build error under other arch. | expand |
----- On Nov 24, 2020, at 11:04 PM, Xingxing Su suxingxing@loongson.cn wrote: > Except arch x86, the function rseq_offset_deref_addv is not defined. > The function test_membarrier_manager_thread call rseq_offset_deref_addv > produces a build error. > > The RSEQ_ARCH_HAS_OFFSET_DEREF_ADD should contain all the code > for the MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ. > If the other Arch implements this feature, > defined RSEQ_ARCH_HAS_OFFSET_DEREF_ADD in the header file > to ensure that this feature is available. > > Following build errors: > > param_test.c: In function ‘test_membarrier_worker_thread’: > param_test.c:1164:10: warning: implicit declaration of function > ‘rseq_offset_deref_addv’ > ret = rseq_offset_deref_addv(&args->percpu_list_ptr, > ^~~~~~~~~~~~~~~~~~~~~~ > /tmp/ccMj9yHJ.o: In function `test_membarrier_worker_thread': > param_test.c:1164: undefined reference to `rseq_offset_deref_addv' > param_test.c:1164: undefined reference to `rseq_offset_deref_addv' > collect2: error: ld returned 1 exit status > make: *** [/selftests/rseq/param_test_benchmark] Error 1 > > Signed-off-by: Xingxing Su <suxingxing@loongson.cn> Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Shuah, can you pick up this fix please ? Thanks, Mathieu > --- > tools/testing/selftests/rseq/param_test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/tools/testing/selftests/rseq/param_test.c > b/tools/testing/selftests/rseq/param_test.c > index 3845890..699ad5f 100644 > --- a/tools/testing/selftests/rseq/param_test.c > +++ b/tools/testing/selftests/rseq/param_test.c > @@ -1133,6 +1133,8 @@ static int set_signal_handler(void) > return ret; > } > > +/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */ > +#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV > struct test_membarrier_thread_args { > int stop; > intptr_t percpu_list_ptr; > @@ -1286,8 +1288,6 @@ void *test_membarrier_manager_thread(void *arg) > return NULL; > } > > -/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */ > -#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV > void test_membarrier(void) > { > const int num_threads = opt_threads; > -- > 1.8.3.1
On 11/25/20 9:10 AM, Mathieu Desnoyers wrote: > ----- On Nov 24, 2020, at 11:04 PM, Xingxing Su suxingxing@loongson.cn wrote: > >> Except arch x86, the function rseq_offset_deref_addv is not defined. >> The function test_membarrier_manager_thread call rseq_offset_deref_addv >> produces a build error. >> >> The RSEQ_ARCH_HAS_OFFSET_DEREF_ADD should contain all the code >> for the MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ. >> If the other Arch implements this feature, >> defined RSEQ_ARCH_HAS_OFFSET_DEREF_ADD in the header file >> to ensure that this feature is available. >> >> Following build errors: >> >> param_test.c: In function ‘test_membarrier_worker_thread’: >> param_test.c:1164:10: warning: implicit declaration of function >> ‘rseq_offset_deref_addv’ >> ret = rseq_offset_deref_addv(&args->percpu_list_ptr, >> ^~~~~~~~~~~~~~~~~~~~~~ >> /tmp/ccMj9yHJ.o: In function `test_membarrier_worker_thread': >> param_test.c:1164: undefined reference to `rseq_offset_deref_addv' >> param_test.c:1164: undefined reference to `rseq_offset_deref_addv' >> collect2: error: ld returned 1 exit status >> make: *** [/selftests/rseq/param_test_benchmark] Error 1 >> >> Signed-off-by: Xingxing Su <suxingxing@loongson.cn> > > Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> > > Shuah, can you pick up this fix please ? > Applying for 5.11-rc1. thanks, -- Shuah
diff --git a/tools/testing/selftests/rseq/param_test.c b/tools/testing/selftests/rseq/param_test.c index 3845890..699ad5f 100644 --- a/tools/testing/selftests/rseq/param_test.c +++ b/tools/testing/selftests/rseq/param_test.c @@ -1133,6 +1133,8 @@ static int set_signal_handler(void) return ret; } +/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */ +#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV struct test_membarrier_thread_args { int stop; intptr_t percpu_list_ptr; @@ -1286,8 +1288,6 @@ void *test_membarrier_manager_thread(void *arg) return NULL; } -/* Test MEMBARRIER_CMD_PRIVATE_RESTART_RSEQ_ON_CPU membarrier command. */ -#ifdef RSEQ_ARCH_HAS_OFFSET_DEREF_ADDV void test_membarrier(void) { const int num_threads = opt_threads;
Except arch x86, the function rseq_offset_deref_addv is not defined. The function test_membarrier_manager_thread call rseq_offset_deref_addv produces a build error. The RSEQ_ARCH_HAS_OFFSET_DEREF_ADD should contain all the code for the MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ. If the other Arch implements this feature, defined RSEQ_ARCH_HAS_OFFSET_DEREF_ADD in the header file to ensure that this feature is available. Following build errors: param_test.c: In function ‘test_membarrier_worker_thread’: param_test.c:1164:10: warning: implicit declaration of function ‘rseq_offset_deref_addv’ ret = rseq_offset_deref_addv(&args->percpu_list_ptr, ^~~~~~~~~~~~~~~~~~~~~~ /tmp/ccMj9yHJ.o: In function `test_membarrier_worker_thread': param_test.c:1164: undefined reference to `rseq_offset_deref_addv' param_test.c:1164: undefined reference to `rseq_offset_deref_addv' collect2: error: ld returned 1 exit status make: *** [/selftests/rseq/param_test_benchmark] Error 1 Signed-off-by: Xingxing Su <suxingxing@loongson.cn> --- tools/testing/selftests/rseq/param_test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)