diff --git a/components/lwp/lwp.c b/components/lwp/lwp.c index 99d5f5bed366dfd24a1d4618344c5f08d8d190ce..ccfe890f91c960b14b52da618cb6d5bd2b44e056 100644 --- a/components/lwp/lwp.c +++ b/components/lwp/lwp.c @@ -506,6 +506,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str if (len < sizeof eheader) { + LOG_E("len < sizeof eheader!"); return -RT_ERROR; } @@ -515,6 +516,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str if (memcmp(elf_magic, &magic, 4) != 0) { + LOG_E("elf_magic not same, magic:0x%x!", magic); return -RT_ERROR; } @@ -525,17 +527,20 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str #ifndef ARCH_CPU_64BIT if (eheader.e_ident[4] != 1) { /* not 32bit */ + LOG_E("elf not 32bit, %d!", eheader.e_ident[4]); return -RT_ERROR; } #else if (eheader.e_ident[4] != 2) { /* not 64bit */ + LOG_E("elf not 64bit, %d!", eheader.e_ident[4]); return -RT_ERROR; } #endif if (eheader.e_ident[6] != 1) { /* ver not 1 */ + LOG_E("elf Version not 1,ver:%d!", eheader.e_ident[6]); return -RT_ERROR; } @@ -546,6 +551,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str ) { /* not pie or exec elf */ + LOG_E("elf type not pie or exec, type:%d!", eheader.e_type); return -RT_ERROR; } @@ -574,6 +580,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str && (eheader.e_entry != LDSO_LOAD_VADDR)) { /* the entry is invalidate */ + LOG_E("elf entry is invalidate, entry:0x%x!", eheader.e_entry); return -RT_ERROR; } } @@ -587,11 +594,13 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str #ifdef RT_USING_USERSPACE if (process_header_size > ARCH_PAGE_SIZE - sizeof(char[16])) { + LOG_E("process_header_size too big, size:0x%x!", process_header_size); return -RT_ERROR; } va = (uint8_t *)lwp_map_user(lwp, (void *)(USER_VADDR_TOP - ARCH_PAGE_SIZE * 2), process_header_size, 0); if (!va) { + LOG_E("lwp map user failed!"); return -RT_ERROR; } pa = rt_hw_mmu_v2p(m_info, va); @@ -600,6 +609,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str process_header = (uint8_t *)rt_malloc(process_header_size + sizeof(char[16])); if (!process_header) { + LOG_E("process_header malloc failed, size:0x%x!", process_header_size + sizeof(char[16])); return -RT_ERROR; } #endif @@ -801,6 +811,7 @@ static int load_elf(int fd, int len, struct rt_lwp *lwp, uint8_t *load_addr, str { if (pheader.p_filesz > pheader.p_memsz) { + LOG_E("pheader.p_filesz > pheader.p_memsz, p_filesz:0x%x;p_memsz:0x%x!", pheader.p_filesz, pheader.p_memsz); return -RT_ERROR; }