@@ -1127,9 +1127,9 @@ class BinaryReaderObjdump : public BinaryReaderObjdumpBase {
11271127 Result OnFunction (Index index, Index sig_index) override ;
11281128
11291129 Result OnTableCount (Index count) override ;
1130- Result OnTable (Index index,
1131- Type elem_type,
1132- const Limits* elem_limits) override ;
1130+ Result BeginTable (Index index,
1131+ Type elem_type,
1132+ const Limits* elem_limits) override ;
11331133
11341134 Result OnMemoryCount (Index count) override ;
11351135 Result OnMemory (Index index,
@@ -1176,6 +1176,14 @@ class BinaryReaderObjdump : public BinaryReaderObjdumpBase {
11761176
11771177 Result EndDataSegmentInitExpr (Index index) override { return EndInitExpr (); }
11781178
1179+ Result BeginTableInitExpr (Index index) override {
1180+ reading_table_init_expr_ = true ;
1181+ BeginInitExpr ();
1182+ return Result::Ok;
1183+ }
1184+
1185+ Result EndTableInitExpr (Index index) override { return EndInitExpr (); }
1186+
11791187 Result BeginGlobalInitExpr (Index index) override {
11801188 reading_global_init_expr_ = true ;
11811189 BeginInitExpr ();
@@ -1305,6 +1313,7 @@ class BinaryReaderObjdump : public BinaryReaderObjdumpBase {
13051313 Index elem_index_ = 0 ;
13061314 Index table_index_ = 0 ;
13071315 Index next_data_reloc_ = 0 ;
1316+ bool reading_table_init_expr_ = false ;
13081317 bool reading_elem_init_expr_ = false ;
13091318 bool reading_data_init_expr_ = false ;
13101319 bool reading_global_init_expr_ = false ;
@@ -1317,8 +1326,9 @@ class BinaryReaderObjdump : public BinaryReaderObjdumpBase {
13171326 uint64_t elem_offset_ = 0 ;
13181327
13191328 bool ReadingInitExpr () {
1320- return reading_elem_init_expr_ || reading_data_init_expr_ ||
1321- reading_global_init_expr_ || reading_elem_expr_;
1329+ return reading_table_init_expr_ || reading_elem_init_expr_ ||
1330+ reading_data_init_expr_ || reading_global_init_expr_ ||
1331+ reading_elem_expr_;
13221332 }
13231333};
13241334
@@ -1697,9 +1707,9 @@ Result BinaryReaderObjdump::OnTableCount(Index count) {
16971707 return OnCount (count);
16981708}
16991709
1700- Result BinaryReaderObjdump::OnTable (Index index,
1701- Type elem_type,
1702- const Limits* elem_limits) {
1710+ Result BinaryReaderObjdump::BeginTable (Index index,
1711+ Type elem_type,
1712+ const Limits* elem_limits) {
17031713 PrintDetails (" - table[%" PRIindex " ] type=%s initial=%" PRId64, index,
17041714 elem_type.GetName ().c_str (), elem_limits->initial );
17051715 if (elem_limits->has_max ) {
@@ -1922,6 +1932,9 @@ Result BinaryReaderObjdump::EndInitExpr() {
19221932 if (reading_data_init_expr_) {
19231933 reading_data_init_expr_ = false ;
19241934 InitExprToConstOffset (current_init_expr_, &data_offset_);
1935+ } else if (reading_table_init_expr_) {
1936+ reading_table_init_expr_ = false ;
1937+ InitExprToConstOffset (current_init_expr_, &elem_offset_);
19251938 } else if (reading_elem_init_expr_) {
19261939 reading_elem_init_expr_ = false ;
19271940 InitExprToConstOffset (current_init_expr_, &elem_offset_);
0 commit comments