diff --git a/meson.build b/meson.build index 38deb9363c..d0329966f1 100644 --- a/meson.build +++ b/meson.build @@ -552,6 +552,22 @@ if get_option('cfi') add_global_link_arguments(cfi_flags, native: false, language: all_languages) endif +# Check further flags that make QEMU more robust against malicious parties + +hardening_flags = [ + # Zero out registers used during a function call + # upon its return. This makes it harder to assemble + # ROP gadgets into something usable + '-fzero-call-used-regs=used-gpr', + + # Initialize all stack variables to zero. This makes + # it harder to take advantage of uninitialized stack + # data to drive exploits + '-ftrivial-auto-var-init=zero', +] + +qemu_common_flags += cc.get_supported_arguments(hardening_flags) + add_global_arguments(qemu_common_flags, native: false, language: all_languages) add_global_link_arguments(qemu_ldflags, native: false, language: all_languages) diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index fd40136fa9..4293f3b133 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -4,11 +4,12 @@ slow_qtests = { 'device-introspect-test' : 720, 'migration-test' : 480, 'npcm7xx_pwm-test': 300, + 'npcm7xx_watchdog_timer-test': 120, 'qom-test' : 900, 'test-hmp' : 240, 'pxe-test': 600, 'prom-env-test': 360, - 'boot-serial-test': 180, + 'boot-serial-test': 240, 'qos-test': 120, } diff --git a/tests/qtest/npcm7xx_watchdog_timer-test.c b/tests/qtest/npcm7xx_watchdog_timer-test.c index 4773a673b2..981b853c99 100644 --- a/tests/qtest/npcm7xx_watchdog_timer-test.c +++ b/tests/qtest/npcm7xx_watchdog_timer-test.c @@ -172,9 +172,10 @@ static void test_reset_action(gconstpointer watchdog) static void test_prescaler(gconstpointer watchdog) { const Watchdog *wd = watchdog; + int inc = g_test_quick() ? 3 : 1; - for (int wtclk = 0; wtclk < 4; ++wtclk) { - for (int wtis = 0; wtis < 4; ++wtis) { + for (int wtclk = 0; wtclk < 4; wtclk += inc) { + for (int wtis = 0; wtis < 4; wtis += inc) { QTestState *qts = qtest_init("-machine quanta-gsj"); qtest_irq_intercept_in(qts, "/machine/soc/a9mpcore/gic");