diff -r 59148e28d9f6 -r 626366955efb toolsandutils/e32tools/elf2e32/source/pl_elfproducer.h --- a/toolsandutils/e32tools/elf2e32/source/pl_elfproducer.h Fri Jun 25 18:24:47 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// Implementation of the Class ElfProducer for the elf2e32 tool -// @internalComponent -// @released -// -// - -#if !defined(_PL_ELFPRODUCER_H_) -#define _PL_ELFPRODUCER_H_ - -#include "pl_elfexecutable.h" -#include - -//enum for section index -typedef enum _SECTION_INDEX_ { - DUMMY_SECTION=0, - CODE_SECTION, - DYNAMIC_SECTION, - HASH_TBL_SECTION, - VER_DEF_SECTION, - VERSION_SECTION, - STRING_SECTION, - SYMBOL_SECTION, - SH_STR_SECTION, - MAX_SECTIONS=SH_STR_SECTION -}SECTION_INDEX; - -//enum for DYN entries -typedef enum _DYN_ENTRIES_ { - DSO_DT_DSONAME=0, - DSO_DT_SYMTAB, - DSO_DT_SYMENT, - DSO_DT_STRTAB, - DSO_DT_STRSZ, - DSO_DT_VERSYM, - DSO_DT_VERDEF, - DSO_DT_VERDEFNUM, - DSO_DT_HASH, - DSO_DT_NULL, - MAX_DYN_ENTS=DSO_DT_NULL, -}DYN_ENTRIES; - -#define DEFAULT_VERSION 2 -/** -This class provides elf contents for the dso file creation. It generates the -elf header, sections, dynamic array and the relocatrion entries. -@internalComponent -@released -*/ -class ElfProducer : public ElfExecutable -{ - - typedef std::list SymbolList; -public: - ElfProducer(ParameterListInterface *aParameterListInterface); - ~ElfProducer(); - - void SetSymbolList(SymbolList& aSymbolList); - void WriteElfFile(char* aDsoFullName,char* aDsoFileName, char* aLinkAs); - -private: - /** - * This list is passed from the UseCaseHandler via the DSOHandler to this class. - * This is used to create the export info when only a def file is available and - * the DSO needs to be generated for that. - */ - typedef std::string String; - /** The proxy DSO file name*/ - String iDSOName; - - /** The offset of the file name within the string table of the ELF file*/ - PLUINT32 iDSONameOffset; - - /** The DLL name that defines the export Symbols*/ - String iLinkAs; - - /** The offset of the DLL name within the string table within the ELF file*/ - PLUINT32 iLinkAsOffset; - - /** The export Symbol list*/ - SymbolList *iSymbolsList; - - /** The number of export Symbols*/ - PLUINT32 iNSymbols; - - /** The proxy DSO full file name*/ - String iDsoFullName; - - /*DSO content Fields*/ - - /** The Elf version definition auxiliary section*/ - Elf32_Verdaux *iDSODaux; - - /** The Buckets for the hash table*/ - Elf32_Sword *iDSOBuckets; - - /** The chains pointed to by the buckets belonging to the hash table*/ - Elf32_Sword *iDSOChains; - - /** The Elf Dynamic section table*/ - Elf32_Dyn iDSODynTbl[MAX_DYN_ENTS+1]; - - /** The code section*/ - PLUINT32 *iCodeSectionData; - - /** The Elf file offset maintained for writing the different sections of the Elf file*/ - PLUINT32 iElfFileOffset; - - /** The Elf String table*/ - String iDSOSymNameStrTbl; - - /** The Elf Section-header String table*/ - String iDSOSectionNames; - - - void InitElfContents(); - void Cleanup(); - void SetSymolFields(Symbol *aSym, Elf32_Sym* aElfSym, PLUINT32 aIndex); - void AddToHashTable(const char* aSymName, PLUINT32 aIndex); - void CreateVersionTable(); - void CreateElfHeader(); - void CreateSections(); - void SetSectionFields(PLUINT32 aSectionIndex, char* aSectionName, PLUINT32 aType, \ - PLUINT32 aEntSz, PLUINT32 aSectionSize, PLUINT32 aLink, \ - PLUINT32 aInfo, PLUINT32 aAddrAlign, PLUINT32 aFlags, \ - PLUINT32 aAddr); - void CreateDynamicEntries(); - void CreateProgHeader(); - - void WriteElfContents(); - void AlignString(String& aStr); - -}; - - - - -#endif // !defined(_PL_ELFPRODUCER_H_)