Fix oss-fuzz coverage build failure of dav1d

The cc.symbols_have_underscore_prefix() test in dav1d/meson.build
returns the incorrect value (true) if -fprofile-instr-generate is
specified in the CFLAGS environment variable. This is apparently a bug
in Meson's symbols_have_underscore_prefix() function. See
https://github.com/mesonbuild/meson/issues/5482. Work around this bug by
adding a special case for Linux in dav1d/meson.build.

Part 1 of the fix for https://crbug.com/oss-fuzz/38512. Part 2 of the
fix is to change oss-fuzz/projects/libavif/build.sh to run
"bash dav1d_oss_fuzz.sh" instead of "bash dav1d.cmd".
diff --git a/ext/dav1d.cmd b/ext/dav1d.cmd
index 45f6247..d8b9a17 100755
--- a/ext/dav1d.cmd
+++ b/ext/dav1d.cmd
@@ -8,6 +8,7 @@
 : # If you're running this on Windows, be sure you've already run this (from your VC2019 install dir):
 : #     "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
 
+# When updating the dav1d version, make the same change to dav1d_oss_fuzz.sh.
 git clone -b 0.9.2 --depth 1 https://code.videolan.org/videolan/dav1d.git
 
 cd dav1d
diff --git a/ext/dav1d_oss_fuzz.patch b/ext/dav1d_oss_fuzz.patch
new file mode 100644
index 0000000..29cf343
--- /dev/null
+++ b/ext/dav1d_oss_fuzz.patch
@@ -0,0 +1,19 @@
+diff --git a/meson.build b/meson.build
+index a9cfa04..085653f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -382,7 +382,13 @@ endif
+ 
+ cdata.set10('ARCH_PPC64LE', host_machine.cpu() == 'ppc64le')
+ 
+-if cc.symbols_have_underscore_prefix()
++# Meson's symbols_have_underscore_prefix() function returns true incorrectly
++# if -fprofile-instr-generate is specified in CFLAGS. This is similar to the
++# problem symbols_have_underscore_prefix() has with -flto mentioned in
++# https://github.com/mesonbuild/meson/issues/5482. Since oss-fuzz uses
++# -fprofile-instr-generate in CFLAGS only on Linux, add a special case for
++# Linux to work around this Meson bug.
++if host_machine.system() != 'linux' and cc.symbols_have_underscore_prefix()
+     cdata.set10('PREFIX', true)
+     cdata_asm.set10('PREFIX', true)
+ endif
diff --git a/ext/dav1d_oss_fuzz.sh b/ext/dav1d_oss_fuzz.sh
new file mode 100755
index 0000000..ee96e52
--- /dev/null
+++ b/ext/dav1d_oss_fuzz.sh
@@ -0,0 +1,23 @@
+: # If you want to use a local build of dav1d, you must clone the dav1d repo in this directory first, then enable CMake's AVIF_CODEC_DAV1D and AVIF_LOCAL_DAV1D options.
+: # The git SHA below is known to work, and will occasionally be updated. Feel free to use a more recent commit.
+
+: # The odd choice of comment style in this file is to try to share this script between *nix and win32.
+
+: # meson and ninja must be in your PATH.
+
+: # If you're running this on Windows, be sure you've already run this (from your VC2019 install dir):
+: #     "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
+
+git clone -b 0.9.2 --depth 1 https://code.videolan.org/videolan/dav1d.git
+
+cd dav1d
+patch -p1 < ../dav1d_oss_fuzz.patch
+mkdir build
+cd build
+
+: # macOS might require: -Dc_args=-fno-stack-check
+: # Build with asan: -Db_sanitize=address
+: # Build with ubsan: -Db_sanitize=undefined
+meson --default-library=static --buildtype release ..
+ninja
+cd ../..