No public description PiperOrigin-RevId: 745803460 Change-Id: I5723823301d8c93826133fd498b245c24aec0415
diff --git a/mpact/sim/decoder/format.cc b/mpact/sim/decoder/format.cc index 5e8de59..0ea3491 100644 --- a/mpact/sim/decoder/format.cc +++ b/mpact/sim/decoder/format.cc
@@ -856,11 +856,16 @@ } class_output = absl::StrCat("class ", ToPascalCase(name()), " {\n public:\n", - " ", ToPascalCase(name()), "() = default;\n"); + " ", ToPascalCase(name()), "() = default;\n\n"); // Use a separate namespace for each format. h_output = absl::StrCat("namespace ", ToSnakeCase(name()), " {\n\n"); + std::string get_size = absl::StrCat("constexpr int k", ToPascalCase(name()), + "Size = ", declared_width(), ";\n\n"); + absl::StrAppend(&h_output, get_size); + absl::StrAppend(&class_output, "static ", get_size); + // First fields and formats. for (auto &[unused, field_or_format_ptr] : extractors_) { if (field_or_format_ptr->is_field()) {
diff --git a/mpact/sim/util/asm/simple_assembler.cc b/mpact/sim/util/asm/simple_assembler.cc index d0b4d54..889c8c7 100644 --- a/mpact/sim/util/asm/simple_assembler.cc +++ b/mpact/sim/util/asm/simple_assembler.cc
@@ -176,7 +176,7 @@ absl::StatusOr<std::vector<T>> GetValues( absl::string_view remainder, ResolverInterface *resolver = nullptr) { std::vector<T> values; - static RE2 value_re("(0x[0-9a-fA-F]+|-?[0-9]+)\\s*(?:,|$)"); + static RE2 value_re("\\s*(0x[0-9a-fA-F]+|-?[0-9]+)\\s*(?:,|$)"); std::string match; while (RE2::Consume(&remainder, value_re, &match)) { auto result = SimpleTextToInt<typename AtoIType<T>::type>(match); @@ -192,7 +192,7 @@ absl::StatusOr<std::vector<char>> GetValues<char>(absl::string_view remainder, ResolverInterface *resolver) { std::vector<char> values; - static RE2 value_re("'(.{1,2})'\\s*(?:,|$)"); + static RE2 value_re("\\s*'(.{1,2})'\\s*(?:,|$)"); std::string match; while (RE2::Consume(&remainder, value_re, &match)) { auto expanded = ExpandEscapes(match); @@ -210,7 +210,7 @@ absl::string_view remainder, ResolverInterface *resolver) { std::vector<std::string> values; std::string match; - static RE2 value_re("\"([^\"]*)\"\\s*(?:,|$)"); + static RE2 value_re("\\s*\"([^\"]*)\"\\s*(?:,|$)"); while (RE2::Consume(&remainder, value_re, &match)) { values.push_back(ExpandEscapes(match)); } @@ -223,7 +223,7 @@ absl::string_view remainder) { std::vector<std::string> values; std::string match; - static RE2 label_re("([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?:,|$)"); + static RE2 label_re("\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?:,|$)"); while (RE2::Consume(&remainder, label_re, &match)) { values.push_back(match); } @@ -240,7 +240,7 @@ } u; for (auto value : values) { u.i = value; - for (int i = sizeof(T) - 1; i >= 0; i--) { + for (int i = 0; i < sizeof(T); i++) { bytes.push_back(u.b[i]); } } @@ -458,7 +458,6 @@ absl::Status SimpleAssembler::CreateExecutable( uint64_t base_address, const std::string &entry_point, ResolverInterface *symbol_resolver) { - LOG(INFO) << "CreateExecutable"; if (!undefined_symbols_.empty()) { std::string message; absl::StrAppend( @@ -469,7 +468,6 @@ } return absl::InvalidArgumentError(message); } - LOG(INFO) << "set type to ET_EXEC"; writer_.set_type(ET_EXEC); // Section sizes are now known. So let's compute the layout and update all // the symbol values/addresses before the next pass. @@ -501,7 +499,7 @@ (text_segment_start + section_address_map_[text_section_] + 4095) & ~4095ULL; - ELFIO::segment *data_segment = writer_.segments.add(); + data_segment = writer_.segments.add(); if (data_segment == nullptr) { return absl::InternalError("Failed to create elf segment for data"); }