1 /* $Id: addLibrary.h,v 1.3 2002/05/21 17:40:30 chadd Exp $ */
\r
3 #if defined(BPATCH_LIBRARY) && defined(sparc_sun_solaris2_4)
\r
13 #include <sys/link.h>
\r
15 typedef struct _Elf_element{
\r
16 Elf32_Shdr *sec_hdr;
\r
28 Elf_element *newElfFileSec;
\r
29 Elf32_Phdr *newElfFilePhdr;
\r
30 Elf32_Ehdr *newElfFileEhdr;
\r
31 Elf *oldElf, *newElf;
\r
33 Elf_Data *strTabData;
\r
36 int numberExtraSegs;
\r
38 unsigned int newPhdrAddr;
\r
39 unsigned int newPhdrOffset;
\r
41 unsigned int phdrSize;
\r
43 unsigned int textSegEndIndx;
\r
44 unsigned int dataSegStartIndx;
\r
47 void createNewElf();
\r
48 int findSection(char *name);
\r
49 void updateDynamic(Elf_Data*newData,unsigned int hashOff, unsigned int dynsymOff, unsigned int dynstrOff);
\r
50 void updateProgramHeaders(Elf32_Phdr *phdr, unsigned int dynstrOffset, Elf32_Shdr**newSegs);
\r
51 void addStr(Elf_Data* newData, Elf_Data* oldData, char *str);
\r
52 int writeNewElf(char* filename, char* libname);
\r
53 unsigned int findEndOfTextSegment();
\r
54 unsigned int findStartOfDataSegment();
\r
56 int findNewPhdrAddr();
\r
57 int findNewPhdrOffset();
\r
60 void fixUpPhdrForDynamic();
\r
62 void updateSymbols(Elf_Data* symtabData,Elf_Data* strData, unsigned int dynAddr);
\r
65 unsigned int _pageSize, realPageSize;
\r
67 int driver(Elf *elf, char *newfilename, char *libname);
\r