| 1 | /* $Id: elf2lx.h,v 1.3 2000-02-27 02:16:04 bird Exp $ | 
|---|
| 2 | * | 
|---|
| 3 | * Elf2Lx - Declaration. | 
|---|
| 4 | * | 
|---|
| 5 | * Copyright (c) 1999-2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no) | 
|---|
| 6 | * | 
|---|
| 7 | * Project Odin Software License can be found in LICENSE.TXT | 
|---|
| 8 | * | 
|---|
| 9 | */ | 
|---|
| 10 |  | 
|---|
| 11 | #ifndef _ELF2LX_H_ | 
|---|
| 12 | #define _ELF2LX_H_ | 
|---|
| 13 |  | 
|---|
| 14 |  | 
|---|
| 15 | /** | 
|---|
| 16 | * Elf to LX converter class. | 
|---|
| 17 | * @version | 
|---|
| 18 | * @verdesc | 
|---|
| 19 | * @author      knut st. osmundsen (knut.stange.osmundsen@pmsc.no) | 
|---|
| 20 | * @approval | 
|---|
| 21 | */ | 
|---|
| 22 | class Elf2Lx : public ModuleBase | 
|---|
| 23 | { | 
|---|
| 24 | public: | 
|---|
| 25 | /** @cat Constructor/Destructor */ | 
|---|
| 26 | Elf2Lx(SFN hFile); | 
|---|
| 27 | ~Elf2Lx(); | 
|---|
| 28 |  | 
|---|
| 29 | /** @cat Public Main methods */ | 
|---|
| 30 | ULONG  init(PCSZ pszFilename); | 
|---|
| 31 | ULONG  read(ULONG offLXFile, PVOID pvBuffer, ULONG cbToRead, ULONG flFlags, PMTE pMTE); | 
|---|
| 32 | ULONG  applyFixups(PMTE pMTE, ULONG iObject, ULONG iPageTable, PVOID pvPage, | 
|---|
| 33 | ULONG ulPageAddress, PVOID pvPTDA); /*(ldrEnum32bitRelRecs)*/ | 
|---|
| 34 | #ifndef RING0 | 
|---|
| 35 | ULONG  writeFile(PCSZ pszLXFilename); | 
|---|
| 36 | #endif | 
|---|
| 37 |  | 
|---|
| 38 | /** @cat public Helper methods */ | 
|---|
| 39 | VOID   dumpVirtualLxFile(); | 
|---|
| 40 | BOOL   queryIsModuleName(PCSZ pszFilename); | 
|---|
| 41 |  | 
|---|
| 42 | /** @cat Static helper methods */ | 
|---|
| 43 | static BOOL validHeader(Elf32_Ehdr *pEhdr); | 
|---|
| 44 |  | 
|---|
| 45 |  | 
|---|
| 46 | private: | 
|---|
| 47 | /** @cat private data members. */ | 
|---|
| 48 |  | 
|---|
| 49 | /** | 
|---|
| 50 | * @cat Elf structures | 
|---|
| 51 | */ | 
|---|
| 52 | Elf32_Ehdr *       pEhdr; | 
|---|
| 53 | Elf32_Phdr *       paPhdrs; | 
|---|
| 54 |  | 
|---|
| 55 | /** | 
|---|
| 56 | * @cat LX structures | 
|---|
| 57 | */ | 
|---|
| 58 | struct e32_exe     LXHdr;           /* Lxheader */ | 
|---|
| 59 |  | 
|---|
| 60 | struct o32_obj *   paObjTab;        /* Pointer to object table - if null check cObjects > 0 and generate it using makeObjectTable */ | 
|---|
| 61 | struct o32_map *   paObjPageTab;    /* Pointer to object page table - if null check cObjects > 0 and generate it using makeObjectPageTable */ | 
|---|
| 62 | }; | 
|---|
| 63 |  | 
|---|
| 64 |  | 
|---|
| 65 | #endif | 
|---|
| 66 |  | 
|---|