summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit/elftoolchain/libelf/elf_memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'rtemstoolkit/elftoolchain/libelf/elf_memory.c')
-rw-r--r--rtemstoolkit/elftoolchain/libelf/elf_memory.c49
1 files changed, 2 insertions, 47 deletions
diff --git a/rtemstoolkit/elftoolchain/libelf/elf_memory.c b/rtemstoolkit/elftoolchain/libelf/elf_memory.c
index 691beaf..d70f6e0 100644
--- a/rtemstoolkit/elftoolchain/libelf/elf_memory.c
+++ b/rtemstoolkit/elftoolchain/libelf/elf_memory.c
@@ -24,21 +24,15 @@
* SUCH DAMAGE.
*/
-#include <sys/cdefs.h>
-
-#include <ar.h>
#include <libelf.h>
-#include <string.h>
#include "_libelf.h"
-LIBELF_VCSID("$Id: elf_memory.c 189 2008-07-20 10:38:08Z jkoshy $");
+ELFTC_VCSID("$Id: elf_memory.c 3013 2014-03-23 06:16:59Z jkoshy $");
Elf *
elf_memory(char *image, size_t sz)
{
- Elf *e;
-
if (LIBELF_PRIVATE(version) == EV_NONE) {
LIBELF_SET_ERROR(SEQUENCE, 0);
return (NULL);
@@ -49,44 +43,5 @@ elf_memory(char *image, size_t sz)
return (NULL);
}
- if ((e = _libelf_allocate_elf()) == NULL)
- return (NULL);
-
- e->e_cmd = ELF_C_READ;
- e->e_rawfile = image;
- e->e_rawsize = sz;
-
-#undef LIBELF_IS_ELF
-#define LIBELF_IS_ELF(P) ((P)[EI_MAG0] == ELFMAG0 && \
- (P)[EI_MAG1] == ELFMAG1 && (P)[EI_MAG2] == ELFMAG2 && \
- (P)[EI_MAG3] == ELFMAG3)
-
- if (sz > EI_NIDENT && LIBELF_IS_ELF(image)) {
- _libelf_init_elf(e, ELF_K_ELF);
- e->e_class = image[EI_CLASS];
- e->e_byteorder = image[EI_DATA];
- e->e_version = image[EI_VERSION];
-
- if (e->e_version > EV_CURRENT) {
- e = _libelf_release_elf(e);
- LIBELF_SET_ERROR(VERSION, 0);
- return (NULL);
- }
-
- if ((e->e_byteorder != ELFDATA2LSB && e->e_byteorder !=
- ELFDATA2MSB) || (e->e_class != ELFCLASS32 && e->e_class !=
- ELFCLASS64)) {
- e = _libelf_release_elf(e);
- LIBELF_SET_ERROR(HEADER, 0);
- return (NULL);
- }
-
- } else if (sz >= SARMAG &&
- strncmp(image, ARMAG, (size_t) SARMAG) == 0) {
- _libelf_init_elf(e, ELF_K_AR);
- e = _libelf_ar_open(e);
- } else
- _libelf_init_elf(e, ELF_K_NONE);
-
- return (e);
+ return (_libelf_memory((unsigned char *) image, sz, 1));
}