Commit 30ac07d4f044975c324933eccc56bbd28a9a8a19
1 parent
88570520
moved i386 specific stuff outside elf.h
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@78 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
37 additions
and
0 deletions
linux-user/elfload.c
@@ -12,6 +12,43 @@ | @@ -12,6 +12,43 @@ | ||
12 | 12 | ||
13 | #include "qemu.h" | 13 | #include "qemu.h" |
14 | 14 | ||
15 | +#ifdef TARGET_I386 | ||
16 | + | ||
17 | +#define ELF_START_MMAP 0x80000000 | ||
18 | + | ||
19 | +typedef uint32_t elf_greg_t; | ||
20 | + | ||
21 | +#define ELF_NGREG (sizeof (struct target_pt_regs) / sizeof(elf_greg_t)) | ||
22 | +typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
23 | + | ||
24 | +typedef struct user_i387_struct elf_fpregset_t; | ||
25 | + | ||
26 | +/* | ||
27 | + * This is used to ensure we don't load something for the wrong architecture. | ||
28 | + */ | ||
29 | +#define elf_check_arch(x) ( ((x) == EM_386) || ((x) == EM_486) ) | ||
30 | + | ||
31 | +/* | ||
32 | + * These are used to set parameters in the core dumps. | ||
33 | + */ | ||
34 | +#define ELF_CLASS ELFCLASS32 | ||
35 | +#define ELF_DATA ELFDATA2LSB | ||
36 | +#define ELF_ARCH EM_386 | ||
37 | + | ||
38 | + /* SVR4/i386 ABI (pages 3-31, 3-32) says that when the program | ||
39 | + starts %edx contains a pointer to a function which might be | ||
40 | + registered using `atexit'. This provides a mean for the | ||
41 | + dynamic linker to call DT_FINI functions for shared libraries | ||
42 | + that have been loaded before the code runs. | ||
43 | + | ||
44 | + A value of 0 tells we have no such handler. */ | ||
45 | +#define ELF_PLAT_INIT(_r) _r->edx = 0 | ||
46 | + | ||
47 | +#define USE_ELF_CORE_DUMP | ||
48 | +#define ELF_EXEC_PAGESIZE 4096 | ||
49 | + | ||
50 | +#endif | ||
51 | + | ||
15 | #include "linux_bin.h" | 52 | #include "linux_bin.h" |
16 | #include "elf.h" | 53 | #include "elf.h" |
17 | #include "segment.h" | 54 | #include "segment.h" |