| 1 | /* $Id: elf2lx.h,v 1.4 2000-12-11 06:53:51 bird Exp $
 | 
|---|
| 2 |  *
 | 
|---|
| 3 |  * Elf2Lx - Declaration.
 | 
|---|
| 4 |  *
 | 
|---|
| 5 |  * Copyright (c) 1999-2000 knut st. osmundsen (knut.stange.osmundsen@mynd.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@mynd.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 | 
 | 
|---|