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
Tim Wojtulewicz
224a42e1f0
bifcl: Use nullptrs for pointer initializations
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
4ed4f3e1b8
bifcl: Include stdint.h early to prevent redefinition of int type macros
2025-08-20 08:52:25 -07:00
Tim Wojtulewicz
0c4676e835
bifcl: Remove argument from BIFCL_LSAN_DISABLE macro to fix warning on Windows
2025-08-20 08:52:25 -07:00