diff --git a/mpact/sim/decoder/proto_encoding_group.h b/mpact/sim/decoder/proto_encoding_group.h
index 200cd7f..d86bb7f 100644
--- a/mpact/sim/decoder/proto_encoding_group.h
+++ b/mpact/sim/decoder/proto_encoding_group.h
@@ -94,7 +94,7 @@
                                  absl::string_view message_type_name);
 
   ProtoInstructionGroup* inst_group_ = nullptr;
-  ProtoEncodingGroup* parent_ = nullptr;
+  [[maybe_unused]] ProtoEncodingGroup* parent_ = nullptr;
   DecoderErrorListener* error_listener_ = nullptr;
   FieldInfo* differentiator_ = nullptr;
   int64_t value_;
diff --git a/mpact/sim/util/asm/simple_assembler.cc b/mpact/sim/util/asm/simple_assembler.cc
index 8fd27f2..f9af385 100644
--- a/mpact/sim/util/asm/simple_assembler.cc
+++ b/mpact/sim/util/asm/simple_assembler.cc
@@ -301,12 +301,10 @@
 absl::Status SimpleAssembler::Parse(std::istream& is,
                                     ResolverInterface* zero_resolver) {
   // A trivial symbol resolver that always returns 0.
-  bool own_zero_resolver = false;
   std::function<void()> cleanup = []() {};
   if (zero_resolver == nullptr) {
     zero_resolver = new ZeroResolver(
         absl::bind_front(&SimpleAssembler::SimpleAddSymbol, this));
-    own_zero_resolver = true;
     cleanup = [zero_resolver]() { delete zero_resolver; };
   }
   // First pass of parsing the input stream. This will add symbols to the symbol
diff --git a/mpact/sim/util/program_loader/elf_program_loader.cc b/mpact/sim/util/program_loader/elf_program_loader.cc
index ec4beea..1f33b91 100644
--- a/mpact/sim/util/program_loader/elf_program_loader.cc
+++ b/mpact/sim/util/program_loader/elf_program_loader.cc
@@ -126,6 +126,12 @@
     // If the section isn 't loadable, continue.
     if (segment->get_type() != PT_LOAD) continue;
     if (segment->get_file_size() == 0) continue;
+    // Compute the destination address - use paddr if available, else use
+    // vaddr.
+    uint64_t dest_addr = segment->get_physical_address();
+    if (dest_addr == 0) {
+      dest_addr = segment->get_virtual_address();
+    }
     // Read the data from the elf file.
     if (dbg_if_ == nullptr) {  // Use memory interfaces.
       auto size = segment->get_file_size();
@@ -134,32 +140,28 @@
       if (memories_ == nullptr) {
         if (segment->get_flags() &
             PF_X) {  // Executable, so write to code memory.
-          code_memory_->Store(segment->get_virtual_address(), db);
+          code_memory_->Store(dest_addr, db);
         } else {  // Write to data memory.
-          data_memory_->Store(segment->get_virtual_address(), db);
+          data_memory_->Store(dest_addr, db);
         }
       } else {
-        int i = 0;
         for (auto& memory : *memories_) {
           if (memory.predicate_fcn(*segment)) {
             if (memory.address_fcn) {
-              memory.memory->Store(
-                  memory.address_fcn(segment->get_virtual_address()), db);
+              memory.memory->Store(memory.address_fcn(dest_addr), db);
             } else {
-              memory.memory->Store(segment->get_virtual_address(), db);
+              memory.memory->Store(dest_addr, db);
             }
             break;
           }
-          i++;
         }
       }
       db->DecRef();
       continue;
     }
     // Use debug interface.
-    auto res =
-        dbg_if_->WriteMemory(segment->get_virtual_address(),
-                             segment->get_data(), segment->get_file_size());
+    auto res = dbg_if_->WriteMemory(dest_addr, segment->get_data(),
+                                    segment->get_file_size());
     if (!res.ok() || (res.value() != segment->get_file_size())) {
       return absl::InternalError("Write error while loading elf segment");
     }
