12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #undef ELF_USES_RELOCA
- #define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned int*) & ARGS)
- #define GET_GOT(X) __asm__("\tmovl %%ebx,%0\n\t" : "=a" (X))
- #define INIT_GOT(GOT_BASE,MODULE) \
- { \
- GOT_BASE[2] = (int) _dl_linux_resolve
- GOT_BASE[1] = (int) MODULE
- }
- #define PERFORM_BOOTSTRAP_RELOC(RELP,REL,SYMBOL,LOAD) \
- switch(ELF32_R_TYPE((RELP)->r_info)){ \
- case R_386_32: \
- *REL += SYMBOL
- break
- case R_386_PC32: \
- *REL += SYMBOL - (unsigned int) REL
- break
- case R_386_GLOB_DAT: \
- case R_386_JMP_SLOT: \
- *REL = SYMBOL
- break
- case R_386_RELATIVE: \
- *REL += (unsigned int) LOAD
- break
- default: \
- _dl_exit(1)
- }
- #define START() \
- __asm__ volatile ("leave\n\t" \
- "jmp *%%eax\n\t" \
- : "=a" (status) : \
- "d" (_dl_interpreter_exit), "a" (_dl_elf_main))
- #define MAGIC1 EM_386
- #define MAGIC2 EM_486
- #define ELF_TARGET "386/486"
- extern unsigned int _dl_linux_resolver(int dummy, int i)
- #define do_rem(result, n, base) result = (n % base)
|