]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
For fuzzcheck-asan, dynamically determine the list of -fsanitize flags to use based...
authorstephan <stephan@noemail.net>
Sat, 15 Mar 2025 13:36:01 +0000 (13:36 +0000)
committerstephan <stephan@noemail.net>
Sat, 15 Mar 2025 13:36:01 +0000 (13:36 +0000)
FossilOrigin-Name: b70f9cc81516e57e73960bed4b4d2abdcf3dab0ad4a400ca1aed49365c25231e

Makefile.in
auto.def
autosetup/proj.tcl
main.mk
manifest
manifest.uuid

index 2abf714e5fa66769857b1c99f2b7224b314fc0ca..45e2cb086d9b31c0b0ce89f6aa5be0359aced901 100644 (file)
@@ -135,6 +135,9 @@ ENABLE_LIB_STATIC = @ENABLE_LIB_STATIC@
 HAVE_WASI_SDK = @HAVE_WASI_SDK@
 libsqlite3.DLL.install-rules = @SQLITE_DLL_INSTALL_RULES@
 
+# -fsanitize flags for the fuzzcheck-asap app
+LDFLAGS.fuzzcheck.fsanitize = @LDFLAGS_FUZZCHECK_FSANITIZE@
+
 T.cc.sqlite = $(T.cc) @TARGET_DEBUG@
 
 #
index c4fb2c5ab5bc11a7394eadcbb6ab7a2eced8982d..905237d65c32320f4c5b448c3508a06613adbd10 100644 (file)
--- a/auto.def
+++ b/auto.def
@@ -46,6 +46,8 @@ sqlite-configure canonical {
 
   define LINK_TOOLS_DYNAMICALLY [proj-opt-was-provided dynlink-tools]
 
+  define LDFLAGS_FUZZCHECK_FSANITIZE [proj-check-fsanitize {address bounds-strict}]
+
   sqlite-handle-tcl
   sqlite-handle-emsdk
 
index adf31a1ad6660ace2e8890f4b770a362cbd5cb55..dc5f9a092bd4f91f3be721e6ed9f4e8dfa9c37f9 100644 (file)
@@ -1031,6 +1031,29 @@ proc proj-check-soname {{libname "libfoo.so.0"}} {
   }
 }
 
+########################################################################
+# @proj-check-fsanitize ?list-of-opts?
+#
+# Checks whether CC supports -fsanitize=X, where X is each entry of
+# the given list of flags. If any of those flags are supported, it
+# returns the string "-fsanitize=X..." where X... is a comma-separated
+# list of all flags which passed. If none of the given options are
+# supported then it returns an empty string.
+proc proj-check-fsanitize {{opts {address bounds-strict}}} {
+  set sup {}
+  foreach opt $opts {
+    cc-with {-link 1} {
+      if {[cc-check-flags "-fsanitize=$opt"]} {
+        lappend sup $opt
+      }
+    }
+  }
+  if {[llength $sup] > 0} {
+    return "-fsanitize=[join $sup ,]"
+  }
+  return ""
+}
+
 ########################################################################
 # Internal helper for proj-dump-defs-json. Expects to be passed a
 # [define] name and the variadic $args which are passed to
diff --git a/main.mk b/main.mk
index 2803e623a2cd2da3f3a272d0397416f7e4349e30..bf74817d9a0b2c455d4077d0192490bba77ad1e8 100644 (file)
--- a/main.mk
+++ b/main.mk
@@ -2168,8 +2168,11 @@ fuzzcheck$(T.exe):       $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP)
 fuzzy: fuzzcheck$(T.exe)
 xbin: fuzzcheck$(T.exe)
 
+# -fsanitize=... flags for fuzzcheck-asan.
+LDFLAGS.fuzzcheck.fsanitize ?= -fsanitize=address
+
 fuzzcheck-asan$(T.exe):        $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP)
-       $(T.link) -o $@ -fsanitize=address $(FUZZCHECK_OPT) $(FUZZCHECK_SRC) \
+       $(T.link) -o $@ $(LDFLAGS.fuzzcheck.fsanitize) $(FUZZCHECK_OPT) $(FUZZCHECK_SRC) \
                sqlite3.c $(LDFLAGS.libsqlite3)
 fuzzy: fuzzcheck-asan$(T.exe)
 xbin: fuzzcheck-asan$(T.exe)
