From e165e64fa5b56bd905d6c676abd743d6b3e7361e Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sat, 31 May 2025 12:49:37 -0700 Subject: [PATCH 1/3] fix for -O gen-C++ dealing with type constants of unnamed compound types --- src/script_opt/CPP/InitsInfo.cc | 9 ++++++--- src/script_opt/CPP/InitsInfo.h | 7 +------ src/script_opt/CPP/RuntimeInits.cc | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/script_opt/CPP/InitsInfo.cc b/src/script_opt/CPP/InitsInfo.cc index d63e1a45de..3954a39b13 100644 --- a/src/script_opt/CPP/InitsInfo.cc +++ b/src/script_opt/CPP/InitsInfo.cc @@ -299,9 +299,12 @@ void FuncConstInfo::InitializerVals(std::vector& ivs) const { } } -void TypeConstInfo::InitializerVals(std::vector& ivs) const { - auto& t = tv->GetType()->AsTypeType()->GetType(); - ivs.emplace_back(Fmt(t->Tag())); +TypeConstInfo::TypeConstInfo(CPPCompile* _c, ValPtr v) : CompoundItemInfo(_c, v) { + auto tv = v->AsTypeVal(); + auto t = tv->GetType()->AsTypeType()->GetType(); + auto gi = c->RegisterType(t); + type = c->TypeOffset(t); + init_cohort = max(init_cohort, gi->InitCohort() + 1); } AttrInfo::AttrInfo(CPPCompile* _c, const AttrPtr& attr) : CompoundItemInfo(_c) { diff --git a/src/script_opt/CPP/InitsInfo.h b/src/script_opt/CPP/InitsInfo.h index 54c4600af1..a86da4e822 100644 --- a/src/script_opt/CPP/InitsInfo.h +++ b/src/script_opt/CPP/InitsInfo.h @@ -469,12 +469,7 @@ private: class TypeConstInfo : public CompoundItemInfo { public: - TypeConstInfo(CPPCompile* _c, ValPtr v) : CompoundItemInfo(_c, v), tv(v->AsTypeVal()) {} - - void InitializerVals(std::vector& ivs) const override; - -private: - TypeVal* tv; + TypeConstInfo(CPPCompile* _c, ValPtr v); }; // Initialization information for single attributes and sets of attributes. diff --git a/src/script_opt/CPP/RuntimeInits.cc b/src/script_opt/CPP/RuntimeInits.cc index 6efdad27f4..6bd6a1011e 100644 --- a/src/script_opt/CPP/RuntimeInits.cc +++ b/src/script_opt/CPP/RuntimeInits.cc @@ -154,8 +154,7 @@ void CPP_IndexedInits::Generate(InitsManager* im, std::vector& iv template void CPP_IndexedInits::Generate(InitsManager* im, std::vector& ivec, int offset, ValElemVec& init_vals) const { - auto bt = base_type(static_cast(init_vals[0])); - auto t = make_intrusive(bt); + auto t = make_intrusive(im->Types(init_vals[0])); ivec[offset] = make_intrusive(t); } From 9117ccab12645e6d6cc15de92d993e525f7f0217 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sat, 31 May 2025 12:50:14 -0700 Subject: [PATCH 2/3] fix for more robustly finding BTests to assess for -O gen-C++ --- src/script_opt/CPP/maint/find-test-files.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/script_opt/CPP/maint/find-test-files.sh b/src/script_opt/CPP/maint/find-test-files.sh index bf848db4ec..a1c4b1ccd4 100755 --- a/src/script_opt/CPP/maint/find-test-files.sh +++ b/src/script_opt/CPP/maint/find-test-files.sh @@ -4,7 +4,7 @@ find ../testing/btest -type f | grep -v '\.tmp/' | xargs grep -E -l '@TEST' | xargs grep -E -l '^[ ]*(event|print)' | - xargs grep -E -c 'REQUIRES.*CPP.*((!=.*1)|(==.*0))' | + xargs grep -E -c '(REQUIRES.*CPP.*((!=.*1)|(==.*0)))|@TEST-START-NEXT' | grep ':0$' | sed 's,:0,,' | sort From 614eb8d3431111d8026e735b696c10b648ba1b05 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sat, 31 May 2025 12:52:44 -0700 Subject: [PATCH 3/3] minor BTest maintenance updates for -O gen-C++ --- .../Baseline.cpp/cluster.websocket.listen-idempotent/.stderr | 5 +++++ .../Baseline.cpp/cluster.websocket.tls-usage-error/.stderr | 3 +++ .../scripts/base/frameworks/cluster/log_distribution.zeek | 1 + .../btest/scripts/base/frameworks/config/cluster_resend.zeek | 1 + .../frameworks/logging/field-extension-cluster-error.zeek | 1 + .../base/frameworks/logging/field-extension-cluster.zeek | 1 + .../scripts/base/frameworks/netcontrol/basic-cluster.zeek | 1 + .../btest/scripts/base/frameworks/openflow/log-cluster.zeek | 1 + .../scripts/base/frameworks/storage/sqlite-cluster.zeek | 1 + 9 files changed, 15 insertions(+) create mode 100644 testing/btest/Baseline.cpp/cluster.websocket.listen-idempotent/.stderr create mode 100644 testing/btest/Baseline.cpp/cluster.websocket.tls-usage-error/.stderr diff --git a/testing/btest/Baseline.cpp/cluster.websocket.listen-idempotent/.stderr b/testing/btest/Baseline.cpp/cluster.websocket.listen-idempotent/.stderr new file mode 100644 index 0000000000..441deda09c --- /dev/null +++ b/testing/btest/Baseline.cpp/cluster.websocket.listen-idempotent/.stderr @@ -0,0 +1,5 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/listen-idempotent.zeek (C++), line 9: Already listening on 127.0.0.1: (<___>testing_btest__tmp_cluster_websocket_listen_idempotent_listen_idempotent_zeek__zeek_init__36__zf: function() : void()) +error in <...>/listen-idempotent.zeek (C++), line 9: Already listening on 127.0.0.1: (<___>testing_btest__tmp_cluster_websocket_listen_idempotent_listen_idempotent_zeek__zeek_init__36__zf: function() : void()) +error in <...>/listen-idempotent.zeek (C++), line 9: Already listening on 127.0.0.1: (<___>testing_btest__tmp_cluster_websocket_listen_idempotent_listen_idempotent_zeek__zeek_init__36__zf: function() : void()) +received termination signal diff --git a/testing/btest/Baseline.cpp/cluster.websocket.tls-usage-error/.stderr b/testing/btest/Baseline.cpp/cluster.websocket.tls-usage-error/.stderr new file mode 100644 index 0000000000..fd7a4bec76 --- /dev/null +++ b/testing/btest/Baseline.cpp/cluster.websocket.tls-usage-error/.stderr @@ -0,0 +1,3 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/tls-usage-error.zeek (C++), line 7: Invalid tls_options: No key_file field (<___>testing_btest__tmp_cluster_websocket_tls_usage_error_tls_usage_error_zeek__zeek_init__36__zf: function() : void()) +error in <...>/tls-usage-error.zeek (C++), line 7: Invalid tls_options: No cert_file field (<___>testing_btest__tmp_cluster_websocket_tls_usage_error_tls_usage_error_zeek__zeek_init__36__zf: function() : void()) diff --git a/testing/btest/scripts/base/frameworks/cluster/log_distribution.zeek b/testing/btest/scripts/base/frameworks/cluster/log_distribution.zeek index df8f982999..dafeccc431 100644 --- a/testing/btest/scripts/base/frameworks/cluster/log_distribution.zeek +++ b/testing/btest/scripts/base/frameworks/cluster/log_distribution.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # @TEST-PORT: BROKER_LOGGER1_PORT diff --git a/testing/btest/scripts/base/frameworks/config/cluster_resend.zeek b/testing/btest/scripts/base/frameworks/config/cluster_resend.zeek index 0a790bdb23..a33be6682d 100644 --- a/testing/btest/scripts/base/frameworks/config/cluster_resend.zeek +++ b/testing/btest/scripts/base/frameworks/config/cluster_resend.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # @TEST-PORT: BROKER_WORKER2_PORT diff --git a/testing/btest/scripts/base/frameworks/logging/field-extension-cluster-error.zeek b/testing/btest/scripts/base/frameworks/logging/field-extension-cluster-error.zeek index 560e988f91..bc14a56420 100644 --- a/testing/btest/scripts/base/frameworks/logging/field-extension-cluster-error.zeek +++ b/testing/btest/scripts/base/frameworks/logging/field-extension-cluster-error.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # diff --git a/testing/btest/scripts/base/frameworks/logging/field-extension-cluster.zeek b/testing/btest/scripts/base/frameworks/logging/field-extension-cluster.zeek index 557a5b83d1..9c2ae4c4ea 100644 --- a/testing/btest/scripts/base/frameworks/logging/field-extension-cluster.zeek +++ b/testing/btest/scripts/base/frameworks/logging/field-extension-cluster.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # diff --git a/testing/btest/scripts/base/frameworks/netcontrol/basic-cluster.zeek b/testing/btest/scripts/base/frameworks/netcontrol/basic-cluster.zeek index 1435d860e5..bf2d83bc2e 100644 --- a/testing/btest/scripts/base/frameworks/netcontrol/basic-cluster.zeek +++ b/testing/btest/scripts/base/frameworks/netcontrol/basic-cluster.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # @TEST-PORT: BROKER_WORKER2_PORT diff --git a/testing/btest/scripts/base/frameworks/openflow/log-cluster.zeek b/testing/btest/scripts/base/frameworks/openflow/log-cluster.zeek index 8ec83611b3..0a602faf7c 100644 --- a/testing/btest/scripts/base/frameworks/openflow/log-cluster.zeek +++ b/testing/btest/scripts/base/frameworks/openflow/log-cluster.zeek @@ -1,3 +1,4 @@ +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT # diff --git a/testing/btest/scripts/base/frameworks/storage/sqlite-cluster.zeek b/testing/btest/scripts/base/frameworks/storage/sqlite-cluster.zeek index c8cad348b7..7d4f5db5e4 100644 --- a/testing/btest/scripts/base/frameworks/storage/sqlite-cluster.zeek +++ b/testing/btest/scripts/base/frameworks/storage/sqlite-cluster.zeek @@ -1,4 +1,5 @@ # @TEST-DOC: Tests SQLite storage in a cluster environment +# @TEST-REQUIRES: test "${ZEEK_USE_CPP}" != "1" # @TEST-PORT: BROKER_MANAGER_PORT # @TEST-PORT: BROKER_WORKER1_PORT