40 make_usable(uint32_t access_rights)
44 make_unusable(uint32_t access_rights)
56 setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(std::vector<struct control_flow_path> &cfg)
83 setup_check_guest_segment_registers_all_paths(std::vector<struct control_flow_path> &cfg)
128 setup_check_guest_descriptor_table_registers_all_paths(std::vector<struct control_flow_path> &cfg)
140 setup_check_guest_rip_and_rflags_all_paths(std::vector<struct control_flow_path> &cfg)
157 setup_check_guest_non_register_state_all_paths(std::vector<struct control_flow_path> &cfg)
178 setup_check_guest_pdptes_all_paths(std::vector<struct control_flow_path> &cfg)
188 std::vector<struct control_flow_path> sub_cfg;
190 setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(sub_cfg);
191 setup_check_guest_segment_registers_all_paths(sub_cfg);
192 setup_check_guest_descriptor_table_registers_all_paths(sub_cfg);
193 setup_check_guest_rip_and_rflags_all_paths(sub_cfg);
194 setup_check_guest_non_register_state_all_paths(sub_cfg);
195 setup_check_guest_pdptes_all_paths(sub_cfg);
197 path.
setup = [sub_cfg]
199 for (
const auto &sub_path : sub_cfg)
207 setup_check_guest_cr0_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
239 setup_check_guest_cr0_verify_paging_enabled_paths(std::vector<struct control_flow_path> &cfg)
256 setup_check_guest_cr4_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
273 setup_check_guest_load_debug_controls_verify_reserved_paths(std::vector<struct control_flow_path> &cfg)
299 setup_check_guest_verify_ia_32e_mode_enabled_paths(std::vector<struct control_flow_path> &cfg)
334 setup_check_guest_verify_ia_32e_mode_disabled_paths(std::vector<struct control_flow_path> &cfg)
360 setup_check_guest_cr3_for_unsupported_bits_paths(std::vector<struct control_flow_path> &cfg)
373 setup_check_guest_load_debug_controls_verify_dr7_paths(std::vector<struct control_flow_path> &cfg)
399 setup_check_guest_ia32_sysenter_esp_canonical_address_paths(std::vector<struct control_flow_path> &cfg)
412 setup_check_guest_ia32_sysenter_eip_canonical_address_paths(std::vector<struct control_flow_path> &cfg)
425 setup_check_guest_verify_load_ia32_perf_global_ctrl_paths(std::vector<struct control_flow_path> &cfg)
451 setup_check_guest_verify_load_ia32_pat_paths(std::vector<struct control_flow_path> &cfg)
512 setup_check_guest_verify_load_ia32_efer_paths(std::vector<struct control_flow_path> &cfg)
583 setup_check_guest_verify_load_ia32_bndcfgs_paths(std::vector<struct control_flow_path> &cfg)
614 setup_check_guest_tr_ti_bit_equals_0_paths(std::vector<struct control_flow_path> &cfg)
627 setup_check_guest_ldtr_ti_bit_equals_0_paths(std::vector<struct control_flow_path> &cfg)
648 setup_check_guest_ss_and_cs_rpl_are_the_same_paths(std::vector<struct control_flow_path> &cfg)
650 path.
setup = [&] { enable_v8086(); };
683 setup_check_guest_cs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
685 path.
setup = [&] { disable_v8086(); };
705 setup_check_guest_ss_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
707 path.
setup = [&] { disable_v8086(); };
727 setup_check_guest_ds_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
729 path.
setup = [&] { disable_v8086(); };
749 setup_check_guest_es_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
751 path.
setup = [&] { disable_v8086(); };
771 setup_check_guest_fs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
773 path.
setup = [&] { disable_v8086(); };
793 setup_check_guest_gs_base_is_shifted_paths(std::vector<struct control_flow_path> &cfg)
795 path.
setup = [&] { disable_v8086(); };
815 setup_check_guest_tr_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
828 setup_check_guest_fs_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
841 setup_check_guest_gs_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
854 setup_check_guest_ldtr_base_is_canonical_paths(std::vector<struct control_flow_path> &cfg)
875 setup_check_guest_cs_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
888 setup_check_guest_ss_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
909 setup_check_guest_ds_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
930 setup_check_guest_es_base_upper_dword_0_paths(std::vector<struct control_flow_path> &cfg)
951 setup_check_guest_cs_limit_paths(std::vector<struct control_flow_path> &cfg)
953 path.
setup = [&] { disable_v8086(); };
972 setup_check_guest_ss_limit_paths(std::vector<struct control_flow_path> &cfg)
974 path.
setup = [&] { disable_v8086(); };
993 setup_check_guest_ds_limit_paths(std::vector<struct control_flow_path> &cfg)
995 path.
setup = [&] { disable_v8086(); };
1006 cfg.push_back(path);
1010 cfg.push_back(path);
1014 setup_check_guest_es_limit_paths(std::vector<struct control_flow_path> &cfg)
1016 path.
setup = [&] { disable_v8086(); };
1018 cfg.push_back(path);
1027 cfg.push_back(path);
1031 cfg.push_back(path);
1035 setup_check_guest_gs_limit_paths(std::vector<struct control_flow_path> &cfg)
1037 path.
setup = [&] { disable_v8086(); };
1039 cfg.push_back(path);
1048 cfg.push_back(path);
1052 cfg.push_back(path);
1056 setup_check_guest_fs_limit_paths(std::vector<struct control_flow_path> &cfg)
1058 path.
setup = [&] { disable_v8086(); };
1060 cfg.push_back(path);
1069 cfg.push_back(path);
1073 cfg.push_back(path);
1077 setup_check_guest_v8086_cs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1079 path.
setup = [&] { disable_v8086(); };
1081 cfg.push_back(path);
1090 cfg.push_back(path);
1094 cfg.push_back(path);
1098 setup_check_guest_v8086_ss_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1100 path.
setup = [&] { disable_v8086(); };
1102 cfg.push_back(path);
1111 cfg.push_back(path);
1115 cfg.push_back(path);
1119 setup_check_guest_v8086_ds_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1121 path.
setup = [&] { disable_v8086(); };
1123 cfg.push_back(path);
1132 cfg.push_back(path);
1136 cfg.push_back(path);
1140 setup_check_guest_v8086_es_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1142 path.
setup = [&] { disable_v8086(); };
1144 cfg.push_back(path);
1153 cfg.push_back(path);
1157 cfg.push_back(path);
1161 setup_check_guest_v8086_fs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1163 path.
setup = [&] { disable_v8086(); };
1165 cfg.push_back(path);
1174 cfg.push_back(path);
1178 cfg.push_back(path);
1182 setup_check_guest_v8086_gs_access_rights_paths(std::vector<struct control_flow_path> &cfg)
1184 path.
setup = [&] { disable_v8086(); };
1186 cfg.push_back(path);
1195 cfg.push_back(path);
1199 cfg.push_back(path);
1203 setup_check_guest_cs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1205 path.
setup = [&] { enable_v8086(); };
1207 cfg.push_back(path);
1218 cfg.push_back(path);
1230 cfg.push_back(path);
1239 cfg.push_back(path);
1244 cfg.push_back(path);
1248 setup_check_guest_ss_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1250 path.
setup = [&] { enable_v8086(); };
1252 cfg.push_back(path);
1260 cfg.push_back(path);
1268 cfg.push_back(path);
1273 cfg.push_back(path);
1277 setup_check_guest_ds_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1279 path.
setup = [&] { enable_v8086(); };
1281 cfg.push_back(path);
1289 cfg.push_back(path);
1297 cfg.push_back(path);
1302 cfg.push_back(path);
1306 setup_check_guest_es_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1308 path.
setup = [&] { enable_v8086(); };
1310 cfg.push_back(path);
1318 cfg.push_back(path);
1326 cfg.push_back(path);
1331 cfg.push_back(path);
1335 setup_check_guest_fs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1337 path.
setup = [&] { enable_v8086(); };
1339 cfg.push_back(path);
1347 cfg.push_back(path);
1355 cfg.push_back(path);
1360 cfg.push_back(path);
1364 setup_check_guest_gs_access_rights_type_paths(std::vector<struct control_flow_path> &cfg)
1366 path.
setup = [&] { enable_v8086(); };
1368 cfg.push_back(path);
1376 cfg.push_back(path);
1384 cfg.push_back(path);
1389 cfg.push_back(path);
1393 setup_check_guest_cs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1395 path.
setup = [&] { enable_v8086(); };
1397 cfg.push_back(path);
1406 cfg.push_back(path);
1410 cfg.push_back(path);
1414 setup_check_guest_ss_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1416 path.
setup = [&] { enable_v8086(); };
1418 cfg.push_back(path);
1426 cfg.push_back(path);
1435 cfg.push_back(path);
1439 cfg.push_back(path);
1443 setup_check_guest_ds_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1445 path.
setup = [&] { enable_v8086(); };
1447 cfg.push_back(path);
1455 cfg.push_back(path);
1464 cfg.push_back(path);
1468 cfg.push_back(path);
1472 setup_check_guest_es_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1474 path.
setup = [&] { enable_v8086(); };
1476 cfg.push_back(path);
1484 cfg.push_back(path);
1493 cfg.push_back(path);
1497 cfg.push_back(path);
1501 setup_check_guest_fs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1503 path.
setup = [&] { enable_v8086(); };
1505 cfg.push_back(path);
1513 cfg.push_back(path);
1522 cfg.push_back(path);
1526 cfg.push_back(path);
1530 setup_check_guest_gs_is_not_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
1532 path.
setup = [&] { enable_v8086(); };
1534 cfg.push_back(path);
1542 cfg.push_back(path);
1551 cfg.push_back(path);
1555 cfg.push_back(path);
1559 setup_check_guest_cs_type_not_equal_3_paths(std::vector<struct control_flow_path> &cfg)
1561 path.
setup = [&] { enable_v8086(); };
1563 cfg.push_back(path);
1571 cfg.push_back(path);
1576 cfg.push_back(path);
1580 cfg.push_back(path);
1584 setup_check_guest_cs_dpl_adheres_to_ss_dpl_paths(std::vector<struct control_flow_path> &cfg)
1586 path.
setup = [&] { enable_v8086(); };
1588 cfg.push_back(path);
1598 cfg.push_back(path);
1602 cfg.push_back(path);
1607 cfg.push_back(path);
1611 cfg.push_back(path);
1615 cfg.push_back(path);
1619 setup_check_guest_ss_dpl_must_equal_rpl_paths(std::vector<struct control_flow_path> &cfg)
1621 path.
setup = [&] { enable_v8086(); };
1623 cfg.push_back(path);
1633 cfg.push_back(path);
1645 cfg.push_back(path);
1649 cfg.push_back(path);
1653 setup_check_guest_ss_dpl_must_equal_zero_paths(std::vector<struct control_flow_path> &cfg)
1655 path.
setup = [&] { enable_v8086(); };
1657 cfg.push_back(path);
1666 cfg.push_back(path);
1675 cfg.push_back(path);
1679 setup_check_guest_ds_dpl_paths(std::vector<struct control_flow_path> &cfg)
1681 path.
setup = [&] { enable_v8086(); };
1683 cfg.push_back(path);
1694 cfg.push_back(path);
1704 cfg.push_back(path);
1712 cfg.push_back(path);
1722 cfg.push_back(path);
1726 cfg.push_back(path);
1730 setup_check_guest_es_dpl_paths(std::vector<struct control_flow_path> &cfg)
1732 path.
setup = [&] { enable_v8086(); };
1734 cfg.push_back(path);
1745 cfg.push_back(path);
1755 cfg.push_back(path);
1763 cfg.push_back(path);
1773 cfg.push_back(path);
1777 cfg.push_back(path);
1781 setup_check_guest_fs_dpl_paths(std::vector<struct control_flow_path> &cfg)
1783 path.
setup = [&] { enable_v8086(); };
1785 cfg.push_back(path);
1796 cfg.push_back(path);
1806 cfg.push_back(path);
1814 cfg.push_back(path);
1824 cfg.push_back(path);
1828 cfg.push_back(path);
1832 setup_check_guest_gs_dpl_paths(std::vector<struct control_flow_path> &cfg)
1834 path.
setup = [&] { enable_v8086(); };
1836 cfg.push_back(path);
1847 cfg.push_back(path);
1857 cfg.push_back(path);
1865 cfg.push_back(path);
1875 cfg.push_back(path);
1879 cfg.push_back(path);
1883 setup_check_guest_cs_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
1885 path.
setup = [&] { enable_v8086(); };
1887 cfg.push_back(path);
1896 cfg.push_back(path);
1900 cfg.push_back(path);
1904 setup_check_guest_ss_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
1906 path.
setup = [&] { enable_v8086(); };
1908 cfg.push_back(path);
1916 cfg.push_back(path);
1921 cfg.push_back(path);
1925 cfg.push_back(path);
1929 setup_check_guest_ds_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
1931 path.
setup = [&] { enable_v8086(); };
1933 cfg.push_back(path);
1941 cfg.push_back(path);
1946 cfg.push_back(path);
1950 cfg.push_back(path);
1953 setup_check_guest_es_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
1955 path.
setup = [&] { enable_v8086(); };
1957 cfg.push_back(path);
1965 cfg.push_back(path);
1970 cfg.push_back(path);
1974 cfg.push_back(path);
1978 setup_check_guest_fs_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
1980 path.
setup = [&] { enable_v8086(); };
1982 cfg.push_back(path);
1990 cfg.push_back(path);
1995 cfg.push_back(path);
1999 cfg.push_back(path);
2002 setup_check_guest_gs_must_be_present_if_usable_paths(std::vector<struct control_flow_path> &cfg)
2004 path.
setup = [&] { enable_v8086(); };
2006 cfg.push_back(path);
2014 cfg.push_back(path);
2019 cfg.push_back(path);
2023 cfg.push_back(path);
2027 setup_check_guest_cs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2029 path.
setup = [&] { enable_v8086(); };
2031 cfg.push_back(path);
2040 cfg.push_back(path);
2044 cfg.push_back(path);
2048 setup_check_guest_ss_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2050 path.
setup = [&] { enable_v8086(); };
2052 cfg.push_back(path);
2060 cfg.push_back(path);
2069 cfg.push_back(path);
2073 cfg.push_back(path);
2077 setup_check_guest_ds_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2079 path.
setup = [&] { enable_v8086(); };
2081 cfg.push_back(path);
2089 cfg.push_back(path);
2098 cfg.push_back(path);
2102 cfg.push_back(path);
2106 setup_check_guest_es_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2108 path.
setup = [&] { enable_v8086(); };
2110 cfg.push_back(path);
2118 cfg.push_back(path);
2127 cfg.push_back(path);
2131 cfg.push_back(path);
2135 setup_check_guest_fs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2137 path.
setup = [&] { enable_v8086(); };
2139 cfg.push_back(path);
2147 cfg.push_back(path);
2156 cfg.push_back(path);
2160 cfg.push_back(path);
2164 setup_check_guest_gs_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2166 path.
setup = [&] { enable_v8086(); };
2168 cfg.push_back(path);
2176 cfg.push_back(path);
2185 cfg.push_back(path);
2189 cfg.push_back(path);
2193 setup_check_guest_cs_db_must_be_0_if_l_equals_1_paths(std::vector<struct control_flow_path> &cfg)
2195 path.
setup = [&] { enable_v8086(); };
2197 cfg.push_back(path);
2206 cfg.push_back(path);
2215 cfg.push_back(path);
2219 cfg.push_back(path);
2224 cfg.push_back(path);
2228 setup_check_guest_cs_granularity_paths(std::vector<struct control_flow_path> &cfg)
2230 path.
setup = [&] { enable_v8086(); };
2232 cfg.push_back(path);
2242 cfg.push_back(path);
2246 cfg.push_back(path);
2251 cfg.push_back(path);
2255 setup_check_guest_ss_granularity_paths(std::vector<struct control_flow_path> &cfg)
2257 path.
setup = [&] { enable_v8086(); };
2259 cfg.push_back(path);
2267 cfg.push_back(path);
2277 cfg.push_back(path);
2281 cfg.push_back(path);
2286 cfg.push_back(path);
2290 setup_check_guest_ds_granularity_paths(std::vector<struct control_flow_path> &cfg)
2292 path.
setup = [&] { enable_v8086(); };
2294 cfg.push_back(path);
2302 cfg.push_back(path);
2312 cfg.push_back(path);
2316 cfg.push_back(path);
2321 cfg.push_back(path);
2325 setup_check_guest_es_granularity_paths(std::vector<struct control_flow_path> &cfg)
2327 path.
setup = [&] { enable_v8086(); };
2329 cfg.push_back(path);
2337 cfg.push_back(path);
2347 cfg.push_back(path);
2351 cfg.push_back(path);
2356 cfg.push_back(path);
2360 setup_check_guest_fs_granularity_paths(std::vector<struct control_flow_path> &cfg)
2362 path.
setup = [&] { enable_v8086(); };
2364 cfg.push_back(path);
2372 cfg.push_back(path);
2382 cfg.push_back(path);
2386 cfg.push_back(path);
2391 cfg.push_back(path);
2395 setup_check_guest_gs_granularity_paths(std::vector<struct control_flow_path> &cfg)
2397 path.
setup = [&] { enable_v8086(); };
2399 cfg.push_back(path);
2407 cfg.push_back(path);
2417 cfg.push_back(path);
2421 cfg.push_back(path);
2426 cfg.push_back(path);
2430 setup_check_guest_cs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2432 path.
setup = [&] { enable_v8086(); };
2434 cfg.push_back(path);
2443 cfg.push_back(path);
2447 cfg.push_back(path);
2451 setup_check_guest_ss_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2453 path.
setup = [&] { enable_v8086(); };
2455 cfg.push_back(path);
2463 cfg.push_back(path);
2472 cfg.push_back(path);
2476 cfg.push_back(path);
2480 setup_check_guest_ds_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2482 path.
setup = [&] { enable_v8086(); };
2484 cfg.push_back(path);
2492 cfg.push_back(path);
2501 cfg.push_back(path);
2505 cfg.push_back(path);
2509 setup_check_guest_es_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2511 path.
setup = [&] { enable_v8086(); };
2513 cfg.push_back(path);
2521 cfg.push_back(path);
2530 cfg.push_back(path);
2534 cfg.push_back(path);
2538 setup_check_guest_fs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2540 path.
setup = [&] { enable_v8086(); };
2542 cfg.push_back(path);
2550 cfg.push_back(path);
2559 cfg.push_back(path);
2563 cfg.push_back(path);
2567 setup_check_guest_gs_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2569 path.
setup = [&] { enable_v8086(); };
2571 cfg.push_back(path);
2579 cfg.push_back(path);
2588 cfg.push_back(path);
2592 cfg.push_back(path);
2596 setup_check_guest_tr_type_must_be_11_paths(std::vector<struct control_flow_path> &cfg)
2606 cfg.push_back(path);
2614 cfg.push_back(path);
2618 cfg.push_back(path);
2623 cfg.push_back(path);
2627 setup_check_guest_tr_must_be_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
2632 cfg.push_back(path);
2636 cfg.push_back(path);
2640 setup_check_guest_tr_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
2645 cfg.push_back(path);
2649 cfg.push_back(path);
2653 setup_check_guest_tr_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2658 cfg.push_back(path);
2662 cfg.push_back(path);
2666 setup_check_guest_tr_granularity_paths(std::vector<struct control_flow_path> &cfg)
2668 path.
setup = [&] { enable_v8086(); };
2670 cfg.push_back(path);
2678 cfg.push_back(path);
2688 cfg.push_back(path);
2692 cfg.push_back(path);
2697 cfg.push_back(path);
2701 setup_check_guest_tr_must_be_usable_paths(std::vector<struct control_flow_path> &cfg)
2706 cfg.push_back(path);
2710 cfg.push_back(path);
2714 setup_check_guest_tr_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2719 cfg.push_back(path);
2723 cfg.push_back(path);
2727 setup_check_guest_ldtr_type_must_be_2_paths(std::vector<struct control_flow_path> &cfg)
2731 cfg.push_back(path);
2740 cfg.push_back(path);
2744 cfg.push_back(path);
2748 setup_check_guest_ldtr_must_be_a_system_descriptor_paths(std::vector<struct control_flow_path> &cfg)
2752 cfg.push_back(path);
2761 cfg.push_back(path);
2765 cfg.push_back(path);
2769 setup_check_guest_ldtr_must_be_present_paths(std::vector<struct control_flow_path> &cfg)
2773 cfg.push_back(path);
2782 cfg.push_back(path);
2786 cfg.push_back(path);
2790 setup_check_guest_ldtr_access_rights_reserved_must_be_0_paths(std::vector<struct control_flow_path> &cfg)
2794 cfg.push_back(path);
2803 cfg.push_back(path);
2807 cfg.push_back(path);
2811 setup_check_guest_ldtr_granularity_paths(std::vector<struct control_flow_path> &cfg)
2813 path.
setup = [&] { enable_v8086(); };
2815 cfg.push_back(path);
2823 cfg.push_back(path);
2833 cfg.push_back(path);
2837 cfg.push_back(path);
2842 cfg.push_back(path);
2846 setup_check_guest_ldtr_access_rights_remaining_reserved_bit_0_paths(std::vector<struct control_flow_path> &cfg)
2850 cfg.push_back(path);
2859 cfg.push_back(path);
2863 cfg.push_back(path);
2867 setup_check_guest_gdtr_base_must_be_canonical_paths(std::vector<struct control_flow_path> &cfg)
2872 cfg.push_back(path);
2876 cfg.push_back(path);
2880 setup_check_guest_idtr_base_must_be_canonical_paths(std::vector<struct control_flow_path> &cfg)
2885 cfg.push_back(path);
2889 cfg.push_back(path);
2893 setup_check_guest_gdtr_limit_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
2898 cfg.push_back(path);
2902 cfg.push_back(path);
2906 setup_check_guest_idtr_limit_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
2911 cfg.push_back(path);
2915 cfg.push_back(path);
2919 setup_check_guest_rip_upper_bits_paths(std::vector<struct control_flow_path> &cfg)
2928 cfg.push_back(path);
2938 cfg.push_back(path);
2942 cfg.push_back(path);
2946 setup_check_guest_rip_valid_addr_paths(std::vector<struct control_flow_path> &cfg)
2954 cfg.push_back(path);
2963 cfg.push_back(path);
2972 cfg.push_back(path);
2976 cfg.push_back(path);
2980 setup_check_guest_rflags_reserved_bits_paths(std::vector<struct control_flow_path> &cfg)
2985 cfg.push_back(path);
2990 cfg.push_back(path);
2994 cfg.push_back(path);
2998 setup_check_guest_rflags_vm_bit_paths(std::vector<struct control_flow_path> &cfg)
3007 cfg.push_back(path);
3016 cfg.push_back(path);
3020 cfg.push_back(path);
3024 setup_check_guest_rflag_interrupt_enable_paths(std::vector<struct control_flow_path> &cfg)
3026 using namespace vm_entry_interruption_information_field;
3030 cfg.push_back(path);
3038 cfg.push_back(path);
3047 cfg.push_back(path);
3051 cfg.push_back(path);
3055 setup_check_guest_valid_activity_state_paths(std::vector<struct control_flow_path> &cfg)
3060 cfg.push_back(path);
3064 cfg.push_back(path);
3068 setup_check_guest_activity_state_not_hlt_when_dpl_not_0_paths(std::vector<struct control_flow_path> &cfg)
3072 cfg.push_back(path);
3081 cfg.push_back(path);
3085 cfg.push_back(path);
3089 setup_check_guest_must_be_active_if_injecting_blocking_state_paths(std::vector<struct control_flow_path> &cfg)
3093 cfg.push_back(path);
3102 cfg.push_back(path);
3111 cfg.push_back(path);
3115 cfg.push_back(path);
3119 setup_check_guest_hlt_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
3121 using namespace vm_entry_interruption_information_field;
3125 cfg.push_back(path);
3133 cfg.push_back(path);
3141 cfg.push_back(path);
3149 cfg.push_back(path);
3153 cfg.push_back(path);
3158 cfg.push_back(path);
3166 cfg.push_back(path);
3171 cfg.push_back(path);
3176 cfg.push_back(path);
3180 setup_check_guest_shutdown_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
3182 using namespace vm_entry_interruption_information_field;
3186 cfg.push_back(path);
3194 cfg.push_back(path);
3202 cfg.push_back(path);
3210 cfg.push_back(path);
3215 cfg.push_back(path);
3220 cfg.push_back(path);
3224 setup_check_guest_sipi_valid_interrupts_paths(std::vector<struct control_flow_path> &cfg)
3226 using namespace vm_entry_interruption_information_field;
3230 cfg.push_back(path);
3238 cfg.push_back(path);
3243 cfg.push_back(path);
3247 setup_check_guest_valid_activity_state_and_smm_paths(std::vector<struct control_flow_path> &cfg)
3255 cfg.push_back(path);
3264 cfg.push_back(path);
3269 cfg.push_back(path);
3273 setup_check_guest_interruptibility_state_reserved_paths(std::vector<struct control_flow_path> &cfg)
3278 cfg.push_back(path);
3282 cfg.push_back(path);
3286 setup_check_guest_interruptibility_state_sti_mov_ss_paths(std::vector<struct control_flow_path> &cfg)
3290 cfg.push_back(path);
3299 cfg.push_back(path);
3303 setup_check_guest_interruptibility_state_sti_paths(std::vector<struct control_flow_path> &cfg)
3307 cfg.push_back(path);
3316 cfg.push_back(path);
3320 cfg.push_back(path);
3324 setup_check_guest_interruptibility_state_external_interrupt_paths(std::vector<struct control_flow_path> &cfg)
3326 using namespace vm_entry_interruption_information_field;
3330 cfg.push_back(path);
3338 cfg.push_back(path);
3347 cfg.push_back(path);
3356 cfg.push_back(path);
3360 cfg.push_back(path);
3364 setup_check_guest_interruptibility_state_nmi_paths(std::vector<struct control_flow_path> &cfg)
3366 using namespace vm_entry_interruption_information_field;
3370 cfg.push_back(path);
3378 cfg.push_back(path);
3387 cfg.push_back(path);
3391 cfg.push_back(path);
3395 setup_check_guest_interruptibility_not_in_smm_paths(std::vector<struct control_flow_path> &cfg)
3401 setup_check_guest_interruptibility_entry_to_smm_paths(std::vector<struct control_flow_path> &cfg)
3409 cfg.push_back(path);
3419 cfg.push_back(path);
3423 cfg.push_back(path);
3427 setup_check_guest_interruptibility_state_sti_and_nmi_paths(std::vector<struct control_flow_path> &cfg)
3429 using namespace vm_entry_interruption_information_field;
3433 cfg.push_back(path);
3441 cfg.push_back(path);
3450 cfg.push_back(path);
3454 cfg.push_back(path);
3458 setup_check_guest_interruptibility_state_virtual_nmi_paths(std::vector<struct control_flow_path> &cfg)
3460 using namespace vm_entry_interruption_information_field;
3468 cfg.push_back(path);
3477 cfg.push_back(path);
3485 cfg.push_back(path);
3494 cfg.push_back(path);
3498 cfg.push_back(path);
3502 setup_check_guest_interruptibility_state_enclave_interrupt_paths(std::vector<struct control_flow_path> &cfg)
3506 cfg.push_back(path);
3515 cfg.push_back(path);
3524 cfg.push_back(path);
3528 cfg.push_back(path);
3532 setup_check_guest_pending_debug_exceptions_reserved_paths(std::vector<struct control_flow_path> &cfg)
3537 cfg.push_back(path);
3541 cfg.push_back(path);
3545 setup_check_guest_pending_debug_exceptions_dbg_ctl_paths(std::vector<struct control_flow_path> &cfg)
3553 cfg.push_back(path);
3564 cfg.push_back(path);
3574 cfg.push_back(path);
3578 cfg.push_back(path);
3582 setup_check_guest_pending_debug_exceptions_rtm_paths(std::vector<struct control_flow_path> &cfg)
3586 cfg.push_back(path);
3595 cfg.push_back(path);
3608 cfg.push_back(path);
3617 cfg.push_back(path);
3626 cfg.push_back(path);
3630 cfg.push_back(path);
3634 setup_check_guest_vmcs_link_pointer_bits_11_0_paths(std::vector<struct control_flow_path> &cfg)
3638 cfg.push_back(path);
3643 cfg.push_back(path);
3647 cfg.push_back(path);
3651 setup_check_guest_vmcs_link_pointer_valid_addr_paths(std::vector<struct control_flow_path> &cfg)
3655 cfg.push_back(path);
3660 cfg.push_back(path);
3664 cfg.push_back(path);
3668 setup_check_guest_vmcs_link_pointer_first_word_paths(std::vector<struct control_flow_path> &cfg)
3672 cfg.push_back(path);
3681 cfg.push_back(path);
3691 cfg.push_back(path);
3700 cfg.push_back(path);
3710 cfg.push_back(path);
3719 cfg.push_back(path);
3723 cfg.push_back(path);
3727 setup_check_guest_valid_pdpte_with_ept_disabled_paths(std::vector<struct control_flow_path> &cfg)
3731 cfg.push_back(path);
3739 cfg.push_back(path);
3748 cfg.push_back(path);
3760 cfg.push_back(path);
3771 cfg.push_back(path);
3782 cfg.push_back(path);
3791 cfg.push_back(path);
3800 cfg.push_back(path);
3809 cfg.push_back(path);
3813 cfg.push_back(path);
3817 setup_check_guest_valid_pdpte_with_ept_enabled_paths(std::vector<struct control_flow_path> &cfg)
3821 cfg.push_back(path);
3829 cfg.push_back(path);
3838 cfg.push_back(path);
3848 cfg.push_back(path);
3858 cfg.push_back(path);
3869 cfg.push_back(path);
3878 cfg.push_back(path);
3887 cfg.push_back(path);
3896 cfg.push_back(path);
3900 cfg.push_back(path);
3904 vmcs_ut::test_check_guest_state_all()
3906 std::vector<struct control_flow_path> cfg;
3913 vmcs_ut::test_check_guest_control_registers_debug_registers_and_msrs_all()
3915 std::vector<struct control_flow_path> cfg;
3916 setup_check_guest_control_registers_debug_registers_and_msrs_all_paths(cfg);
3922 vmcs_ut::test_check_guest_segment_registers_all()
3924 std::vector<struct control_flow_path> cfg;
3925 setup_check_guest_segment_registers_all_paths(cfg);
3931 vmcs_ut::test_check_guest_descriptor_table_registers_all()
3933 std::vector<struct control_flow_path> cfg;
3934 setup_check_guest_descriptor_table_registers_all_paths(cfg);
3940 vmcs_ut::test_check_guest_rip_and_rflags_all()
3942 std::vector<struct control_flow_path> cfg;
3943 setup_check_guest_rip_and_rflags_all_paths(cfg);
3949 vmcs_ut::test_check_guest_non_register_state_all()
3951 std::vector<struct control_flow_path> cfg;
3952 setup_check_guest_non_register_state_all_paths(cfg);
3958 vmcs_ut::test_check_guest_pdptes_all()
3960 std::vector<struct control_flow_path> cfg;
3961 setup_check_guest_pdptes_all_paths(cfg);
3967 vmcs_ut::test_check_guest_cr0_for_unsupported_bits()
3969 std::vector<struct control_flow_path> cfg;
3970 setup_check_guest_cr0_for_unsupported_bits_paths(cfg);
3976 vmcs_ut::test_check_guest_cr0_verify_paging_enabled()
3978 std::vector<struct control_flow_path> cfg;
3979 setup_check_guest_cr0_verify_paging_enabled_paths(cfg);
3985 vmcs_ut::test_check_guest_cr4_for_unsupported_bits()
3987 std::vector<struct control_flow_path> cfg;
3988 setup_check_guest_cr4_for_unsupported_bits_paths(cfg);
3994 vmcs_ut::test_check_guest_load_debug_controls_verify_reserved()
3997 std::vector<struct control_flow_path> cfg;
3998 setup_check_guest_load_debug_controls_verify_reserved_paths(cfg);
4004 vmcs_ut::test_check_guest_verify_ia_32e_mode_enabled()
4006 std::vector<struct control_flow_path> cfg;
4007 setup_check_guest_verify_ia_32e_mode_enabled_paths(cfg);
4013 vmcs_ut::test_check_guest_verify_ia_32e_mode_disabled()
4015 std::vector<struct control_flow_path> cfg;
4016 setup_check_guest_verify_ia_32e_mode_disabled_paths(cfg);
4022 vmcs_ut::test_check_guest_cr3_for_unsupported_bits()
4024 std::vector<struct control_flow_path> cfg;
4025 setup_check_guest_cr3_for_unsupported_bits_paths(cfg);
4031 vmcs_ut::test_check_guest_load_debug_controls_verify_dr7()
4033 std::vector<struct control_flow_path> cfg;
4034 setup_check_guest_load_debug_controls_verify_dr7_paths(cfg);
4040 vmcs_ut::test_check_guest_ia32_sysenter_esp_canonical_address()
4042 std::vector<struct control_flow_path> cfg;
4043 setup_check_guest_ia32_sysenter_esp_canonical_address_paths(cfg);
4049 vmcs_ut::test_check_guest_ia32_sysenter_eip_canonical_address()
4051 std::vector<struct control_flow_path> cfg;
4052 setup_check_guest_ia32_sysenter_eip_canonical_address_paths(cfg);
4058 vmcs_ut::test_check_guest_verify_load_ia32_perf_global_ctrl()
4060 std::vector<struct control_flow_path> cfg;
4061 setup_check_guest_verify_load_ia32_perf_global_ctrl_paths(cfg);
4067 vmcs_ut::test_check_guest_verify_load_ia32_pat()
4069 std::vector<struct control_flow_path> cfg;
4070 setup_check_guest_verify_load_ia32_pat_paths(cfg);
4076 vmcs_ut::test_check_guest_verify_load_ia32_efer()
4078 std::vector<struct control_flow_path> cfg;
4079 setup_check_guest_verify_load_ia32_efer_paths(cfg);
4085 vmcs_ut::test_check_guest_verify_load_ia32_bndcfgs()
4087 std::vector<struct control_flow_path> cfg;
4088 setup_check_guest_verify_load_ia32_bndcfgs_paths(cfg);
4094 vmcs_ut::test_check_guest_tr_ti_bit_equals_0()
4096 std::vector<struct control_flow_path> cfg;
4097 setup_check_guest_tr_ti_bit_equals_0_paths(cfg);
4103 vmcs_ut::test_check_guest_ldtr_ti_bit_equals_0()
4105 std::vector<struct control_flow_path> cfg;
4106 setup_check_guest_ldtr_ti_bit_equals_0_paths(cfg);
4112 vmcs_ut::test_check_guest_ss_and_cs_rpl_are_the_same()
4114 std::vector<struct control_flow_path> cfg;
4115 setup_check_guest_ss_and_cs_rpl_are_the_same_paths(cfg);
4121 vmcs_ut::test_check_guest_cs_base_is_shifted()
4123 std::vector<struct control_flow_path> cfg;
4124 setup_check_guest_cs_base_is_shifted_paths(cfg);
4130 vmcs_ut::test_check_guest_ss_base_is_shifted()
4132 std::vector<struct control_flow_path> cfg;
4133 setup_check_guest_ss_base_is_shifted_paths(cfg);
4139 vmcs_ut::test_check_guest_ds_base_is_shifted()
4141 std::vector<struct control_flow_path> cfg;
4142 setup_check_guest_ds_base_is_shifted_paths(cfg);
4148 vmcs_ut::test_check_guest_es_base_is_shifted()
4150 std::vector<struct control_flow_path> cfg;
4151 setup_check_guest_es_base_is_shifted_paths(cfg);
4157 vmcs_ut::test_check_guest_fs_base_is_shifted()
4159 std::vector<struct control_flow_path> cfg;
4160 setup_check_guest_fs_base_is_shifted_paths(cfg);
4166 vmcs_ut::test_check_guest_gs_base_is_shifted()
4168 std::vector<struct control_flow_path> cfg;
4169 setup_check_guest_gs_base_is_shifted_paths(cfg);
4175 vmcs_ut::test_check_guest_tr_base_is_canonical()
4177 std::vector<struct control_flow_path> cfg;
4178 setup_check_guest_tr_base_is_canonical_paths(cfg);
4184 vmcs_ut::test_check_guest_fs_base_is_canonical()
4186 std::vector<struct control_flow_path> cfg;
4187 setup_check_guest_fs_base_is_canonical_paths(cfg);
4193 vmcs_ut::test_check_guest_gs_base_is_canonical()
4195 std::vector<struct control_flow_path> cfg;
4196 setup_check_guest_gs_base_is_canonical_paths(cfg);
4202 vmcs_ut::test_check_guest_ldtr_base_is_canonical()
4204 std::vector<struct control_flow_path> cfg;
4205 setup_check_guest_ldtr_base_is_canonical_paths(cfg);
4211 vmcs_ut::test_check_guest_cs_base_upper_dword_0()
4213 std::vector<struct control_flow_path> cfg;
4214 setup_check_guest_cs_base_upper_dword_0_paths(cfg);
4220 vmcs_ut::test_check_guest_ss_base_upper_dword_0()
4222 std::vector<struct control_flow_path> cfg;
4223 setup_check_guest_ss_base_upper_dword_0_paths(cfg);
4229 vmcs_ut::test_check_guest_ds_base_upper_dword_0()
4231 std::vector<struct control_flow_path> cfg;
4232 setup_check_guest_ds_base_upper_dword_0_paths(cfg);
4238 vmcs_ut::test_check_guest_es_base_upper_dword_0()
4240 std::vector<struct control_flow_path> cfg;
4241 setup_check_guest_es_base_upper_dword_0_paths(cfg);
4247 vmcs_ut::test_check_guest_cs_limit()
4249 std::vector<struct control_flow_path> cfg;
4250 setup_check_guest_cs_limit_paths(cfg);
4256 vmcs_ut::test_check_guest_ss_limit()
4258 std::vector<struct control_flow_path> cfg;
4259 setup_check_guest_ss_limit_paths(cfg);
4265 vmcs_ut::test_check_guest_ds_limit()
4267 std::vector<struct control_flow_path> cfg;
4268 setup_check_guest_ds_limit_paths(cfg);
4274 vmcs_ut::test_check_guest_es_limit()
4276 std::vector<struct control_flow_path> cfg;
4277 setup_check_guest_es_limit_paths(cfg);
4283 vmcs_ut::test_check_guest_gs_limit()
4285 std::vector<struct control_flow_path> cfg;
4286 setup_check_guest_gs_limit_paths(cfg);
4292 vmcs_ut::test_check_guest_fs_limit()
4294 std::vector<struct control_flow_path> cfg;
4295 setup_check_guest_fs_limit_paths(cfg);
4301 vmcs_ut::test_check_guest_v8086_cs_access_rights()
4303 std::vector<struct control_flow_path> cfg;
4304 setup_check_guest_v8086_cs_access_rights_paths(cfg);
4310 vmcs_ut::test_check_guest_v8086_ss_access_rights()
4312 std::vector<struct control_flow_path> cfg;
4313 setup_check_guest_v8086_ss_access_rights_paths(cfg);
4319 vmcs_ut::test_check_guest_v8086_ds_access_rights()
4321 std::vector<struct control_flow_path> cfg;
4322 setup_check_guest_v8086_ds_access_rights_paths(cfg);
4328 vmcs_ut::test_check_guest_v8086_es_access_rights()
4330 std::vector<struct control_flow_path> cfg;
4331 setup_check_guest_v8086_es_access_rights_paths(cfg);
4337 vmcs_ut::test_check_guest_v8086_fs_access_rights()
4339 std::vector<struct control_flow_path> cfg;
4340 setup_check_guest_v8086_fs_access_rights_paths(cfg);
4346 vmcs_ut::test_check_guest_v8086_gs_access_rights()
4348 std::vector<struct control_flow_path> cfg;
4349 setup_check_guest_v8086_gs_access_rights_paths(cfg);
4356 vmcs_ut::test_check_guest_cs_access_rights_type()
4358 std::vector<struct control_flow_path> cfg;
4359 setup_check_guest_cs_access_rights_type_paths(cfg);
4365 vmcs_ut::test_check_guest_ss_access_rights_type()
4367 std::vector<struct control_flow_path> cfg;
4368 setup_check_guest_ss_access_rights_type_paths(cfg);
4374 vmcs_ut::test_check_guest_ds_access_rights_type()
4376 std::vector<struct control_flow_path> cfg;
4377 setup_check_guest_ds_access_rights_type_paths(cfg);
4383 vmcs_ut::test_check_guest_es_access_rights_type()
4385 std::vector<struct control_flow_path> cfg;
4386 setup_check_guest_es_access_rights_type_paths(cfg);
4392 vmcs_ut::test_check_guest_fs_access_rights_type()
4394 std::vector<struct control_flow_path> cfg;
4395 setup_check_guest_fs_access_rights_type_paths(cfg);
4401 vmcs_ut::test_check_guest_gs_access_rights_type()
4403 std::vector<struct control_flow_path> cfg;
4404 setup_check_guest_gs_access_rights_type_paths(cfg);
4410 vmcs_ut::test_check_guest_cs_is_not_a_system_descriptor()
4412 std::vector<struct control_flow_path> cfg;
4413 setup_check_guest_cs_is_not_a_system_descriptor_paths(cfg);
4419 vmcs_ut::test_check_guest_ss_is_not_a_system_descriptor()
4421 std::vector<struct control_flow_path> cfg;
4422 setup_check_guest_ss_is_not_a_system_descriptor_paths(cfg);
4428 vmcs_ut::test_check_guest_ds_is_not_a_system_descriptor()
4430 std::vector<struct control_flow_path> cfg;
4431 setup_check_guest_ds_is_not_a_system_descriptor_paths(cfg);
4437 vmcs_ut::test_check_guest_es_is_not_a_system_descriptor()
4439 std::vector<struct control_flow_path> cfg;
4440 setup_check_guest_es_is_not_a_system_descriptor_paths(cfg);
4446 vmcs_ut::test_check_guest_fs_is_not_a_system_descriptor()
4448 std::vector<struct control_flow_path> cfg;
4449 setup_check_guest_fs_is_not_a_system_descriptor_paths(cfg);
4455 vmcs_ut::test_check_guest_gs_is_not_a_system_descriptor()
4457 std::vector<struct control_flow_path> cfg;
4458 setup_check_guest_gs_is_not_a_system_descriptor_paths(cfg);
4464 vmcs_ut::test_check_guest_cs_type_not_equal_3()
4466 std::vector<struct control_flow_path> cfg;
4467 setup_check_guest_cs_type_not_equal_3_paths(cfg);
4473 vmcs_ut::test_check_guest_cs_dpl_adheres_to_ss_dpl()
4475 std::vector<struct control_flow_path> cfg;
4476 setup_check_guest_cs_dpl_adheres_to_ss_dpl_paths(cfg);
4482 vmcs_ut::test_check_guest_ss_dpl_must_equal_rpl()
4484 std::vector<struct control_flow_path> cfg;
4485 setup_check_guest_ss_dpl_must_equal_rpl_paths(cfg);
4491 vmcs_ut::test_check_guest_ss_dpl_must_equal_zero()
4493 std::vector<struct control_flow_path> cfg;
4494 setup_check_guest_ss_dpl_must_equal_zero_paths(cfg);
4500 vmcs_ut::test_check_guest_ds_dpl()
4502 std::vector<struct control_flow_path> cfg;
4503 setup_check_guest_ds_dpl_paths(cfg);
4509 vmcs_ut::test_check_guest_es_dpl()
4511 std::vector<struct control_flow_path> cfg;
4512 setup_check_guest_es_dpl_paths(cfg);
4518 vmcs_ut::test_check_guest_fs_dpl()
4520 std::vector<struct control_flow_path> cfg;
4521 setup_check_guest_fs_dpl_paths(cfg);
4527 vmcs_ut::test_check_guest_gs_dpl()
4529 std::vector<struct control_flow_path> cfg;
4530 setup_check_guest_gs_dpl_paths(cfg);
4536 vmcs_ut::test_check_guest_cs_must_be_present()
4538 std::vector<struct control_flow_path> cfg;
4539 setup_check_guest_cs_must_be_present_paths(cfg);
4545 vmcs_ut::test_check_guest_ss_must_be_present_if_usable()
4547 std::vector<struct control_flow_path> cfg;
4548 setup_check_guest_ss_must_be_present_if_usable_paths(cfg);
4554 vmcs_ut::test_check_guest_ds_must_be_present_if_usable()
4556 std::vector<struct control_flow_path> cfg;
4557 setup_check_guest_ds_must_be_present_if_usable_paths(cfg);
4563 vmcs_ut::test_check_guest_es_must_be_present_if_usable()
4565 std::vector<struct control_flow_path> cfg;
4566 setup_check_guest_es_must_be_present_if_usable_paths(cfg);
4572 vmcs_ut::test_check_guest_fs_must_be_present_if_usable()
4574 std::vector<struct control_flow_path> cfg;
4575 setup_check_guest_fs_must_be_present_if_usable_paths(cfg);
4581 vmcs_ut::test_check_guest_gs_must_be_present_if_usable()
4583 std::vector<struct control_flow_path> cfg;
4584 setup_check_guest_gs_must_be_present_if_usable_paths(cfg);
4590 vmcs_ut::test_check_guest_cs_access_rights_reserved_must_be_0()
4592 std::vector<struct control_flow_path> cfg;
4593 setup_check_guest_cs_access_rights_reserved_must_be_0_paths(cfg);
4599 vmcs_ut::test_check_guest_ss_access_rights_reserved_must_be_0()
4601 std::vector<struct control_flow_path> cfg;
4602 setup_check_guest_ss_access_rights_reserved_must_be_0_paths(cfg);
4608 vmcs_ut::test_check_guest_ds_access_rights_reserved_must_be_0()
4610 std::vector<struct control_flow_path> cfg;
4611 setup_check_guest_ds_access_rights_reserved_must_be_0_paths(cfg);
4617 vmcs_ut::test_check_guest_es_access_rights_reserved_must_be_0()
4619 std::vector<struct control_flow_path> cfg;
4620 setup_check_guest_es_access_rights_reserved_must_be_0_paths(cfg);
4626 vmcs_ut::test_check_guest_fs_access_rights_reserved_must_be_0()
4628 std::vector<struct control_flow_path> cfg;
4629 setup_check_guest_fs_access_rights_reserved_must_be_0_paths(cfg);
4635 vmcs_ut::test_check_guest_gs_access_rights_reserved_must_be_0()
4637 std::vector<struct control_flow_path> cfg;
4638 setup_check_guest_gs_access_rights_reserved_must_be_0_paths(cfg);
4644 vmcs_ut::test_check_guest_cs_db_must_be_0_if_l_equals_1()
4646 std::vector<struct control_flow_path> cfg;
4647 setup_check_guest_cs_db_must_be_0_if_l_equals_1_paths(cfg);
4653 vmcs_ut::test_check_guest_cs_granularity()
4655 std::vector<struct control_flow_path> cfg;
4656 setup_check_guest_cs_granularity_paths(cfg);
4662 vmcs_ut::test_check_guest_ss_granularity()
4664 std::vector<struct control_flow_path> cfg;
4665 setup_check_guest_ss_granularity_paths(cfg);
4671 vmcs_ut::test_check_guest_ds_granularity()
4673 std::vector<struct control_flow_path> cfg;
4674 setup_check_guest_ds_granularity_paths(cfg);
4680 vmcs_ut::test_check_guest_es_granularity()
4682 std::vector<struct control_flow_path> cfg;
4683 setup_check_guest_es_granularity_paths(cfg);
4689 vmcs_ut::test_check_guest_fs_granularity()
4691 std::vector<struct control_flow_path> cfg;
4692 setup_check_guest_fs_granularity_paths(cfg);
4698 vmcs_ut::test_check_guest_gs_granularity()
4700 std::vector<struct control_flow_path> cfg;
4701 setup_check_guest_gs_granularity_paths(cfg);
4707 vmcs_ut::test_check_guest_cs_access_rights_remaining_reserved_bit_0()
4709 std::vector<struct control_flow_path> cfg;
4710 setup_check_guest_cs_access_rights_remaining_reserved_bit_0_paths(cfg);
4716 vmcs_ut::test_check_guest_ss_access_rights_remaining_reserved_bit_0()
4718 std::vector<struct control_flow_path> cfg;
4719 setup_check_guest_ss_access_rights_remaining_reserved_bit_0_paths(cfg);
4725 vmcs_ut::test_check_guest_ds_access_rights_remaining_reserved_bit_0()
4727 std::vector<struct control_flow_path> cfg;
4728 setup_check_guest_ds_access_rights_remaining_reserved_bit_0_paths(cfg);
4734 vmcs_ut::test_check_guest_es_access_rights_remaining_reserved_bit_0()
4736 std::vector<struct control_flow_path> cfg;
4737 setup_check_guest_es_access_rights_remaining_reserved_bit_0_paths(cfg);
4743 vmcs_ut::test_check_guest_fs_access_rights_remaining_reserved_bit_0()
4745 std::vector<struct control_flow_path> cfg;
4746 setup_check_guest_fs_access_rights_remaining_reserved_bit_0_paths(cfg);
4752 vmcs_ut::test_check_guest_gs_access_rights_remaining_reserved_bit_0()
4754 std::vector<struct control_flow_path> cfg;
4755 setup_check_guest_gs_access_rights_remaining_reserved_bit_0_paths(cfg);
4761 vmcs_ut::test_check_guest_tr_type_must_be_11()
4763 std::vector<struct control_flow_path> cfg;
4764 setup_check_guest_tr_type_must_be_11_paths(cfg);
4770 vmcs_ut::test_check_guest_tr_must_be_a_system_descriptor()
4772 std::vector<struct control_flow_path> cfg;
4773 setup_check_guest_tr_must_be_a_system_descriptor_paths(cfg);
4779 vmcs_ut::test_check_guest_tr_must_be_present()
4781 std::vector<struct control_flow_path> cfg;
4782 setup_check_guest_tr_must_be_present_paths(cfg);
4788 vmcs_ut::test_check_guest_tr_access_rights_reserved_must_be_0()
4790 std::vector<struct control_flow_path> cfg;
4791 setup_check_guest_tr_access_rights_reserved_must_be_0_paths(cfg);
4797 vmcs_ut::test_check_guest_tr_granularity()
4799 std::vector<struct control_flow_path> cfg;
4800 setup_check_guest_tr_granularity_paths(cfg);
4806 vmcs_ut::test_check_guest_tr_must_be_usable()
4808 std::vector<struct control_flow_path> cfg;
4809 setup_check_guest_tr_must_be_usable_paths(cfg);
4815 vmcs_ut::test_check_guest_tr_access_rights_remaining_reserved_bit_0()
4817 std::vector<struct control_flow_path> cfg;
4818 setup_check_guest_tr_access_rights_remaining_reserved_bit_0_paths(cfg);
4824 vmcs_ut::test_check_guest_ldtr_type_must_be_2()
4826 std::vector<struct control_flow_path> cfg;
4827 setup_check_guest_ldtr_type_must_be_2_paths(cfg);
4833 vmcs_ut::test_check_guest_ldtr_must_be_a_system_descriptor()
4835 std::vector<struct control_flow_path> cfg;
4836 setup_check_guest_ldtr_must_be_a_system_descriptor_paths(cfg);
4842 vmcs_ut::test_check_guest_ldtr_must_be_present()
4844 std::vector<struct control_flow_path> cfg;
4845 setup_check_guest_ldtr_must_be_present_paths(cfg);
4851 vmcs_ut::test_check_guest_ldtr_access_rights_reserved_must_be_0()
4853 std::vector<struct control_flow_path> cfg;
4854 setup_check_guest_ldtr_access_rights_reserved_must_be_0_paths(cfg);
4860 vmcs_ut::test_check_guest_ldtr_granularity()
4862 std::vector<struct control_flow_path> cfg;
4863 setup_check_guest_ldtr_granularity_paths(cfg);
4869 vmcs_ut::test_check_guest_ldtr_access_rights_remaining_reserved_bit_0()
4871 std::vector<struct control_flow_path> cfg;
4872 setup_check_guest_ldtr_access_rights_remaining_reserved_bit_0_paths(cfg);
4878 vmcs_ut::test_check_guest_gdtr_base_must_be_canonical()
4880 std::vector<struct control_flow_path> cfg;
4881 setup_check_guest_gdtr_base_must_be_canonical_paths(cfg);
4887 vmcs_ut::test_check_guest_idtr_base_must_be_canonical()
4889 std::vector<struct control_flow_path> cfg;
4890 setup_check_guest_idtr_base_must_be_canonical_paths(cfg);
4896 vmcs_ut::test_check_guest_gdtr_limit_reserved_bits()
4898 std::vector<struct control_flow_path> cfg;
4899 setup_check_guest_gdtr_limit_reserved_bits_paths(cfg);
4905 vmcs_ut::test_check_guest_idtr_limit_reserved_bits()
4907 std::vector<struct control_flow_path> cfg;
4908 setup_check_guest_idtr_limit_reserved_bits_paths(cfg);
4914 vmcs_ut::test_check_guest_rip_upper_bits()
4916 std::vector<struct control_flow_path> cfg;
4917 setup_check_guest_rip_upper_bits_paths(cfg);
4923 vmcs_ut::test_check_guest_rip_valid_addr()
4925 std::vector<struct control_flow_path> cfg;
4926 setup_check_guest_rip_valid_addr_paths(cfg);
4932 vmcs_ut::test_check_guest_rflags_reserved_bits()
4934 std::vector<struct control_flow_path> cfg;
4935 setup_check_guest_rflags_reserved_bits_paths(cfg);
4941 vmcs_ut::test_check_guest_rflags_vm_bit()
4943 std::vector<struct control_flow_path> cfg;
4944 setup_check_guest_rflags_vm_bit_paths(cfg);
4950 vmcs_ut::test_check_guest_rflag_interrupt_enable()
4952 std::vector<struct control_flow_path> cfg;
4953 setup_check_guest_rflag_interrupt_enable_paths(cfg);
4959 vmcs_ut::test_check_guest_valid_activity_state()
4961 std::vector<struct control_flow_path> cfg;
4962 setup_check_guest_valid_activity_state_paths(cfg);
4968 vmcs_ut::test_check_guest_activity_state_not_hlt_when_dpl_not_0()
4970 std::vector<struct control_flow_path> cfg;
4971 setup_check_guest_activity_state_not_hlt_when_dpl_not_0_paths(cfg);
4977 vmcs_ut::test_check_guest_must_be_active_if_injecting_blocking_state()
4979 std::vector<struct control_flow_path> cfg;
4980 setup_check_guest_must_be_active_if_injecting_blocking_state_paths(cfg);
4986 vmcs_ut::test_check_guest_hlt_valid_interrupts()
4988 std::vector<struct control_flow_path> cfg;
4989 setup_check_guest_hlt_valid_interrupts_paths(cfg);
4995 vmcs_ut::test_check_guest_shutdown_valid_interrupts()
4997 std::vector<struct control_flow_path> cfg;
4998 setup_check_guest_shutdown_valid_interrupts_paths(cfg);
5004 vmcs_ut::test_check_guest_sipi_valid_interrupts()
5006 std::vector<struct control_flow_path> cfg;
5007 setup_check_guest_sipi_valid_interrupts_paths(cfg);
5013 vmcs_ut::test_check_guest_valid_activity_state_and_smm()
5015 std::vector<struct control_flow_path> cfg;
5016 setup_check_guest_valid_activity_state_and_smm_paths(cfg);
5022 vmcs_ut::test_check_guest_interruptibility_state_reserved()
5024 std::vector<struct control_flow_path> cfg;
5025 setup_check_guest_interruptibility_state_reserved_paths(cfg);
5031 vmcs_ut::test_check_guest_interruptibility_state_sti_mov_ss()
5033 std::vector<struct control_flow_path> cfg;
5034 setup_check_guest_interruptibility_state_sti_mov_ss_paths(cfg);
5040 vmcs_ut::test_check_guest_interruptibility_state_sti()
5042 std::vector<struct control_flow_path> cfg;
5043 setup_check_guest_interruptibility_state_sti_paths(cfg);
5049 vmcs_ut::test_check_guest_interruptibility_state_external_interrupt()
5051 std::vector<struct control_flow_path> cfg;
5052 setup_check_guest_interruptibility_state_external_interrupt_paths(cfg);
5058 vmcs_ut::test_check_guest_interruptibility_state_nmi()
5060 std::vector<struct control_flow_path> cfg;
5061 setup_check_guest_interruptibility_state_nmi_paths(cfg);
5067 vmcs_ut::test_check_guest_interruptibility_not_in_smm()
5069 std::vector<struct control_flow_path> cfg;
5070 setup_check_guest_interruptibility_not_in_smm_paths(cfg);
5076 vmcs_ut::test_check_guest_interruptibility_entry_to_smm()
5078 std::vector<struct control_flow_path> cfg;
5079 setup_check_guest_interruptibility_entry_to_smm_paths(cfg);
5085 vmcs_ut::test_check_guest_interruptibility_state_sti_and_nmi()
5087 std::vector<struct control_flow_path> cfg;
5088 setup_check_guest_interruptibility_state_sti_and_nmi_paths(cfg);
5094 vmcs_ut::test_check_guest_interruptibility_state_virtual_nmi()
5096 std::vector<struct control_flow_path> cfg;
5097 setup_check_guest_interruptibility_state_virtual_nmi_paths(cfg);
5103 vmcs_ut::test_check_guest_interruptibility_state_enclave_interrupt()
5105 std::vector<struct control_flow_path> cfg;
5106 setup_check_guest_interruptibility_state_enclave_interrupt_paths(cfg);
5112 vmcs_ut::test_check_guest_pending_debug_exceptions_reserved()
5114 std::vector<struct control_flow_path> cfg;
5115 setup_check_guest_pending_debug_exceptions_reserved_paths(cfg);
5121 vmcs_ut::test_check_guest_pending_debug_exceptions_dbg_ctl()
5123 std::vector<struct control_flow_path> cfg;
5124 setup_check_guest_pending_debug_exceptions_dbg_ctl_paths(cfg);
5130 vmcs_ut::test_check_guest_pending_debug_exceptions_rtm()
5132 std::vector<struct control_flow_path> cfg;
5133 setup_check_guest_pending_debug_exceptions_rtm_paths(cfg);
5139 vmcs_ut::test_check_guest_vmcs_link_pointer_bits_11_0()
5141 std::vector<struct control_flow_path> cfg;
5142 setup_check_guest_vmcs_link_pointer_bits_11_0_paths(cfg);
5148 vmcs_ut::test_check_guest_vmcs_link_pointer_valid_addr()
5150 std::vector<struct control_flow_path> cfg;
5151 setup_check_guest_vmcs_link_pointer_valid_addr_paths(cfg);
5157 vmcs_ut::test_check_guest_vmcs_link_pointer_first_word()
5159 std::vector<struct control_flow_path> cfg;
5160 setup_check_guest_vmcs_link_pointer_first_word_paths(cfg);
5166 vmcs_ut::test_check_guest_valid_pdpte_with_ept_disabled()
5168 std::vector<struct control_flow_path> cfg;
5169 setup_check_guest_valid_pdpte_with_ept_disabled_paths(cfg);
5175 vmcs_ut::test_check_guest_valid_pdpte_with_ept_enabled()
5177 std::vector<struct control_flow_path> cfg;
5178 setup_check_guest_valid_pdpte_with_ept_enabled_paths(cfg);
constexpr const auto mask
void guest_valid_activity_state()
void guest_fs_must_be_present_if_usable()
void guest_gs_granularity()
void guest_ss_access_rights_type()
void guest_es_is_not_a_system_descriptor()
void guest_ss_granularity()
void guest_vmcs_link_pointer_bits_11_0()
void guest_interruptibility_state_sti_mov_ss()
void entry_ctl_allow1(uint64_t mask)
void guest_rflags_vm_bit()
void proc_ctl2_allow0(uint64_t mask)
void guest_interruptibility_not_in_smm()
constexpr const auto addr
void guest_ds_base_upper_dword_0()
void guest_ds_base_is_shifted()
void guest_cs_access_rights_type()
void guest_fs_granularity()
void guest_cr4_for_unsupported_bits()
void guest_pending_debug_exceptions_rtm()
void guest_load_debug_controls_verify_reserved()
constexpr const auto shutdown
#define test_vmcs_check(cfg,...)
void guest_ia32_sysenter_esp_canonical_address()
void guest_ss_must_be_present_if_usable()
void guest_cr0_for_unsupported_bits()
void guest_cs_type_not_equal_3()
constexpr const auto double_fault
void pin_ctl_allow1(uint64_t mask)
void guest_ds_granularity()
std::map< uint64_t, uint64_t > g_vmcs_fields
void guest_es_access_rights_reserved_must_be_0()
void guest_tr_must_be_usable()
void guest_tr_access_rights_remaining_reserved_bit_0()
constexpr const auto mask
void guest_cs_access_rights_remaining_reserved_bit_0()
void guest_gdtr_limit_reserved_bits()
constexpr const auto external_interrupt
void guest_verify_load_ia32_efer()
constexpr const auto mask
void guest_fs_is_not_a_system_descriptor()
void guest_must_be_active_if_injecting_blocking_state()
bool g_phys_to_virt_return_nullptr
void guest_interruptibility_state_nmi()
void guest_gs_access_rights_remaining_reserved_bit_0()
void guest_ds_access_rights_reserved_must_be_0()
void guest_v8086_gs_access_rights()
void guest_cs_base_is_shifted()
void guest_cs_db_must_be_0_if_l_equals_1()
constexpr const auto read_execute_accessed
void guest_ss_base_upper_dword_0()
void guest_ss_base_is_shifted()
void guest_es_base_is_shifted()
constexpr const auto addr
void guest_gs_access_rights_type()
void entry_ctl_allow0(uint64_t mask)
void guest_es_must_be_present_if_usable()
void guest_shutdown_valid_interrupts()
void guest_descriptor_table_registers_all()
constexpr const auto unusable
constexpr const auto mask
void guest_interruptibility_state_enclave_interrupt()
void guest_v8086_fs_access_rights()
constexpr const auto other_event
void guest_activity_state_not_hlt_when_dpl_not_0()
void guest_gs_is_not_a_system_descriptor()
void guest_tr_must_be_a_system_descriptor()
void setup_check_guest_state_all_paths(std::vector< struct control_flow_path > &cfg)
void guest_gs_access_rights_reserved_must_be_0()
void guest_ss_is_not_a_system_descriptor()
constexpr const auto hardware_exception
void guest_ss_and_cs_rpl_are_the_same()
constexpr const auto mask
void guest_gs_base_is_canonical()
void guest_cs_access_rights_reserved_must_be_0()
constexpr const auto addr
std::map< msrs::field_type, msrs::value_type > g_msrs
void guest_es_access_rights_type()
void guest_cs_granularity()
void guest_pending_debug_exceptions_dbg_ctl()
void guest_tr_type_must_be_11()
void guest_verify_ia_32e_mode_enabled()
std::map< cpuid::field_type, cpuid::value_type > g_eax_cpuid
constexpr const auto software_exception
constexpr const auto mask
constexpr const auto mask
constexpr const auto debug_exception
void guest_tr_granularity()
void guest_load_debug_controls_verify_dr7()
void guest_rflag_interrupt_enable()
void guest_verify_load_ia32_bndcfgs()
struct cpuid_regs g_cpuid_regs
void guest_ldtr_ti_bit_equals_0()
void guest_fs_access_rights_remaining_reserved_bit_0()
void guest_ldtr_access_rights_remaining_reserved_bit_0()
void guest_interruptibility_entry_to_smm()
void guest_v8086_ds_access_rights()
void guest_cs_base_upper_dword_0()
void guest_interruptibility_state_sti()
void guest_pending_debug_exceptions_reserved()
constexpr const auto non_maskable_interrupt
void guest_ss_dpl_must_equal_zero()
void guest_v8086_ss_access_rights()
void guest_verify_load_ia32_pat()
constexpr const auto mask
std::shared_ptr< std::exception > exception
void guest_gs_base_is_shifted()
void guest_fs_access_rights_reserved_must_be_0()
constexpr const auto mask
void guest_valid_pdpte_with_ept_disabled()
constexpr const auto mask
void pin_ctl_allow0(uint64_t mask)
void guest_sipi_valid_interrupts()
void guest_ldtr_base_is_canonical()
constexpr const auto mask
void guest_fs_access_rights_type()
void guest_verify_ia_32e_mode_disabled()
constexpr const auto machine_check
void guest_ss_access_rights_remaining_reserved_bit_0()
void guest_tr_ti_bit_equals_0()
void guest_ss_dpl_must_equal_rpl()
void guest_rip_and_rflags_all()
void guest_interruptibility_state_reserved()
void guest_rip_upper_bits()
void guest_verify_load_ia32_perf_global_ctrl()
void guest_rflags_reserved_bits()
void guest_vmcs_link_pointer_valid_addr()
void proc_ctl2_allow1(uint64_t mask)
constexpr const auto mask
void guest_ldtr_must_be_present()
void guest_idtr_limit_reserved_bits()
void guest_tr_access_rights_reserved_must_be_0()
constexpr const auto addr
void guest_cs_dpl_adheres_to_ss_dpl()
void guest_control_registers_debug_registers_and_msrs_all()
void guest_idtr_base_must_be_canonical()
void proc_ctl_allow1(uint64_t mask)
constexpr const auto mask
constexpr const auto mask
constexpr const auto addr
constexpr const auto addr
void guest_es_access_rights_remaining_reserved_bit_0()
void guest_non_register_state_all()
void guest_interruptibility_state_sti_and_nmi()
uint64_t g_vmcs_link_addr
void guest_interruptibility_state_virtual_nmi()
void guest_cr0_verify_paging_enabled()
void guest_ds_must_be_present_if_usable()
void guest_tr_must_be_present()
constexpr const auto divide_error
void guest_fs_base_is_canonical()
void proc_ctl_allow0(uint64_t mask)
void guest_cs_must_be_present()
void guest_ds_access_rights_type()
void guest_vmcs_link_pointer_first_word()
constexpr const auto mask
void guest_ldtr_must_be_a_system_descriptor()
void guest_cs_is_not_a_system_descriptor()
uint32_t g_vmcs_link_mem[1]
void guest_tr_base_is_canonical()
void guest_ds_is_not_a_system_descriptor()
void guest_gs_must_be_present_if_usable()
void guest_interruptibility_state_external_interrupt()
constexpr const auto wait_for_sipi
void guest_cr3_for_unsupported_bits()
constexpr const auto addr
void guest_ds_access_rights_remaining_reserved_bit_0()
void guest_ss_access_rights_reserved_must_be_0()
void guest_rip_valid_addr()
constexpr const auto tss_busy
void guest_v8086_es_access_rights()
constexpr const auto read_execute_conforming
constexpr const auto mask
constexpr const auto active
void guest_gdtr_base_must_be_canonical()
void guest_v8086_cs_access_rights()
void guest_ldtr_type_must_be_2()
void guest_segment_registers_all()
void guest_valid_activity_state_and_smm()
void guest_ldtr_granularity()
void guest_ia32_sysenter_eip_canonical_address()
void guest_valid_pdpte_with_ept_enabled()
void guest_es_base_upper_dword_0()
void guest_hlt_valid_interrupts()
void guest_fs_base_is_shifted()
std::function< void()> setup
void guest_ldtr_access_rights_reserved_must_be_0()
void guest_es_granularity()