index edc538e5b3f3a440fb7db17cb4e5d92033e79d16..5162836083fe9f790862bcd7855ba810f99e20ec 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,9 +1,9 @@
-C Omit\sthe\s-fsanitize=bounds-strict\sfor\snow,\sas\sthat\sis\sstill\snot\swidely\nimplemented.\s\sIn\sparticular,\sit\sdoes\snot\swork\son\sMacs.
-D 2025-03-15T13:11:24.810
+C For\sfuzzcheck-asan,\sdynamically\sdetermine\sthe\slist\sof\s-fsanitize\sflags\sto\suse\sbased\son\sconfigure-time\sfeature\stests.
+D 2025-03-15T13:36:01.334
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
-F Makefile.in 88f74a1b9fcd903fe3414fe9f8484f8491dc403615dbf1c28c6f415f5220b8b2
+F Makefile.in 39c3f70ffacbe3e0e0d7b13e73d2c7bd5e402d326413d91f75c8ddf466c6ae1e
 F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0
 F Makefile.msc ef04498c7e227a0f459b105bb4952f26cc985d1d6340a367e62d5a79c4689dfb
 F README.md a953c0cffd6e4f2501a306c00ee2b6e1e6630c25031e094629307fe99dd003d1
@@ -14,7 +14,7 @@ F art/sqlite370.eps aa97a671332b432a54e1d74ff5e8775be34200c2
 F art/sqlite370.ico af56c1d00fee7cd4753e8631ed60703ed0fc6e90
 F art/sqlite370.jpg d512473dae7e378a67e28ff96a34da7cb331def2
 F art/sqlite370.svg 40b7e2fe8aac3add5d56dd86ab8d427a4eca5bcb3fe4f8946cb3794e1821d531
-F auto.def 0612f87776956cff7ba1585ad3ca7ab7d2e88735da0e9b4321dbacb05479cb94
+F auto.def c26f6784f6320862e858528636746e4995276f81ba3c1f915f7f682ec2404de9
 F autoconf/Makefile.fallback 22fe523eb36dfce31e0f6349f782eb084e86a5620b2b0b4f84a2d6133f53f5ac
 F autoconf/Makefile.in 6c98c82f52aa27a5c586080cf7c61c811174c2b6d8b8de33fd657d78d541dd7d
 F autoconf/Makefile.msc 5bc67d3912444c40c6f96d003e5c90663e51abb83d204a520110b1b2038dcd8b
@@ -49,7 +49,7 @@ F autosetup/cc-shared.tcl 4f024e94a47f427ba61de1739f6381ef0080210f9fae89112d5c1d
 F autosetup/cc.tcl c0fcc50ca91deff8741e449ddad05bcd08268bc31177e613a6343bbd1fd3e45f
 F autosetup/jimsh0.c a57c16e65dcffc9c76e496757cb3f7fb47e01ecbd1631a0a5e01751fc856f049
 F autosetup/pkg-config.tcl 4e635bf39022ff65e0d5434339dd41503ea48fc53822c9c5bde88b02d3d952ba
-F autosetup/proj.tcl e69b91f814ea510057ce7663845de703c3746d71cff9a0db6b2563ee3e7fd25e
+F autosetup/proj.tcl 408ba69a0b13df8bbedaa565897c3304aa3a614fdd1dc11cc1151da1ea0fde8c
 F autosetup/sqlite-config.tcl 831985320d98002fcd5ea064cae8a49f8afcd9685d83178ef1ebb79189b5045c
 F autosetup/system.tcl 51d4be76cd9a9074704b584e5c9cbba616202c8468cf9ba8a4f8294a7ab1dba9
 F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
@@ -705,7 +705,7 @@ F ext/wasm/tests/opfs/sahpool/sahpool-pausing.js f264925cfc82155de38cecb3d204c36
 F ext/wasm/tests/opfs/sahpool/sahpool-worker.js bd25a43fc2ab2d1bafd8f2854ad3943ef673f7c3be03e95ecf1612ff6e8e2a61
 F ext/wasm/wasmfs.make 68999f5bd8c489239592d59a420f8c627c99169bbd6fa16a404751f757b9f702
 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
-F main.mk f2f6af216cf14ec010d317e2f75ed5dc2134a2f9d6be7df3a96ee11149598ca1
+F main.mk e79f9c0ce4d2dd85e4d07ece408525ecabf8cb8ea0cc080fe0ad21416b727b04
 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
@@ -2213,8 +2213,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 6ea6a6b211fed1a14d7bec1ab1790dec09e2a00423860498a60b760c4a4561fa
-R 230925c95f57711ebe48c1e2c164b78b
-U drh
-Z 2c119b268b3dca0dc5ff030ca58b304e
+P 3e1c2ac7817e73ea736a39bb0c0ec8212ceedbc89b265b4caf1b53871d27d7c0
+R ea1d897400ea4fcd1d782c3f3f3eb197
+U stephan
+Z 3c46d5c6b2fecf10bb4cea80942c2207
 # Remove this line to create a well-formed Fossil manifest.
index 6a992e7ba781af6e7ee952289dde41826d6ea82a..5d565accb6f162052fe07895752e053c019710e6 100644 (file)
@@ -1 +1 @@
-3e1c2ac7817e73ea736a39bb0c0ec8212ceedbc89b265b4caf1b53871d27d7c0
+b70f9cc81516e57e73960bed4b4d2abdcf3dab0ad4a400ca1aed49365c25231e