Commit graph

19577 commits

Author SHA1 Message Date
Tim Wojtulewicz
027c075fb0 gen-zam: Use const references instead of copying type values 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
97492b4d70 gen-zam: Reserve space for args vector before pushing back items 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
75bba1a8f5 gen-zam: Fix clang-tidy bugprone-macro-parentheses/cppcoreguidelines-macro-usage warnings in headers 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
0acd4bf04e gen-zam: Fix clang-tidy bugprone-branch-clone warnings in headers 2025-08-20 08:52:25 -07:00
Vern Paxson
53591cf205 gen-zam: generate descriptions of macros, akin to those already generated for operations 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
12bb2a04eb gen-zam: Require CMake 3.15, in line with other Zeek projects 2025-08-20 08:52:25 -07:00
Vern Paxson
a20e268f13 gen-zam: more robust dispatch that allows for eval/eval-mixed overlap 2025-08-20 08:52:25 -07:00
Vern Paxson
736eb99054 gen-zam: extensive changes corresponding to those described in GH-3872 2025-08-20 08:52:25 -07:00
Vern Paxson
4ae4548ceb gen-zam: gen-zam extended to read from multiple files on the command-line 2025-08-20 08:52:25 -07:00
Vern Paxson
aee70af743 gen-zam: fix for generating relational operations with first operand being a constant 2025-08-20 08:52:25 -07:00
Vern Paxson
f9385ef88d gen-zam: hooks for supporting ZAM profiling 2025-08-20 08:52:25 -07:00
Vern Paxson
4e07a9681d gen-zam: fixes for generating ZAM operations relating to indirect calls 2025-08-20 08:52:25 -07:00
Vern Paxson
6f8c54d69a gen-zam: support for ZAM instructions using IntrusivePtr for call expression ASTs 2025-08-20 08:52:25 -07:00
Vern Paxson
6f648e36d1 gen-zam: fix to make generated function calls compatible with "when" lambdas 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
b04c03ee89 gen-zam: Fix some warnings from newer compilers about unqualified std::move calls 2025-08-20 08:52:25 -07:00
Vern Paxson
1e73b02977 gen-zam: better error reporting when ZAM code does a function call 2025-08-20 08:52:25 -07:00
Tomer Lev
3b3f6bbe4d gen-zam: Fix a bug caused by different behaviour of std::regex_replace under MSVC.
Under MSVC regex objects are multiline by default and there is no apparant way of changing this behaviour. Under clang/gcc regex is singleline unless std::regeX_constants::multiline is specificied.
This behaviour is assumed in Gen-ZAM.cc when auto-generating header files.

Example: https://godbolt.org/z/aP59x3EhT
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
6ad6fd165b gen-zam: clang-tidy: Avoid copying string objects if possible 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
27d674edc0 gen-zam: clang-tidy: Avoid bugprone narrowing conversions 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
bacd56258c gen-zam: Fix a couple of coverity issues
1491335: AUTO_CAUSES_COPY due to a for loop using auto& instead of const auto&
1491338: AUTO_CAUSES_COPY due to a for loop using auto& instead of const auto&
2025-08-20 08:52:25 -07:00
Vern Paxson
789b06b1ea gen-zam: fix memory management for vector-of-strings operations 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
f330505e83 gen-zam: Deprecate bro_int_t and bro_uint_t 2025-08-20 08:52:25 -07:00
Johanna Amann
902577b7ce gen-zam: Fix compile error on GCC-12/Ubuntu 22.04 2025-08-20 08:52:25 -07:00
Christian Kreibich
4a7cf8c26e gen-zam: Remove unnecessary include from CMakeLists.txt 2025-08-20 08:52:25 -07:00
Christian Kreibich
b51430c04e gen-zam: Trivial source tweaks to make it build 2025-08-20 08:52:25 -07:00
Christian Kreibich
5ea34f20b8 gen-zam: Establish the usual environment for cmake-driven builds 2025-08-20 08:52:25 -07:00
Christian Kreibich
c1f240295f gen-zam: Move Gen-ZAM sources to src subdirectory 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
c618bb7a56 bifcl: Remove submodule, adapt CMake configuration for Zeek build 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
f6d9696bf1 bifcl: Require C++20 for builds 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
d8d8772342 bifcl: Add NOLINT for clang-tidy performance-enum-size to generated headers 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
c63a220579 bifcl: Add missing include of cinttypes 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
867d91b535 bifcl: Some other minor cleanup 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
23a5e46b8e bifcl: Minor cleanup of include files 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
7026938082 bifcl: Pass boolean false to BuiltinFunc constructor instead of zero
This fixes a modernize-use-bool-literals clang-tidy warning in the
generated code.
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
c30aa7a903 bifcl: Don't do 'using namespace std' in headers, plus a little cleanup 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
75a8814cee bifcl: Switch more namespacing in generated code to nested style 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
234726dac7 bifcl: Reformat CMakeLists via pre-commit 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
2f97833acd bifcl: Switch namespacing in generated code to C++-17-style nested namespaces 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
d2edc334ad bifcl: Add #pragma once to generated headers 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
dac04be859 bifcl: Make BIFs just return ValPtr directly instead of BifReturnVal 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
f2cd4ae3e6 bifcl: Reformat Bifcl in Spicy style 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
8e5b722145 bifcl: Remove usage of FindRequiredPackage 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
af0c68c183 bifcl: Add /J flag on Windows to force unsigned char 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
3004675015 bifcl: Force -std=c++17 mode for cmake targets, remove use of RequireCXX17.cmake 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
af2a1b67bc bifcl: Require CMake 3.15.0 to build, similar to the recent changes to zeek and broker 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
7275016bcb bifcl: Remove vendored CMake files from repo 2025-08-20 08:52:25 -07:00
Arne Welzel
e7cce57f2b bifcl: Render runtime type checks for var_args bifs
Currently, Zeek disables any static type checking for var_arg bifs.
However, the generated preamble for var_args bifs assume that
typed positional arguments are correctly typed and blindly calls
the type converters on them. This easily triggers abort()s at runtime
currently when a script mistakenly uses the wrong types for var_arg
bifs. For example, calling publish_rr() with a port instead of a string
causes a hard-abort with Zeek 5.0.8.

    $ zeek -e 'Cluster::publish_rr(Cluster::Pool(), 80/tcp)'
    fatal error in <no location>: Val::CONVERTER (port/string) (80/tcp)
    Aborted (core dumped)

Extend bifcl so that for var_arg functions and the types that bifcl understands,
we render a runtime type check and explicit early return to avoid the abort().
For any/other types, the implementer of the bif continuous to be responsible
for type checking.

This isn't solving the var_args situation generally, but avoids some
ad-hoc fixes trickling in current bif implementations.

Some references:

https://github.com/zeek/zeek/issues/1523
https://github.com/zeek/zeek/issues/2425
https://github.com/zeek/zeek/issues/2935
https://github.com/zeek/zeek/pull/2950
2025-08-20 08:52:25 -07:00
Arne Welzel
efb32d31fc bifcl: builtin-func.l: Allow more than just one additional component
I'm not sure why this was restricted to only two components,
the following appears functional in Zeek scripts.

    module A::B::C;

    export {
      type MyRecord: record {
        a: string;
      };
    }

Closes #25.
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
8e295df115 bifcl: Other minor cleanups 2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
8662b29ac6 bifcl: Use bools for boolean comparisons 2025-08-20 08:52:25 -07:00