diff options
author | Jean-Marc Valin <jmvalin@amazon.com> | 2022-06-30 16:25:03 -0400 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@amazon.com> | 2022-06-30 16:25:03 -0400 |
commit | e0ca05b1ec5ef4abbfed5f70623ed3e5ea77dd6b (patch) | |
tree | bed3e48aa9b0a734ff9a602f8f186587b6967861 | |
parent | 6577534a80c833bd310276f1e2bd3254271bb86d (diff) | |
download | opus-e0ca05b1ec5ef4abbfed5f70623ed3e5ea77dd6b.tar.gz |
Adds fuzzing to CPU detection
Makes ti possible to randomize (with --enable-fuzzing) the CPU flags
so we can better test all the intrinsics implementations.
-rw-r--r-- | celt/arm/armcpu.c | 9 | ||||
-rw-r--r-- | celt/x86/x86cpu.c | 11 |
2 files changed, 18 insertions, 2 deletions
diff --git a/celt/arm/armcpu.c b/celt/arm/armcpu.c index cce3ae3a..c7d16e6d 100644 --- a/celt/arm/armcpu.c +++ b/celt/arm/armcpu.c @@ -156,7 +156,7 @@ opus_uint32 opus_cpu_capabilities(void) "your platform. Reconfigure with --disable-rtcd (or send patches)." #endif -int opus_select_arch(void) +static int opus_select_arch_impl(void) { opus_uint32 flags = opus_cpu_capabilities(); int arch = 0; @@ -184,4 +184,11 @@ int opus_select_arch(void) return arch; } +int opus_select_arch(void) { + int arch = opus_select_arch_impl(); +#ifdef FUZZING + arch = rand()%(arch+1); +#endif + return arch; +} #endif diff --git a/celt/x86/x86cpu.c b/celt/x86/x86cpu.c index d95a9b94..7cfc8db5 100644 --- a/celt/x86/x86cpu.c +++ b/celt/x86/x86cpu.c @@ -128,7 +128,7 @@ static void opus_cpu_feature_check(CPU_Feature *cpu_feature) } } -int opus_select_arch(void) +static int opus_select_arch_impl(void) { CPU_Feature cpu_feature; int arch; @@ -163,4 +163,13 @@ int opus_select_arch(void) return arch; } +int opus_select_arch(void) { + int arch = opus_select_arch_impl(); +#ifdef FUZZING + /* Randomly downgrade the architecture. */ + arch = rand()%(arch+1); +#endif + return arch; +} + #endif |