git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 2/2] fuzz: link fuzz programs with `make all` on Linux

From
Jeff King <peff@peff.net>
Date
Apr 10, 2024, 21:11 UTC
Message-ID
<20240410211100.GA2276041@coredump.intra.peff.net>
In-Reply-To
<ZhW6BM9V-Rto_CW4@google.com>
On Tue, Apr 09, 2024 at 02:58:28PM -0700, Josh Steadmon wrote:
Show 16 quoted lines
> > It would have been easier on the eyes if we had the fuzz things
> > together, perhaps like this simplified version?  We build FUZZ_OBJS
> > either way, and when the LINK_FUZZ_PROGRAMS is requested, we follow
> > the fuzz-all recipe, too.
> 
> We need the LINK_FUZZ_PROGRAMS conditional to happen after we import
> config.mak.uname (line 1434 in my V1). We also need to define FUZZ_OBJS
> prior to adding it to OBJECTS (line 2698 in V1). I can move all of the
> fuzz-definition within that range, keeping everything in one place at
> the cost of a larger diff. I'll do that for V2, but if you prefer
> otherwise please let me know.
> 
> Although I'm not 100% sure that we even need to add FUZZ_OBJS to
> OBJECTS, so let me check that tomorrow. If not, then I can move
> everything to the bottom of the Makefile where we also define fuzz-all
> and the build rules for FUZZ_PROGRAMS.

The conditional has to be read handled while reading the Makefile, but as a "simple" variable, OBJECTS isn't expanded until the whole Makefile has been read. So for example this out-of-order definition works:

diff --git a/Makefile b/Makefile
index 533eaae612..5dbf1935a1 100644
--- a/Makefile
+++ b/Makefile
@@ -755,6 +755,7 @@ ETAGS_TARGET = TAGS
 # If you add a new fuzzer, please also make sure to run it in
 # ci/run-build-and-minimal-fuzzers.sh so that we make sure it still links and
 # runs in the future.
+OBJECTS += $(FUZZ_OBJS)
 FUZZ_OBJS += oss-fuzz/dummy-cmd-main.o
 FUZZ_OBJS += oss-fuzz/fuzz-commit-graph.o
 FUZZ_OBJS += oss-fuzz/fuzz-config.o
@@ -2695,7 +2696,6 @@ OBJECTS += $(SCALAR_OBJS)
 OBJECTS += $(PROGRAM_OBJS)
 OBJECTS += $(TEST_OBJS)
 OBJECTS += $(XDIFF_OBJS)
-OBJECTS += $(FUZZ_OBJS)
 OBJECTS += $(REFTABLE_OBJS) $(REFTABLE_TEST_OBJS)
 OBJECTS += $(UNIT_TEST_OBJS)
 

Now whether that is useful for organizing the Makefile, I don't know,
but I thought I'd throw it out there in case it helps you.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 13 of 23 in “fuzz: build fuzzers by default on Linux”
  1. 0/2 fuzz: build fuzzers by default on LinuxJosh Steadmon, Mar 5, 2024
  2. 1/2 ci: also define CXX environment variableJosh Steadmon, Mar 5, 2024
  3. Junio C HamanoMar 5, 2024
  4. Josh SteadmonApr 9, 2024
  5. Jeff KingMar 6, 2024
  6. Jeff KingMar 6, 2024
  7. Josh SteadmonApr 10, 2024
  8. 2/2 fuzz: link fuzz programs with `make all` on LinuxJosh Steadmon, Mar 5, 2024
  9. Junio C HamanoMar 5, 2024
  10. Josh SteadmonApr 9, 2024
  11. Josh SteadmonApr 10, 2024
  12. Junio C HamanoApr 10, 2024
  13. Jeff KingApr 10, 2024
  14. Junio C HamanoMar 26, 2024
  15. Josh SteadmonApr 9, 2024
  16. 0/2 fuzz: build fuzzers by default on LinuxJosh Steadmon, Apr 11, 2024
  17. 1/2 ci: also define CXX environment variableJosh Steadmon, Apr 11, 2024
  18. Jeff KingApr 12, 2024
  19. Josh SteadmonApr 24, 2024
  20. 2/2 fuzz: link fuzz programs with `make all` on LinuxJosh Steadmon, Apr 11, 2024
  21. Junio C HamanoApr 11, 2024
  22. fuzz: link fuzz programs with `make all` on LinuxJosh Steadmon, Apr 24, 2024
  23. Junio C HamanoApr 24, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.