]> sourceware.org Git - libabigail.git/commitdiff
DWARF reader: use size_t for DWARF expression length cont.
authorMark Wielaard <mark@klomp.org>
Tue, 18 Jan 2022 11:56:45 +0000 (11:56 +0000)
committerDodji Seketeli <dodji@redhat.com>
Tue, 18 Jan 2022 15:58:18 +0000 (16:58 +0100)
A recent change broke 32-bit builds due to an implicit assumption that
size_t == uint64_t. Note that size_t is part of the elfutils
dwarf_getlocation* functions' types.

The previous fix omitted some instances of uint64_t. This commit
updates further functions to consistently use size_t for DWARF
expression lengths and indexes.

* src/abg-dwarf-reader.cc (eval_last_constant_dwarf_sub_expr):
Change expr_len argument type to size_t.
(op_pushes_constant_value): Update ops_len and index argument
types to size_t. Update next_index argument type to size_t&.
(op_pushes_non_constant_value): Likewise.
(op_is_arith_logic): Update expr_len and index argument types
to size_t. Update next_index argument type to size_t&.
(op_is_control_flow): Likewise.

Fixes: 16207c4af7bc ("Bug 28191 - Interpret DWARF 5 addrx locations")
Signed-off-by: Giuliano Procida <gprocida@google.com>
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
src/abg-dwarf-reader.cc

index 7ee8c04a954388bd690a02f34d7f14695dc2ee05..d8545b4c234c0527cffabfb93a0b1155567885c1 100644 (file)
@@ -363,7 +363,7 @@ die_is_at_class_scope(const read_context& ctxt,
                      Dwarf_Die& class_scope_die);
 static bool
 eval_last_constant_dwarf_sub_expr(Dwarf_Op*    expr,
-                                 uint64_t      expr_len,
+                                 size_t        expr_len,
                                  int64_t&      value,
                                  bool& is_tls_address);
 
@@ -7732,9 +7732,9 @@ die_location_expr(const Dwarf_Die* die,
 /// value onto the DEVM stack, false otherwise.
 static bool
 op_pushes_constant_value(Dwarf_Op*                     ops,
-                        uint64_t                       ops_len,
-                        uint64_t                       index,
-                        uint64_t&                      next_index,
+                        size_t                         ops_len,
+                        size_t                         index,
+                        size_t&                        next_index,
                         dwarf_expr_eval_context&       ctxt)
 {
   ABG_ASSERT(index < ops_len);
@@ -7896,9 +7896,9 @@ op_pushes_constant_value(Dwarf_Op*                        ops,
 /// non-constant value onto the DEVM stack, false otherwise.
 static bool
 op_pushes_non_constant_value(Dwarf_Op* ops,
-                            uint64_t ops_len,
-                            uint64_t index,
-                            uint64_t& next_index,
+                            size_t ops_len,
+                            size_t index,
+                            size_t& next_index,
                             dwarf_expr_eval_context& ctxt)
 {
   ABG_ASSERT(index < ops_len);
@@ -8146,9 +8146,9 @@ op_manipulates_stack(Dwarf_Op* expr,
 /// arithmetic or logic operation.
 static bool
 op_is_arith_logic(Dwarf_Op* expr,
-                 uint64_t expr_len,
-                 uint64_t index,
-                 uint64_t& next_index,
+                 size_t expr_len,
+                 size_t index,
+                 size_t& next_index,
                  dwarf_expr_eval_context& ctxt)
 {
   ABG_ASSERT(index < expr_len);
@@ -8279,9 +8279,9 @@ op_is_arith_logic(Dwarf_Op* expr,
 /// control flow operation, false otherwise.
 static bool
 op_is_control_flow(Dwarf_Op* expr,
-                  uint64_t expr_len,
-                  uint64_t index,
-                  uint64_t& next_index,
+                  size_t expr_len,
+                  size_t index,
+                  size_t& next_index,
                   dwarf_expr_eval_context& ctxt)
 {
   ABG_ASSERT(index < expr_len);
This page took 0.051623 seconds and 5 git commands to generate.