@@ -208,12 +208,11 @@ static RList *relocs(RBinFile *bf) {
208208 reloc_table [i ].data_offset = reloc_data_offset ;
209209
210210 RBinReloc * reloc = R_NEW0 (RBinReloc );
211- if (reloc ) {
212- reloc -> type = R_BIN_RELOC_32 ;
213- reloc -> paddr = reloc_table [i ].addr_to_patch ;
214- reloc -> vaddr = reloc -> paddr ;
215- r_list_append (list , reloc );
216- }
211+ reloc -> type = R_BIN_RELOC_32 ;
212+ // reloc->ntype = R_BIN_RELOC_32;
213+ reloc -> paddr = reloc_table [i ].addr_to_patch ;
214+ reloc -> vaddr = reloc -> paddr ;
215+ r_list_append (list , reloc );
217216 }
218217 }
219218 free (reloc_pointer_table );
@@ -226,6 +225,27 @@ static RList *relocs(RBinFile *bf) {
226225 return NULL ;
227226}
228227
228+ static const char * bflt_cpu_to_arch (ut32 cpu_type ) {
229+ switch (cpu_type ) {
230+ case BFLT_CPU_68K :
231+ return "m68k" ;
232+ case BFLT_CPU_386 :
233+ return "x86" ;
234+ case BFLT_CPU_ARM :
235+ return "arm" ;
236+ case BFLT_CPU_MIPS :
237+ return "mips" ;
238+ case BFLT_CPU_PPC :
239+ return "ppc" ;
240+ case BFLT_CPU_SH :
241+ return "sh" ;
242+ case BFLT_CPU_COLDFIRE :
243+ return "m68k" ; /* ColdFire is 68k variant */
244+ default :
245+ return "arm" ; /* default to ARM */
246+ }
247+ }
248+
229249static RBinInfo * info (RBinFile * bf ) {
230250 RBinInfo * info = R_NEW0 (RBinInfo );
231251 struct r_bin_bflt_obj * obj = R_UNWRAP3 (bf , bo , bin_obj );
@@ -235,7 +255,8 @@ static RBinInfo *info(RBinFile *bf) {
235255 info -> type = strdup ("bFLT (Executable file)" );
236256 info -> os = strdup ("Linux" );
237257 info -> subsystem = strdup ("Linux" );
238- info -> arch = strdup ("arm" );
258+ const char * arch = obj ? bflt_cpu_to_arch (obj -> cpu_type ): "arm" ;
259+ info -> arch = strdup (arch );
239260 info -> big_endian = obj ? obj -> endian : R_SYS_ENDIAN_LITTLE ;
240261 info -> bits = 32 ;
241262 info -> has_va = false;
0 commit comments