summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nuttx/binfmt/libelf/libelf_load.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/nuttx/binfmt/libelf/libelf_load.c b/nuttx/binfmt/libelf/libelf_load.c
index 75ecb30fc..11d054a94 100644
--- a/nuttx/binfmt/libelf/libelf_load.c
+++ b/nuttx/binfmt/libelf/libelf_load.c
@@ -43,6 +43,7 @@
#include <stdint.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include <elf32.h>
#include <assert.h>
@@ -200,6 +201,15 @@ static inline int elf_loadfile(FAR struct elf_loadinfo_s *loadinfo)
}
}
+ /* If there is no data in an allocated section, then the allocated
+ * section must be cleared.
+ */
+
+ else
+ {
+ memset(*pptr, 0, shdr->sh_size);
+ }
+
/* Update sh_addr to point to copy in memory */
bvdbg("%d. %08lx->%08lx\n", i,