diff --git a/src/ELF/Binary.cpp b/src/ELF/Binary.cpp
index b29785e..6eaab00 100644
--- a/src/ELF/Binary.cpp
+++ b/src/ELF/Binary.cpp
@@ -1344,6 +1344,7 @@ Section& Binary::extend(const Section& section, uint64_t size) {
 
   uint64_t from_offset  = section_to_extend->offset() + section_to_extend->size();
   uint64_t from_address = section_to_extend->virtual_address() + section_to_extend->size();
+  bool section_loaded   = section_to_extend->virtual_address() != 0;
   uint64_t shift        = size;
 
   this->datahandler_->make_hole(
@@ -1358,7 +1359,9 @@ Section& Binary::extend(const Section& section, uint64_t size) {
   for (Segment* segment : this->segments_) {
     if ((segment->file_offset() + segment->physical_size()) >= from_offset and
         from_offset >= segment->file_offset()) {
-      segment->virtual_size(segment->virtual_size()   + shift);
+      if (section_loaded) {
+        segment->virtual_size(segment->virtual_size() + shift);
+      }
       segment->physical_size(segment->physical_size() + shift);
     }
   }
@@ -1373,19 +1376,21 @@ Section& Binary::extend(const Section& section, uint64_t size) {
 
   this->header().section_headers_offset(this->header().section_headers_offset() + shift);
 
-  this->shift_dynamic_entries(from_address, shift);
-  this->shift_symbols(from_address, shift);
-  this->shift_relocations(from_address, shift);
+  if (section_loaded) {
+    this->shift_dynamic_entries(from_address, shift);
+    this->shift_symbols(from_address, shift);
+    this->shift_relocations(from_address, shift);
 
-  if (this->type() == ELF_CLASS::ELFCLASS32) {
-    this->fix_got_entries<ELF32>(from_address, shift);
-  } else {
-    this->fix_got_entries<ELF64>(from_address, shift);
-  }
+    if (this->type() == ELF_CLASS::ELFCLASS32) {
+      this->fix_got_entries<ELF32>(from_address, shift);
+    } else {
+      this->fix_got_entries<ELF64>(from_address, shift);
+    }
 
 
-  if (this->header().entrypoint() >= from_address) {
-    this->header().entrypoint(this->header().entrypoint() + shift);
+    if (this->header().entrypoint() >= from_address) {
+      this->header().entrypoint(this->header().entrypoint() + shift);
+    }
   }
 
   return *section_to_extend;