No public description

PiperOrigin-RevId: 746180833
Change-Id: I14826263bfe88ef20ca24255db93f5ef2530eba2
diff --git a/mpact/sim/util/asm/simple_assembler.cc b/mpact/sim/util/asm/simple_assembler.cc
index 889c8c7..aff0218 100644
--- a/mpact/sim/util/asm/simple_assembler.cc
+++ b/mpact/sim/util/asm/simple_assembler.cc
@@ -367,8 +367,13 @@
         lines_.push_back(statement);
       } else if (!label.empty()) {
         // This is just a single label definition. Add it to the symbol table.
-        auto status =
-            AddSymbolToCurrentSection(label, address, 0, STT_NOTYPE, 0, 0);
+        uint64_t symbol_address = address;
+        if ((current_section_ == data_section_) ||
+            (current_section_ == bss_section_)) {
+          symbol_address = address / data_address_unit_;
+        }
+        auto status = AddSymbolToCurrentSection(label, symbol_address, 0,
+                                                STT_NOTYPE, 0, 0);
         if (!status.ok()) return status;
       }
       continue;
diff --git a/mpact/sim/util/asm/simple_assembler.h b/mpact/sim/util/asm/simple_assembler.h
index 982b5bf..1f705c5 100644
--- a/mpact/sim/util/asm/simple_assembler.h
+++ b/mpact/sim/util/asm/simple_assembler.h
@@ -105,11 +105,15 @@
   // Add a symbol reference to the symbol table if it is not already defined.
   void SimpleAddSymbol(absl::string_view name);
 
-  // Getters.
+  // Getters and setters.
   absl::flat_hash_map<std::string, ELFIO::Elf_Word> &symbol_indices() {
     return symbol_indices_;
   }
   ELFIO::section *symtab() { return symtab_; }
+  unsigned data_address_unit() { return data_address_unit_; }
+  void set_data_address_unit(unsigned data_address_unit) {
+    data_address_unit_ = data_address_unit;
+  }
 
  private:
   // Helper function to update the symbol table entries.
@@ -183,6 +187,8 @@
   absl::flat_hash_map<std::string, ELFIO::Elf_Word> symbol_indices_;
   // Set of undefined symbols.
   absl::flat_hash_set<std::string> undefined_symbols_;
+  // Data address unit - by default 1 for byte addressable.
+  unsigned data_address_unit_ = 1;
 };
 
 }  // namespace assembler