-
Notifications
You must be signed in to change notification settings - Fork 189
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 mesonbuild/meson#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".
- Loading branch information
1 parent
1dea33e
commit ef1025f
Showing
3 changed files
with
43 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 ../.. |