summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/Makefile2
-rw-r--r--nuttx/arch/sim/src/up_elf.c4
-rw-r--r--nuttx/arch/x86/src/common/up_elf.c4
-rw-r--r--nuttx/binfmt/elf.c10
-rw-r--r--nuttx/binfmt/libelf/Make.defs2
-rw-r--r--nuttx/binfmt/libelf/libelf_load.c2
-rw-r--r--nuttx/binfmt/libnxflat/Make.defs2
-rw-r--r--nuttx/binfmt/nxflat.c4
-rw-r--r--nuttx/include/elf.h12
-rw-r--r--nuttx/tools/mkconfig.c2
10 files changed, 24 insertions, 20 deletions
diff --git a/nuttx/Makefile b/nuttx/Makefile
index 7a058d88e..73bffc301 100644
--- a/nuttx/Makefile
+++ b/nuttx/Makefile
@@ -644,7 +644,7 @@ ifneq ($(APPDIR),)
fi
@$(MAKE) -C "$(TOPDIR)/$(APPDIR)" TOPDIR="$(TOPDIR)" distclean
@if [ -r _SAVED_APPS_config ]; then \
- @mv _SAVED_APPS_config "$(TOPDIR)/$(APPDIR)/.config" || \
+ mv _SAVED_APPS_config "$(TOPDIR)/$(APPDIR)/.config" || \
{ echo "Copy of _SAVED_APPS_config failed" ; exit 1 ; } \
fi
endif
diff --git a/nuttx/arch/sim/src/up_elf.c b/nuttx/arch/sim/src/up_elf.c
index c6aabdcef..ca3b642dc 100644
--- a/nuttx/arch/sim/src/up_elf.c
+++ b/nuttx/arch/sim/src/up_elf.c
@@ -40,7 +40,9 @@
#include <nuttx/config.h>
#include <stdlib.h>
+#include <elf.h>
#include <errno.h>
+#include <debug.h>
#include <nuttx/arch.h>
#include <nuttx/binfmt/elf.h>
@@ -113,7 +115,7 @@ int arch_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
{
FAR uint32_t *ptr = (FAR uint32_t *)addr;
- switch (ELF_REL_TYPE(rel->r_info))
+ switch (ELF32_R_TYPE(rel->r_info))
{
case R_386_32:
*ptr += sym->st_value;
diff --git a/nuttx/arch/x86/src/common/up_elf.c b/nuttx/arch/x86/src/common/up_elf.c
index f159c8e51..be166b480 100644
--- a/nuttx/arch/x86/src/common/up_elf.c
+++ b/nuttx/arch/x86/src/common/up_elf.c
@@ -40,7 +40,9 @@
#include <nuttx/config.h>
#include <stdlib.h>
+#include <elf.h>
#include <errno.h>
+#include <debug.h>
#include <nuttx/arch.h>
#include <nuttx/binfmt/elf.h>
@@ -113,7 +115,7 @@ int arch_relocate(FAR const Elf32_Rel *rel, FAR const Elf32_Sym *sym,
{
FAR uint32_t *ptr = (FAR uint32_t *)addr;
- switch (ELF_REL_TYPE(rel->r_info))
+ switch (ELF32_R_TYPE(rel->r_info))
{
case R_386_32:
*ptr += sym->st_value;
diff --git a/nuttx/binfmt/elf.c b/nuttx/binfmt/elf.c
index ba12a22ea..d9c3d0b9c 100644
--- a/nuttx/binfmt/elf.c
+++ b/nuttx/binfmt/elf.c
@@ -139,11 +139,11 @@ static void elf_dumploadinfo(FAR struct elf_loadinfo_s *loadinfo)
bdbg(" e_shnum: %d\n", loadinfo->ehdr.e_shnum);
bdbg(" e_shstrndx: %d\n", loadinfo->ehdr.e_shstrndx);
- if (loadinfo->shdr && loadinfo->ehdr.e_shum > 0)
+ if (loadinfo->shdr && loadinfo->ehdr.e_shnum > 0)
{
- for (i = 0; i < loadinfo->ehdr.e_shum; i++)
+ for (i = 0; i < loadinfo->ehdr.e_shnum; i++)
{
- FAR ELF32_Shdr *shdr = &loadinfo->shdr[i];
+ FAR Elf32_Shdr *shdr = &loadinfo->shdr[i];
bdbg("Sections %d:\n", i);
bdbg(" sh_name: %08x\n", shdr->sh_name);
bdbg(" sh_type: %08x\n", shdr->sh_type);
@@ -184,7 +184,7 @@ static int elf_loadbinary(struct binary_s *binp)
elf_dumploadinfo(&loadinfo);
if (ret != 0)
{
- bdbg("Failed to initialize for load of NXFLT program: %d\n", ret);
+ bdbg("Failed to initialize for load of ELF program: %d\n", ret);
goto errout;
}
@@ -194,7 +194,7 @@ static int elf_loadbinary(struct binary_s *binp)
elf_dumploadinfo(&loadinfo);
if (ret != 0)
{
- bdbg("Failed to load NXFLT program binary: %d\n", ret);
+ bdbg("Failed to load ELF program binary: %d\n", ret);
goto errout_with_init;
}
diff --git a/nuttx/binfmt/libelf/Make.defs b/nuttx/binfmt/libelf/Make.defs
index 9e06537bd..a70a127f8 100644
--- a/nuttx/binfmt/libelf/Make.defs
+++ b/nuttx/binfmt/libelf/Make.defs
@@ -41,7 +41,7 @@ BINFMT_CSRCS += elf.c
# ELF library
-BINFMT_CSRCS = libelf_init.c libelf_uninit.c libelf_load.c \
+BINFMT_CSRCS += libelf_init.c libelf_uninit.c libelf_load.c \
libelf_unload.c libelf_verify.c libelf_read.c \
libelf_bind.c libelf_symbols.c
diff --git a/nuttx/binfmt/libelf/libelf_load.c b/nuttx/binfmt/libelf/libelf_load.c
index 758f96548..4a1a561c3 100644
--- a/nuttx/binfmt/libelf/libelf_load.c
+++ b/nuttx/binfmt/libelf/libelf_load.c
@@ -283,8 +283,8 @@ static inline int elf_loadfile(FAR struct elf_loadinfo_s *loadinfo)
/* Update sh_addr to point to copy in memory */
+ bvdbg("%d. %08x->%08x\n", i, (long)shdr->sh_addr, (long)dest);
shdr->sh_addr = (uintptr_t)dest;
- bvdbg("%d. 0x%lx %s\n", (long)shdr->sh_addr, loadinfo->secstrings + shdr->sh_name);
/* Setup the memory pointer for the next time through the loop */
diff --git a/nuttx/binfmt/libnxflat/Make.defs b/nuttx/binfmt/libnxflat/Make.defs
index 4462e9a02..4f522e52b 100644
--- a/nuttx/binfmt/libnxflat/Make.defs
+++ b/nuttx/binfmt/libnxflat/Make.defs
@@ -41,7 +41,7 @@ BINFMT_CSRCS += nxflat.c
# NXFLAT library
-BINFMT_CSRCS = libnxflat_init.c libnxflat_uninit.c libnxflat_load.c \
+BINFMT_CSRCS += libnxflat_init.c libnxflat_uninit.c libnxflat_load.c \
libnxflat_unload.c libnxflat_verify.c libnxflat_read.c \
libnxflat_bind.c
diff --git a/nuttx/binfmt/nxflat.c b/nuttx/binfmt/nxflat.c
index babc51ff9..8d0ecfdcd 100644
--- a/nuttx/binfmt/nxflat.c
+++ b/nuttx/binfmt/nxflat.c
@@ -158,7 +158,7 @@ static int nxflat_loadbinary(struct binary_s *binp)
nxflat_dumploadinfo(&loadinfo);
if (ret != 0)
{
- bdbg("Failed to initialize for load of NXFLT program: %d\n", ret);
+ bdbg("Failed to initialize for load of NXFLAT program: %d\n", ret);
goto errout;
}
@@ -168,7 +168,7 @@ static int nxflat_loadbinary(struct binary_s *binp)
nxflat_dumploadinfo(&loadinfo);
if (ret != 0)
{
- bdbg("Failed to load NXFLT program binary: %d\n", ret);
+ bdbg("Failed to load NXFLAT program binary: %d\n", ret);
goto errout_with_init;
}
diff --git a/nuttx/include/elf.h b/nuttx/include/elf.h
index 1b36701fd..c3fb2732d 100644
--- a/nuttx/include/elf.h
+++ b/nuttx/include/elf.h
@@ -166,9 +166,9 @@
/* Definitions for Elf32_Sym::st_info */
-#define ELF32_ST_BIND(i) ((i)>>4)
-#define ELF32_ST_TYPE(i) ((i)&0xf)
-#define ELF32_ST_INFO(b,t) (((b)<<4)+((t)&0xf))
+#define ELF32_ST_BIND(i) ((i) >> 4)
+#define ELF32_ST_TYPE(i) ((i) & 0xf)
+#define ELF32_ST_INFO(b,t) (((b) << 4) | ((t) & 0xf))
/* Figure 4-16: Symbol Binding, ELF32_ST_BIND */
@@ -190,9 +190,9 @@
/* Definitions for Elf32_Rel*::r_info */
-#define ELF32_R_SYM(i) ((i)>>8)
-#define ELF32_R_TYPE(i) ((unsigned char)(i))
-#define ELF32_R_INFO(s,t) (((s)<<8)+(unsigned char)(t))
+#define ELF32_R_SYM(i) ((i) >> 8)
+#define ELF32_R_TYPE(i) ((i) & 0xff)
+#define ELF32_R_INFO(s,t) (((s)<< 8) | ((t) & 0xff))
/* Figure 5-2: Segment Types, p_type */
diff --git a/nuttx/tools/mkconfig.c b/nuttx/tools/mkconfig.c
index 2d2fff5c5..3e55f5097 100644
--- a/nuttx/tools/mkconfig.c
+++ b/nuttx/tools/mkconfig.c
@@ -116,7 +116,7 @@ int main(int argc, char **argv, char **envp)
printf(" * configured (at present, NXFLAT is the only supported binary.\n");
printf(" * format).\n");
printf(" */\n\n");
- printf("#if !defined(CONFIG_NXFLAT)\n");
+ printf("#if !defined(CONFIG_NXFLAT) && !defined(CONFIG_ELF)\n");
printf("# undef CONFIG_BINFMT_DISABLE\n");
printf("# define CONFIG_BINFMT_DISABLE 1\n");
printf("#endif\n\n");