From d800c7b2958616df20fbd0ff29f3648cb1d5e05b Mon Sep 17 00:00:00 2001
From: Martin Bickel <martin.bickel@continental-corporation.com>
Date: Wed, 28 Dec 2016 19:27:30 +0100
Subject: [PATCH] When saving a previously loaded ELF file, don't shrink
 segments' memory size

---
 elfio/elfio.hpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/elfio/elfio.hpp b/elfio/elfio.hpp
index c983a9e..63512b3 100644
--- a/elfio/elfio.hpp
+++ b/elfio/elfio.hpp
@@ -728,7 +728,15 @@ class elfio
             }
 
             seg->set_file_size( segment_filesize );
-            seg->set_memory_size( segment_memory );
+
+            // If we already have a memory size from loading an elf file (value > 0),
+            // it must not shrink!
+            // Memory size may be bigger than file size and it is the loader's job to do something
+            // with the surplus bytes in memory, like initializing them with a defined value.
+            if ( seg->get_memory_size() < segment_memory ) {
+                seg->set_memory_size( segment_memory );
+            }
+
             seg->set_offset(seg_start_pos);
         }
 
-- 
GitLab