Go to the documentation of this file.
15 #include <gtest/gtest.h>
16 #include <gtest/gtest-spi.h>
27 a6 == 6 || a7 == 7 || a8 == 8;
31 TEST(ABITest, SanityCheck) {
38 #if defined(SUPPORTS_ABI_TEST)
39 abi_test::internal::CallerState
state;
41 crypto_word_t argv[] = {
42 1, 2, 3, 4, 5, 6, 7, 8,
48 #if defined(OPENSSL_X86_64)
58 #if defined(OPENSSL_WINDOWS)
63 "unwound past starting frame");
65 #endif // OPENSSL_WINDOWS
67 #endif // OPENSSL_X86_64
68 #endif // SUPPORTS_ABI_TEST
71 #if defined(OPENSSL_X86_64) && defined(SUPPORTS_ABI_TEST)
109 abi_test::internal::CallerState
state;
113 &
state,
nullptr, 0, 0 );
117 "rbx was not restored after return");
120 #if defined(OPENSSL_WINDOWS)
122 "rdi was not restored after return");
124 "rsi was not restored after return");
130 "rbp was not restored after return");
136 "r12 was not restored after return");
138 "r13 was not restored after return");
140 "r14 was not restored after return");
142 "r15 was not restored after return");
150 #if defined(OPENSSL_WINDOWS)
152 "xmm6 was not restored after return");
154 "xmm7 was not restored after return");
156 "xmm8 was not restored after return");
158 "xmm9 was not restored after return");
160 "xmm10 was not restored after return");
162 "xmm11 was not restored after return");
164 "xmm12 was not restored after return");
166 "xmm13 was not restored after return");
168 "xmm14 was not restored after return");
170 "xmm15 was not restored after return");
185 "Direction flag set after return");
187 <<
"CHECK_ABI did not insulate the caller from direction flag errors";
189 #endif // OPENSSL_X86_64 && SUPPORTS_ABI_TEST
191 #if defined(OPENSSL_X86) && defined(SUPPORTS_ABI_TEST)
193 void abi_test_clobber_eax(
void);
194 void abi_test_clobber_ebx(
void);
195 void abi_test_clobber_ecx(
void);
196 void abi_test_clobber_edx(
void);
197 void abi_test_clobber_esi(
void);
198 void abi_test_clobber_edi(
void);
199 void abi_test_clobber_ebp(
void);
213 abi_test::internal::CallerState
state;
216 reinterpret_cast<crypto_word_t
>(abi_test_clobber_ebx),
217 &
state,
nullptr, 0, 0 );
221 "ebx was not restored after return");
225 "edi was not restored after return");
227 "esi was not restored after return");
229 "ebp was not restored after return");
241 "Direction flag set after return");
243 <<
"CHECK_ABI did not insulate the caller from direction flag errors";
245 #endif // OPENSSL_X86 && SUPPORTS_ABI_TEST
247 #if defined(OPENSSL_ARM) && defined(SUPPORTS_ABI_TEST)
249 void abi_test_clobber_r0(
void);
250 void abi_test_clobber_r1(
void);
251 void abi_test_clobber_r2(
void);
252 void abi_test_clobber_r3(
void);
253 void abi_test_clobber_r4(
void);
254 void abi_test_clobber_r5(
void);
255 void abi_test_clobber_r6(
void);
256 void abi_test_clobber_r7(
void);
264 void abi_test_clobber_d0(
void);
265 void abi_test_clobber_d1(
void);
266 void abi_test_clobber_d2(
void);
267 void abi_test_clobber_d3(
void);
268 void abi_test_clobber_d4(
void);
269 void abi_test_clobber_d5(
void);
270 void abi_test_clobber_d6(
void);
271 void abi_test_clobber_d7(
void);
272 void abi_test_clobber_d8(
void);
273 void abi_test_clobber_d9(
void);
274 void abi_test_clobber_d10(
void);
275 void abi_test_clobber_d11(
void);
276 void abi_test_clobber_d12(
void);
277 void abi_test_clobber_d13(
void);
278 void abi_test_clobber_d14(
void);
279 void abi_test_clobber_d15(
void);
285 abi_test::internal::CallerState
state;
288 reinterpret_cast<crypto_word_t
>(abi_test_clobber_r4),
289 &
state,
nullptr, 0, 0 );
296 "r4 was not restored after return");
298 "r5 was not restored after return");
300 "r6 was not restored after return");
302 "r7 was not restored after return");
304 "r8 was not restored after return");
305 #if defined(OPENSSL_APPLE)
309 "r9 was not restored after return");
312 "r10 was not restored after return");
314 "r11 was not restored after return");
326 "d8 was not restored after return");
328 "d9 was not restored after return");
330 "d10 was not restored after return");
332 "d11 was not restored after return");
334 "d12 was not restored after return");
336 "d13 was not restored after return");
338 "d14 was not restored after return");
340 "d15 was not restored after return");
342 #endif // OPENSSL_ARM && SUPPORTS_ABI_TEST
344 #if defined(OPENSSL_AARCH64) && defined(SUPPORTS_ABI_TEST)
346 void abi_test_clobber_x0(
void);
347 void abi_test_clobber_x1(
void);
348 void abi_test_clobber_x2(
void);
349 void abi_test_clobber_x3(
void);
350 void abi_test_clobber_x4(
void);
351 void abi_test_clobber_x5(
void);
352 void abi_test_clobber_x6(
void);
353 void abi_test_clobber_x7(
void);
354 void abi_test_clobber_x8(
void);
355 void abi_test_clobber_x9(
void);
356 void abi_test_clobber_x10(
void);
357 void abi_test_clobber_x11(
void);
358 void abi_test_clobber_x12(
void);
359 void abi_test_clobber_x13(
void);
360 void abi_test_clobber_x14(
void);
361 void abi_test_clobber_x15(
void);
362 void abi_test_clobber_x16(
void);
363 void abi_test_clobber_x17(
void);
365 void abi_test_clobber_x19(
void);
366 void abi_test_clobber_x20(
void);
367 void abi_test_clobber_x21(
void);
368 void abi_test_clobber_x22(
void);
369 void abi_test_clobber_x23(
void);
370 void abi_test_clobber_x24(
void);
371 void abi_test_clobber_x25(
void);
372 void abi_test_clobber_x26(
void);
373 void abi_test_clobber_x27(
void);
374 void abi_test_clobber_x28(
void);
375 void abi_test_clobber_x29(
void);
377 void abi_test_clobber_d0(
void);
378 void abi_test_clobber_d1(
void);
379 void abi_test_clobber_d2(
void);
380 void abi_test_clobber_d3(
void);
381 void abi_test_clobber_d4(
void);
382 void abi_test_clobber_d5(
void);
383 void abi_test_clobber_d6(
void);
384 void abi_test_clobber_d7(
void);
385 void abi_test_clobber_d8(
void);
386 void abi_test_clobber_d9(
void);
387 void abi_test_clobber_d10(
void);
388 void abi_test_clobber_d11(
void);
389 void abi_test_clobber_d12(
void);
390 void abi_test_clobber_d13(
void);
391 void abi_test_clobber_d14(
void);
392 void abi_test_clobber_d15(
void);
393 void abi_test_clobber_d16(
void);
394 void abi_test_clobber_d17(
void);
395 void abi_test_clobber_d18(
void);
396 void abi_test_clobber_d19(
void);
397 void abi_test_clobber_d20(
void);
398 void abi_test_clobber_d21(
void);
399 void abi_test_clobber_d22(
void);
400 void abi_test_clobber_d23(
void);
401 void abi_test_clobber_d24(
void);
402 void abi_test_clobber_d25(
void);
403 void abi_test_clobber_d26(
void);
404 void abi_test_clobber_d27(
void);
405 void abi_test_clobber_d28(
void);
406 void abi_test_clobber_d29(
void);
407 void abi_test_clobber_d30(
void);
408 void abi_test_clobber_d31(
void);
410 void abi_test_clobber_v8_upper(
void);
411 void abi_test_clobber_v9_upper(
void);
412 void abi_test_clobber_v10_upper(
void);
413 void abi_test_clobber_v11_upper(
void);
414 void abi_test_clobber_v12_upper(
void);
415 void abi_test_clobber_v13_upper(
void);
416 void abi_test_clobber_v14_upper(
void);
417 void abi_test_clobber_v15_upper(
void);
420 TEST(ABITest, AArch64) {
423 abi_test::internal::CallerState
state;
426 reinterpret_cast<crypto_word_t
>(abi_test_clobber_x19),
427 &
state,
nullptr, 0, 0 );
449 "x19 was not restored after return");
451 "x20 was not restored after return");
453 "x21 was not restored after return");
455 "x22 was not restored after return");
457 "x23 was not restored after return");
459 "x24 was not restored after return");
461 "x25 was not restored after return");
463 "x26 was not restored after return");
465 "x27 was not restored after return");
467 "x28 was not restored after return");
469 "x29 was not restored after return");
480 "d8 was not restored after return");
482 "d9 was not restored after return");
484 "d10 was not restored after return");
486 "d11 was not restored after return");
488 "d12 was not restored after return");
490 "d13 was not restored after return");
492 "d14 was not restored after return");
494 "d15 was not restored after return");
522 #endif // OPENSSL_AARCH64 && SUPPORTS_ABI_TEST
524 #if defined(OPENSSL_PPC64LE) && defined(SUPPORTS_ABI_TEST)
526 void abi_test_clobber_r0(
void);
528 void abi_test_clobber_r2(
void);
529 void abi_test_clobber_r3(
void);
530 void abi_test_clobber_r4(
void);
531 void abi_test_clobber_r5(
void);
532 void abi_test_clobber_r6(
void);
533 void abi_test_clobber_r7(
void);
542 void abi_test_clobber_r16(
void);
543 void abi_test_clobber_r17(
void);
544 void abi_test_clobber_r18(
void);
545 void abi_test_clobber_r19(
void);
546 void abi_test_clobber_r20(
void);
547 void abi_test_clobber_r21(
void);
548 void abi_test_clobber_r22(
void);
549 void abi_test_clobber_r23(
void);
550 void abi_test_clobber_r24(
void);
551 void abi_test_clobber_r25(
void);
552 void abi_test_clobber_r26(
void);
553 void abi_test_clobber_r27(
void);
554 void abi_test_clobber_r28(
void);
555 void abi_test_clobber_r29(
void);
556 void abi_test_clobber_r30(
void);
557 void abi_test_clobber_r31(
void);
559 void abi_test_clobber_f0(
void);
560 void abi_test_clobber_f1(
void);
561 void abi_test_clobber_f2(
void);
562 void abi_test_clobber_f3(
void);
563 void abi_test_clobber_f4(
void);
564 void abi_test_clobber_f5(
void);
565 void abi_test_clobber_f6(
void);
566 void abi_test_clobber_f7(
void);
567 void abi_test_clobber_f8(
void);
568 void abi_test_clobber_f9(
void);
569 void abi_test_clobber_f10(
void);
570 void abi_test_clobber_f11(
void);
571 void abi_test_clobber_f12(
void);
572 void abi_test_clobber_f13(
void);
573 void abi_test_clobber_f14(
void);
574 void abi_test_clobber_f15(
void);
575 void abi_test_clobber_f16(
void);
576 void abi_test_clobber_f17(
void);
577 void abi_test_clobber_f18(
void);
578 void abi_test_clobber_f19(
void);
579 void abi_test_clobber_f20(
void);
580 void abi_test_clobber_f21(
void);
581 void abi_test_clobber_f22(
void);
582 void abi_test_clobber_f23(
void);
583 void abi_test_clobber_f24(
void);
584 void abi_test_clobber_f25(
void);
585 void abi_test_clobber_f26(
void);
586 void abi_test_clobber_f27(
void);
587 void abi_test_clobber_f28(
void);
588 void abi_test_clobber_f29(
void);
589 void abi_test_clobber_f30(
void);
590 void abi_test_clobber_f31(
void);
592 void abi_test_clobber_v0(
void);
593 void abi_test_clobber_v1(
void);
594 void abi_test_clobber_v2(
void);
595 void abi_test_clobber_v3(
void);
596 void abi_test_clobber_v4(
void);
597 void abi_test_clobber_v5(
void);
598 void abi_test_clobber_v6(
void);
599 void abi_test_clobber_v7(
void);
600 void abi_test_clobber_v8(
void);
601 void abi_test_clobber_v9(
void);
602 void abi_test_clobber_v10(
void);
603 void abi_test_clobber_v11(
void);
604 void abi_test_clobber_v12(
void);
605 void abi_test_clobber_v13(
void);
606 void abi_test_clobber_v14(
void);
607 void abi_test_clobber_v15(
void);
608 void abi_test_clobber_v16(
void);
609 void abi_test_clobber_v17(
void);
610 void abi_test_clobber_v18(
void);
611 void abi_test_clobber_v19(
void);
612 void abi_test_clobber_v20(
void);
613 void abi_test_clobber_v21(
void);
614 void abi_test_clobber_v22(
void);
615 void abi_test_clobber_v23(
void);
616 void abi_test_clobber_v24(
void);
617 void abi_test_clobber_v25(
void);
618 void abi_test_clobber_v26(
void);
619 void abi_test_clobber_v27(
void);
620 void abi_test_clobber_v28(
void);
621 void abi_test_clobber_v29(
void);
622 void abi_test_clobber_v30(
void);
623 void abi_test_clobber_v31(
void);
625 void abi_test_clobber_cr0(
void);
626 void abi_test_clobber_cr1(
void);
627 void abi_test_clobber_cr2(
void);
628 void abi_test_clobber_cr3(
void);
629 void abi_test_clobber_cr4(
void);
630 void abi_test_clobber_cr5(
void);
631 void abi_test_clobber_cr6(
void);
632 void abi_test_clobber_cr7(
void);
634 void abi_test_clobber_ctr(
void);
635 void abi_test_clobber_lr(
void);
639 TEST(ABITest, PPC64LE) {
642 abi_test::internal::CallerState
state;
646 &
state,
nullptr, 0, 0 );
661 "r14 was not restored after return");
663 "r15 was not restored after return");
665 "r16 was not restored after return");
667 "r17 was not restored after return");
669 "r18 was not restored after return");
671 "r19 was not restored after return");
673 "r20 was not restored after return");
675 "r21 was not restored after return");
677 "r22 was not restored after return");
679 "r23 was not restored after return");
681 "r24 was not restored after return");
683 "r25 was not restored after return");
685 "r26 was not restored after return");
687 "r27 was not restored after return");
689 "r28 was not restored after return");
691 "r29 was not restored after return");
693 "r30 was not restored after return");
695 "r31 was not restored after return");
712 "f14 was not restored after return");
714 "f15 was not restored after return");
716 "f16 was not restored after return");
718 "f17 was not restored after return");
720 "f18 was not restored after return");
722 "f19 was not restored after return");
724 "f20 was not restored after return");
726 "f21 was not restored after return");
728 "f22 was not restored after return");
730 "f23 was not restored after return");
732 "f24 was not restored after return");
734 "f25 was not restored after return");
736 "f26 was not restored after return");
738 "f27 was not restored after return");
740 "f28 was not restored after return");
742 "f29 was not restored after return");
744 "f30 was not restored after return");
746 "f31 was not restored after return");
769 "v20 was not restored after return");
771 "v21 was not restored after return");
773 "v22 was not restored after return");
775 "v23 was not restored after return");
777 "v24 was not restored after return");
779 "v25 was not restored after return");
781 "v26 was not restored after return");
783 "v27 was not restored after return");
785 "v28 was not restored after return");
787 "v29 was not restored after return");
789 "v30 was not restored after return");
791 "v31 was not restored after return");
796 "cr was not restored after return");
798 "cr was not restored after return");
800 "cr was not restored after return");
808 #endif // OPENSSL_PPC64LE && SUPPORTS_ABI_TEST
#define abi_test_clobber_xmm7
#define abi_test_clobber_r15
#define abi_test_clobber_rax
#define abi_test_clobber_xmm15
static bool test_function_ok
#define abi_test_clobber_xmm14
#define abi_test_clobber_r8
#define abi_test_trampoline
#define abi_test_get_and_clear_direction_flag
TEST(ABITest, SanityCheck)
#define abi_test_clobber_xmm5
#define abi_test_clobber_xmm4
#define abi_test_clobber_xmm1
#define abi_test_clobber_rbp
#define abi_test_clobber_rdx
#define EXPECT_NE(val1, val2)
#define CHECK_ABI_NO_UNWIND(...)
#define abi_test_clobber_r13
#define abi_test_clobber_xmm2
#define abi_test_clobber_xmm0
#define abi_test_clobber_rbx
#define abi_test_clobber_r14
#define abi_test_clobber_rdi
#define abi_test_clobber_xmm10
#define abi_test_clobber_r9
#define abi_test_clobber_r10
static int TestFunction(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8)
#define abi_test_clobber_xmm11
#define abi_test_clobber_xmm3
#define abi_test_clobber_r11
#define CHECK_ABI_SEH(...)
#define abi_test_clobber_rsi
#define abi_test_clobber_xmm13
#define abi_test_bad_unwind_temporary
#define abi_test_bad_unwind_wrong_register
bool UnwindTestsEnabled()
#define abi_test_clobber_xmm6
#define EXPECT_TRUE(condition)
#define EXPECT_NONFATAL_FAILURE(statement, substr)
#define abi_test_clobber_r12
#define abi_test_clobber_xmm12
#define abi_test_set_direction_flag
#define abi_test_clobber_rcx
#define abi_test_clobber_xmm8
#define abi_test_clobber_xmm9
static struct rpc_state state
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:39