From 0ebe8219a7fe3d8aa9b19f383672d3df01a806ce Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 17 Jun 2025 10:38:50 +0000 Subject: [PATCH 1/2] fixup! fix exprt::opX accesses in linker_script_merge In one case 7bf94f15794af48024b8cb0793711db5be6d5482 wrongly turned `index_exprt::op0` into `index_exprt::index()` when that should be `::array()`. Running tests on aarch64 was thus broken (but we don't yet do that in CI). --- src/goto-cc/linker_script_merge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/goto-cc/linker_script_merge.cpp b/src/goto-cc/linker_script_merge.cpp index 5736e05a5af..d4912c4213d 100644 --- a/src/goto-cc/linker_script_merge.cpp +++ b/src/goto-cc/linker_script_merge.cpp @@ -136,7 +136,7 @@ linker_script_merget::linker_script_merget( "address of array's first member", [](const exprt &expr) -> const symbol_exprt & { return to_symbol_expr( - to_index_expr(to_address_of_expr(expr).object()).index()); + to_index_expr(to_address_of_expr(expr).object()).array()); }, [](const exprt &expr) { return expr.id() == ID_address_of && From 2e054be37e4253d2a392b0f6deac47f2ca780eab Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Tue, 17 Jun 2025 13:32:15 +0000 Subject: [PATCH 2/2] linker_script_merge: clang-format (15) lambdas --- src/goto-cc/linker_script_merge.cpp | 42 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/goto-cc/linker_script_merge.cpp b/src/goto-cc/linker_script_merge.cpp index d4912c4213d..465784cde10 100644 --- a/src/goto-cc/linker_script_merge.cpp +++ b/src/goto-cc/linker_script_merge.cpp @@ -134,11 +134,13 @@ linker_script_merget::linker_script_merget( replacement_predicates( {replacement_predicatet( "address of array's first member", - [](const exprt &expr) -> const symbol_exprt & { + [](const exprt &expr) -> const symbol_exprt & + { return to_symbol_expr( to_index_expr(to_address_of_expr(expr).object()).array()); }, - [](const exprt &expr) { + [](const exprt &expr) + { return expr.id() == ID_address_of && expr.type().id() == ID_pointer && @@ -164,10 +166,10 @@ linker_script_merget::linker_script_merget( }), replacement_predicatet( "address of array", - [](const exprt &expr) -> const symbol_exprt & { - return to_symbol_expr(to_address_of_expr(expr).object()); - }, - [](const exprt &expr) { + [](const exprt &expr) -> const symbol_exprt & + { return to_symbol_expr(to_address_of_expr(expr).object()); }, + [](const exprt &expr) + { return expr.id() == ID_address_of && expr.type().id() == ID_pointer && @@ -176,10 +178,10 @@ linker_script_merget::linker_script_merget( }), replacement_predicatet( "address of struct", - [](const exprt &expr) -> const symbol_exprt & { - return to_symbol_expr(to_address_of_expr(expr).object()); - }, - [](const exprt &expr) { + [](const exprt &expr) -> const symbol_exprt & + { return to_symbol_expr(to_address_of_expr(expr).object()); }, + [](const exprt &expr) + { return expr.id() == ID_address_of && expr.type().id() == ID_pointer && @@ -190,20 +192,16 @@ linker_script_merget::linker_script_merget( }), replacement_predicatet( "array variable", - [](const exprt &expr) -> const symbol_exprt & { - return to_symbol_expr(expr); - }, - [](const exprt &expr) { - return expr.id() == ID_symbol && expr.type().id() == ID_array; - }), + [](const exprt &expr) -> const symbol_exprt & + { return to_symbol_expr(expr); }, + [](const exprt &expr) + { return expr.id() == ID_symbol && expr.type().id() == ID_array; }), replacement_predicatet( "pointer (does not need pointerizing)", - [](const exprt &expr) -> const symbol_exprt & { - return to_symbol_expr(expr); - }, - [](const exprt &expr) { - return expr.id() == ID_symbol && expr.type().id() == ID_pointer; - })}) + [](const exprt &expr) -> const symbol_exprt & + { return to_symbol_expr(expr); }, + [](const exprt &expr) + { return expr.id() == ID_symbol && expr.type().id() == ID_pointer; })}) {} int linker_script_merget::pointerize_linker_defined_symbols(