|
14 | 14 | // <bcoles@gmail.com> |
15 | 15 |
|
16 | 16 | #include "../src/environment.c" |
| 17 | +/* The orchestrator is compiled into this test, so every static it does not |
| 18 | + * happen to call is unused here. Suppressed at the include rather than by |
| 19 | + * tagging the definitions: they are production code, and the property is a |
| 20 | + * fact about this translation unit, not about them. */ |
| 21 | +#pragma GCC diagnostic push |
| 22 | +#pragma GCC diagnostic ignored "-Wunused-function" |
| 23 | +#pragma GCC diagnostic ignored "-Wunused-variable" |
17 | 24 | #include "../src/orchestrator.c" |
| 25 | +#pragma GCC diagnostic pop |
18 | 26 | /* The engine's value model, after orchestrator.c so its feature-test |
19 | 27 | * macros are established first. engine_sync_authoritative projects |
20 | 28 | * resolved estimates into `layout`, and reading an estimate means knowing |
|
23 | 31 | #include "../src/estimate.c" |
24 | 32 | #include "../src/quantities.c" |
25 | 33 | #include "../src/region_info.c" |
| 34 | +#pragma GCC diagnostic push |
| 35 | +#pragma GCC diagnostic ignored "-Wunused-function" |
26 | 36 | #include "../src/render.c" |
| 37 | +#pragma GCC diagnostic pop |
27 | 38 | #include "../src/render/hardening.c" |
28 | 39 | #include "../src/render/json.c" |
29 | 40 | #include "../src/render/markdown.c" |
@@ -371,7 +382,6 @@ static void test_render_json_with_rich_content(void) { |
371 | 382 | * suggestion's enforcement surface and the hardware side-channel section. Raw |
372 | 383 | * component stdout stays behind --verbose. */ |
373 | 384 | static void test_render_json_posture_always_present(void) { |
374 | | - extern int hardening_mode, verbose; |
375 | 385 | struct summary s; |
376 | 386 | set_rich_render_state(&s); |
377 | 387 | hardening_mode = 0; /* NOT in hardening mode */ |
@@ -411,7 +421,6 @@ static void test_render_likely_window(void) { |
411 | 421 | reset_comp_logs(); |
412 | 422 | num_scalar_facts = 0; |
413 | 423 | memset(&s, 0, sizeof(s)); |
414 | | - extern int verbose; |
415 | 424 |
|
416 | 425 | /* Guaranteed window is a range (no concrete vtext/ptext) with a tighter |
417 | 426 | * speculative likely window. The likely sub-line/JSON read only s->kaslr, |
@@ -474,7 +483,6 @@ static void test_render_vtext_speculative(void) { |
474 | 483 | reset_comp_logs(); |
475 | 484 | num_scalar_facts = 0; |
476 | 485 | memset(&s, 0, sizeof(s)); |
477 | | - extern int verbose; |
478 | 486 | unsigned long sv_lo = layout.virt_kaslr_text_min, |
479 | 487 | sv_hi = layout.virt_kaslr_text_max, |
480 | 488 | sv_al = layout.virt_kaslr_align; |
@@ -671,7 +679,6 @@ static void test_render_memory_likely_window(void) { |
671 | 679 | reset_comp_logs(); |
672 | 680 | num_scalar_facts = 0; |
673 | 681 | memset(&s, 0, sizeof(s)); |
674 | | - extern int verbose; |
675 | 682 |
|
676 | 683 | s.kaslr.vslots = 60; /* keep render_kaslr_text from early-returning */ |
677 | 684 | s.kaslr.vbits = 6; |
@@ -1080,7 +1087,6 @@ static void test_render_memory_kaslr_uses_stored_slots(void) { |
1080 | 1087 | reset_comp_logs(); |
1081 | 1088 | num_scalar_facts = 0; |
1082 | 1089 | memset(&s, 0, sizeof(s)); |
1083 | | - extern int verbose; |
1084 | 1090 |
|
1085 | 1091 | s.kaslr.vslots = 60; /* keep render_kaslr_text from early-returning */ |
1086 | 1092 | s.kaslr.vbits = 6; |
@@ -1170,7 +1176,6 @@ static void check_static_base_case(int posture_disabled, unsigned long lo, |
1170 | 1176 | const char *want_verdict, int json_mode, |
1171 | 1177 | int md_mode, int want_verbose) { |
1172 | 1178 | struct summary s; |
1173 | | - extern int verbose; |
1174 | 1179 | reset_results(); |
1175 | 1180 | reset_comp_logs(); |
1176 | 1181 | num_scalar_facts = 0; |
@@ -1304,7 +1309,6 @@ static void test_render_static_base_prefers_engine_window(void) { |
1304 | 1309 | * real addresses on the arch under test and cannot overflow a 32-bit word. */ |
1305 | 1310 | static void test_render_map_directmap_extent_derived(void) { |
1306 | 1311 | struct summary s; |
1307 | | - extern int verbose; |
1308 | 1312 | unsigned long sv_po = layout.virt_page_offset; |
1309 | 1313 | unsigned long sv_min = layout.virt_page_offset_min; |
1310 | 1314 | unsigned long sv_max = layout.virt_page_offset_max; |
@@ -1407,7 +1411,6 @@ static void test_render_map_directmap_base_from_engine(void) { |
1407 | 1411 | reset_comp_logs(); |
1408 | 1412 | num_scalar_facts = 0; |
1409 | 1413 | memset(&s, 0, sizeof(s)); |
1410 | | - extern int verbose; |
1411 | 1414 |
|
1412 | 1415 | unsigned long sv_po = layout.virt_page_offset; |
1413 | 1416 | unsigned long sv_min = layout.virt_page_offset_min; |
@@ -1496,7 +1499,6 @@ static void test_render_map_overlapped_band_states_its_ceiling(void) { |
1496 | 1499 | reset_comp_logs(); |
1497 | 1500 | num_scalar_facts = 0; |
1498 | 1501 | memset(&s, 0, sizeof(s)); |
1499 | | - extern int verbose; |
1500 | 1502 |
|
1501 | 1503 | unsigned long sv_ms = layout.modules_start; |
1502 | 1504 | unsigned long sv_me = layout.modules_end; |
@@ -1573,8 +1575,6 @@ static void test_render_footer_hint_is_last(void) { |
1573 | 1575 | reset_comp_logs(); |
1574 | 1576 | num_scalar_facts = 0; |
1575 | 1577 | memset(&s, 0, sizeof(s)); |
1576 | | - extern int verbose; |
1577 | | - extern int map_mode; |
1578 | 1578 | s.kaslr.vslots = 60; |
1579 | 1579 | s.kaslr.vbits = 6; |
1580 | 1580 | verbose = 0; |
@@ -1633,8 +1633,6 @@ static void test_render_phys_map_descends_strictly(void) { |
1633 | 1633 | reset_comp_logs(); |
1634 | 1634 | num_scalar_facts = 0; |
1635 | 1635 | memset(&s, 0, sizeof(s)); |
1636 | | - extern int verbose; |
1637 | | - extern int map_mode; |
1638 | 1636 | s.kaslr.vslots = 60; |
1639 | 1637 | s.kaslr.vbits = 6; |
1640 | 1638 | verbose = 0; |
@@ -1691,8 +1689,6 @@ static void test_render_map_flag(void) { |
1691 | 1689 | reset_comp_logs(); |
1692 | 1690 | num_scalar_facts = 0; |
1693 | 1691 | memset(&s, 0, sizeof(s)); |
1694 | | - extern int verbose; |
1695 | | - extern int map_mode; |
1696 | 1692 | s.kaslr.vslots = 60; |
1697 | 1693 | s.kaslr.vbits = 6; |
1698 | 1694 |
|
@@ -1737,7 +1733,6 @@ static void test_render_map_band_contains_its_leaks(void) { |
1737 | 1733 | reset_comp_logs(); |
1738 | 1734 | num_scalar_facts = 0; |
1739 | 1735 | memset(&s, 0, sizeof(s)); |
1740 | | - extern int verbose; |
1741 | 1736 | unsigned long sv_max = layout.virt_image_base_max; |
1742 | 1737 |
|
1743 | 1738 | /* Narrow the base window so there is room between its ceiling and the next |
@@ -1835,7 +1830,6 @@ static void test_render_map_ceiling_covers_high_mmio(void) { |
1835 | 1830 | reset_comp_logs(); |
1836 | 1831 | num_scalar_facts = 0; |
1837 | 1832 | memset(&s, 0, sizeof(s)); |
1838 | | - extern int verbose; |
1839 | 1833 |
|
1840 | 1834 | /* Small, so both fit a 32-bit unsigned long; the property under test is |
1841 | 1835 | * only that the MMIO point sits above the leaked DRAM top. */ |
@@ -1907,7 +1901,6 @@ static void test_render_map_phys_buckets_partition(void) { |
1907 | 1901 | reset_comp_logs(); |
1908 | 1902 | num_scalar_facts = 0; |
1909 | 1903 | memset(&s, 0, sizeof(s)); |
1910 | | - extern int verbose; |
1911 | 1904 |
|
1912 | 1905 | unsigned long sv_min = layout.phys_kaslr_text_min; |
1913 | 1906 | unsigned long sv_max = layout.phys_kaslr_text_max; |
@@ -1985,7 +1978,6 @@ static void test_render_map_directmap_contains_text(void) { |
1985 | 1978 | reset_comp_logs(); |
1986 | 1979 | num_scalar_facts = 0; |
1987 | 1980 | memset(&s, 0, sizeof(s)); |
1988 | | - extern int verbose; |
1989 | 1981 |
|
1990 | 1982 | unsigned long sv_po = layout.virt_page_offset; |
1991 | 1983 | /* The coupled default: the direct map begins exactly where the kernel image |
@@ -2046,7 +2038,6 @@ static void test_render_map_draws_topmost_band_ceiling(void) { |
2046 | 2038 | reset_comp_logs(); |
2047 | 2039 | num_scalar_facts = 0; |
2048 | 2040 | memset(&s, 0, sizeof(s)); |
2049 | | - extern int verbose; |
2050 | 2041 |
|
2051 | 2042 | unsigned long sv_po = layout.virt_page_offset; |
2052 | 2043 | unsigned long sv_tmin = layout.virt_image_base_min; |
@@ -2160,7 +2151,6 @@ static void test_render_phys_ceiling_covers_bucket_footers(void) { |
2160 | 2151 | reset_comp_logs(); |
2161 | 2152 | num_scalar_facts = 0; |
2162 | 2153 | memset(&s, 0, sizeof(s)); |
2163 | | - extern int verbose; |
2164 | 2154 |
|
2165 | 2155 | unsigned long sv_min = layout.phys_kaslr_text_min; |
2166 | 2156 | unsigned long sv_max = layout.phys_kaslr_text_max; |
@@ -2205,7 +2195,6 @@ static void test_render_disabled_base_not_labeled_likely(void) { |
2205 | 2195 | reset_comp_logs(); |
2206 | 2196 | num_scalar_facts = 0; |
2207 | 2197 | memset(&s, 0, sizeof(s)); |
2208 | | - extern int verbose; |
2209 | 2198 |
|
2210 | 2199 | s.kaslr.disabled = 1; |
2211 | 2200 | unsigned long vt = (unsigned long)KERNEL_VIRT_TEXT_DEFAULT; |
@@ -2275,7 +2264,6 @@ static void test_render_leak_discloses_interior(void) { |
2275 | 2264 | static void test_render_markdown_with_rich_content(void) { |
2276 | 2265 | struct summary s; |
2277 | 2266 | set_rich_render_state(&s); |
2278 | | - extern int verbose; |
2279 | 2267 | verbose = 1; /* per-record Evidence table (with the Pos column) */ |
2280 | 2268 | set_render_mode(0, 0, 1); |
2281 | 2269 | capture_stdout(wrap_render_summary, &s); |
@@ -2463,7 +2451,6 @@ static void test_render_oneline_entropy_and_failed(void) { |
2463 | 2451 | * compile-time-default remark must NOT appear, since the image did move. */ |
2464 | 2452 | static void test_render_randomization_failed_posture(void) { |
2465 | 2453 | struct summary s; |
2466 | | - extern int verbose; |
2467 | 2454 | /* The arch's own resolved window is left exactly as it is: this test is |
2468 | 2455 | about the posture line, not about any particular bounds, and narrowing |
2469 | 2456 | the window here would push the shared fixture's text result out of |
|
0 commit comments