selftests/rseq: Remove arm/mips asm goto compiler work-around

commit 94c5cf2a0e upstream.

The arm and mips work-around for asm goto size guess issues are not
properly documented, and lack reference to specific compiler versions,
upstream compiler bug tracker entry, and reproducer.

I can only find a loosely documented patch in my original LKML rseq post
refering to gcc < 7 on ARM, but it does not appear to be sufficient to
track the exact issue. Also, I am not sure MIPS really has the same
limitation.

Therefore, remove the work-around until we can properly document this.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/lkml/20171121141900.18471-17-mathieu.desnoyers@efficios.com/
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Mathieu Desnoyers 2022-01-24 12:12:50 -05:00 committed by Greg Kroah-Hartman
parent 33307f2afd
commit 786bd35119
2 changed files with 0 additions and 74 deletions

View file

@ -147,14 +147,11 @@ do { \
teardown \ teardown \
"b %l[" __rseq_str(cmpfail_label) "]\n\t" "b %l[" __rseq_str(cmpfail_label) "]\n\t"
#define rseq_workaround_gcc_asm_size_guess() __asm__ __volatile__("")
static inline __attribute__((always_inline)) static inline __attribute__((always_inline))
int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -198,14 +195,11 @@ int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -221,7 +215,6 @@ int rseq_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -270,14 +263,11 @@ int rseq_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -292,7 +282,6 @@ int rseq_addv(intptr_t *v, intptr_t count, int cpu)
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
@ -328,10 +317,8 @@ int rseq_addv(intptr_t *v, intptr_t count, int cpu)
, error1 , error1
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
@ -347,7 +334,6 @@ int rseq_cmpeqv_trystorev_storev(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -398,14 +384,11 @@ int rseq_cmpeqv_trystorev_storev(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -422,7 +405,6 @@ int rseq_cmpeqv_trystorev_storev_release(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -474,14 +456,11 @@ int rseq_cmpeqv_trystorev_storev_release(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -498,7 +477,6 @@ int rseq_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -554,14 +532,11 @@ int rseq_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
, error1, error2, error3 , error1, error2, error3
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -582,7 +557,6 @@ int rseq_cmpeqv_trymemcpy_storev(intptr_t *v, intptr_t expect,
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -678,21 +652,16 @@ int rseq_cmpeqv_trymemcpy_storev(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("cpu_id comparison failed"); rseq_bug("cpu_id comparison failed");
error2: error2:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("expected value comparison failed"); rseq_bug("expected value comparison failed");
#endif #endif
} }
@ -706,7 +675,6 @@ int rseq_cmpeqv_trymemcpy_storev_release(intptr_t *v, intptr_t expect,
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -803,21 +771,16 @@ int rseq_cmpeqv_trymemcpy_storev_release(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("cpu_id comparison failed"); rseq_bug("cpu_id comparison failed");
error2: error2:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("expected value comparison failed"); rseq_bug("expected value comparison failed");
#endif #endif
} }

View file

@ -154,14 +154,11 @@ do { \
teardown \ teardown \
"b %l[" __rseq_str(cmpfail_label) "]\n\t" "b %l[" __rseq_str(cmpfail_label) "]\n\t"
#define rseq_workaround_gcc_asm_size_guess() __asm__ __volatile__("")
static inline __attribute__((always_inline)) static inline __attribute__((always_inline))
int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu) int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -203,14 +200,11 @@ int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -226,7 +220,6 @@ int rseq_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -273,14 +266,11 @@ int rseq_cmpnev_storeoffp_load(intptr_t *v, intptr_t expectnot,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -295,7 +285,6 @@ int rseq_addv(intptr_t *v, intptr_t count, int cpu)
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
@ -331,10 +320,8 @@ int rseq_addv(intptr_t *v, intptr_t count, int cpu)
, error1 , error1
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
@ -350,7 +337,6 @@ int rseq_cmpeqv_trystorev_storev(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -399,14 +385,11 @@ int rseq_cmpeqv_trystorev_storev(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -423,7 +406,6 @@ int rseq_cmpeqv_trystorev_storev_release(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -473,14 +455,11 @@ int rseq_cmpeqv_trystorev_storev_release(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -497,7 +476,6 @@ int rseq_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
{ {
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -549,14 +527,11 @@ int rseq_cmpeqv_cmpeqv_storev(intptr_t *v, intptr_t expect,
, error1, error2, error3 , error1, error2, error3
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
@ -577,7 +552,6 @@ int rseq_cmpeqv_trymemcpy_storev(intptr_t *v, intptr_t expect,
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -670,21 +644,16 @@ int rseq_cmpeqv_trymemcpy_storev(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("cpu_id comparison failed"); rseq_bug("cpu_id comparison failed");
error2: error2:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("expected value comparison failed"); rseq_bug("expected value comparison failed");
#endif #endif
} }
@ -698,7 +667,6 @@ int rseq_cmpeqv_trymemcpy_storev_release(intptr_t *v, intptr_t expect,
RSEQ_INJECT_C(9) RSEQ_INJECT_C(9)
rseq_workaround_gcc_asm_size_guess();
__asm__ __volatile__ goto ( __asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */ RSEQ_ASM_DEFINE_TABLE(9, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail]) RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
@ -792,21 +760,16 @@ int rseq_cmpeqv_trymemcpy_storev_release(intptr_t *v, intptr_t expect,
, error1, error2 , error1, error2
#endif #endif
); );
rseq_workaround_gcc_asm_size_guess();
return 0; return 0;
abort: abort:
rseq_workaround_gcc_asm_size_guess();
RSEQ_INJECT_FAILED RSEQ_INJECT_FAILED
return -1; return -1;
cmpfail: cmpfail:
rseq_workaround_gcc_asm_size_guess();
return 1; return 1;
#ifdef RSEQ_COMPARE_TWICE #ifdef RSEQ_COMPARE_TWICE
error1: error1:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("cpu_id comparison failed"); rseq_bug("cpu_id comparison failed");
error2: error2:
rseq_workaround_gcc_asm_size_guess();
rseq_bug("expected value comparison failed"); rseq_bug("expected value comparison failed");
#endif #endif
} }