61 if(!iParameterListInterface->E32ImageOutput()) |
62 if(!iParameterListInterface->E32ImageOutput()) |
62 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--output"); |
63 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--output"); |
63 if(!iParameterListInterface->DefInput()) |
64 if(!iParameterListInterface->DefInput()) |
64 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--definput"); |
65 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--definput"); |
65 |
66 |
66 GenerateAsmFile(iParameterListInterface->E32ImageOutput()); |
67 GenerateAsmFile(); |
67 } |
68 } |
68 else |
69 else |
69 { |
70 { |
70 if(!iParameterListInterface->E32Input()) |
71 if(!iParameterListInterface->E32Input()) |
71 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--e32input"); |
72 throw ParameterParserError(NOREQUIREDOPTIONERROR,"--e32input"); |
72 if(iParameterListInterface->DumpOptions() & EDumpAsm ) |
73 if(iParameterListInterface->DumpOptions() & EDumpAsm ) |
73 throw InvalidArgumentError(INVALIDARGUMENTERROR,iParameterListInterface->FileDumpSubOptions() ,"--dump"); |
74 throw InvalidArgumentError(INVALIDARGUMENTERROR,iParameterListInterface->FileDumpSubOptions() ,"--dump"); |
74 DumpE32Image(iParameterListInterface->E32Input()); |
75 DumpE32Image(); |
75 } |
76 } |
76 return 0; |
77 return 0; |
77 } |
78 } |
78 |
79 |
79 /** |
80 /** |
81 @param afileName - ASM File name |
82 @param afileName - ASM File name |
82 @return 0 on success, otherwise throw error |
83 @return 0 on success, otherwise throw error |
83 @internalComponent |
84 @internalComponent |
84 @released |
85 @released |
85 */ |
86 */ |
86 int FileDump::GenerateAsmFile(const char* afileName)//DumpAsm |
87 int FileDump::GenerateAsmFile() //DumpAsm |
|
88 { |
|
89 EAsmDialect asmDialect = iParameterListInterface->AsmDialect(); |
|
90 switch(asmDialect) |
|
91 { |
|
92 case EGas: |
|
93 return GenerateGasAsmFile(); |
|
94 case EArmas: |
|
95 return GenerateArmasAsmFile(); |
|
96 default: |
|
97 assert(false); |
|
98 } |
|
99 return 0; |
|
100 } |
|
101 int FileDump::GenerateArmasAsmFile() |
87 { |
102 { |
88 DefFile *iDefFile = new DefFile(); |
103 DefFile *iDefFile = new DefFile(); |
89 SymbolList *aSymList; |
104 SymbolList *aSymList; |
90 aSymList = iDefFile->ReadDefFile(iParameterListInterface->DefInput()); |
105 aSymList = iDefFile->ReadDefFile(iParameterListInterface->DefInput()); |
|
106 char const *afileName = iParameterListInterface->E32ImageOutput(); |
91 |
107 |
92 FILE *fptr; |
108 FILE *fptr; |
93 |
109 |
94 if((fptr=fopen(afileName,"w"))==NULL) |
110 if((fptr=fopen(afileName,"w"))==NULL) |
95 { |
111 { |
153 } |
169 } |
154 return 0; |
170 return 0; |
155 } |
171 } |
156 |
172 |
157 /** |
173 /** |
|
174 Function to generate a GNU as ASM File. |
|
175 @param afileName - ASM File name |
|
176 @return 0 on success, otherwise throw error |
|
177 @internalComponent |
|
178 @released*/ |
|
179 int FileDump::GenerateGasAsmFile() |
|
180 { |
|
181 DefFile *iDefFile = new DefFile(); |
|
182 SymbolList *aSymList; |
|
183 aSymList = iDefFile->ReadDefFile(iParameterListInterface->DefInput()); |
|
184 char const *afileName = iParameterListInterface->E32ImageOutput(); |
|
185 FILE *fptr; |
|
186 if((fptr=fopen(afileName,"w"))==NULL) |
|
187 { |
|
188 throw FileError(FILEOPENERROR,(char*)afileName); |
|
189 } |
|
190 else |
|
191 { |
|
192 SymbolList::iterator aItr = aSymList->begin(); |
|
193 SymbolList::iterator last = aSymList->end(); |
|
194 Symbol *aSym; |
|
195 while( aItr != last) |
|
196 { |
|
197 aSym = *aItr; |
|
198 if(aSym->Absent()) |
|
199 { |
|
200 aItr++; |
|
201 continue; |
|
202 } |
|
203 fputs("\t.global ",fptr); |
|
204 fputs(aSym->SymbolName(),fptr); |
|
205 fputs("\n",fptr); |
|
206 aItr++; |
|
207 } |
|
208 fclose(fptr); |
|
209 } |
|
210 return 0; |
|
211 } |
|
212 /** |
158 Function to Dump E32 Image. |
213 Function to Dump E32 Image. |
159 @param afileName - E32 Image File name |
214 @param afileName - E32 Image File name |
160 @return 1 on success, otherwise throw error |
215 @return 1 on success, otherwise throw error |
161 @internalComponent |
216 @internalComponent |
162 @released |
217 @released |
163 */ |
218 */ |
164 int FileDump::DumpE32Image(const char* afileName) |
219 int FileDump::DumpE32Image() |
165 { |
220 { |
|
221 char const *afileName = iParameterListInterface->E32Input(); |
166 E32ImageFile *aE32Imagefile=new E32ImageFile(); |
222 E32ImageFile *aE32Imagefile=new E32ImageFile(); |
167 TInt result = aE32Imagefile->Open(afileName); |
223 TInt result = aE32Imagefile->Open(afileName); |
168 |
224 |
169 if (result > 0) |
225 if (result > 0) |
170 return 1; |
226 return 1; |