Changeset 9e5938dc in mainline


Ignore:
Timestamp:
2006-03-05T13:30:31Z (19 years ago)
Author:
Sergey Bondari <bondari@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bc314be8
Parents:
bd21922
Message:

ELF framework for all archs. SPARC V9 not tested to compile.

Files:
7 added
4 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    rbd21922 r9e5938dc  
    122122        generic/src/lib/sort.c \
    123123        generic/src/lib/elf32.c \
     124        generic/src/lib/elf64.c \
    124125        generic/src/debug/print.c \
    125126        generic/src/debug/symtab.c \
  • arch/ia32/include/elf.h

    rbd21922 r9e5938dc  
    3232#include <elf32.h>
    3333
    34 #define CURRENT_ELF_MACHINE     EM_386
    35 #define CURRENT_ELF_DATA        ELFDATA2LSB
     34#define ELF_MACHINE             EM_386
     35#define ELF_DATA_ENCODING       ELFDATA2LSB
     36#define ELF_CLASS               ELFCLASS32
    3637
    3738/*
    3839 * Main ELF loader function
    3940 */
    40 #defiine elf_load(__address header, as_t *as)   elf32_load(header, as)
     41#define elf_load(header, as) elf32_load(header, as)
    4142
    4243#endif
  • generic/include/elf32.h

    rbd21922 r9e5938dc  
    5353 */
    5454#define EM_NO           0       // No machine
    55 #define EM_M32          1       // AT&T WE 32100
    5655#define EM_SPARC        2       // SPARC
    5756#define EM_386          3       // i386
    58 #define EM_68K          4       // Motorola 68000
    59 #define EM_88K          5       // Motorola 88000
    60 #define EM_860          7       // i80860
    6157#define EM_MIPS         8       // MIPS RS3000
     58#define EM_MIPS_RS3_LE  10      // MIPS RS3000 LE
     59#define EM_PPC          20      // PPC32
     60#define EM_PPC64        21      // PPC64
     61#define EM_SPARCV9      43      // SPARC64
     62#define EM_IA_64        50      // IA-64
     63#define EM_X86_64       62      // AMD64/EMT64
    6264
    6365/**
  • generic/src/lib/elf32.c

    rbd21922 r9e5938dc  
    2727 */
    2828
    29 #include <elf32.h>
     29#include <elf.h>
    3030
    3131/** 32bit ELF loader
     
    3636 */
    3737int elf32_load(__address header, as_t * as) {
    38         return EE_UNSUPPORTED;
     38        elf32_header_t * e_header;
     39
     40        e_header = (elf32_header_t *) header;
     41       
     42        /* Identify ELF */
     43        if (    e_header->e_ident[EI_MAG0] != ELFMAG0 || e_header->e_ident[EI_MAG1] != ELFMAG1 ||
     44                e_header->e_ident[EI_MAG2] != ELFMAG2 || e_header->e_ident[EI_MAG3] != ELFMAG3
     45                ) {
     46                return EE_INVALID;
     47        }
     48       
     49        /* Identify ELF compatibility */
     50        if (    e_header->e_ident[EI_DATA] != ELF_DATA_ENCODING || e_header->e_machine != ELF_MACHINE ||
     51                e_header->e_ident[EI_VERSION] != EV_CURRENT || e_header->e_ident[EI_CLASS] != ELF_CLASS
     52                ) {
     53                return EE_UNSUPPORTED;
     54        }
     55       
     56
     57        return EE_UNSUPPORTED; 
    3958}
Note: See TracChangeset for help on using the changeset viewer.