#include int main (int argc,char **argv) { FILE *fs,*fd; char header[20]; int f_nscns,f_nsyms,f_opthdr,f_symptr; int section_n,symbol_n,offset; if (argc!=3){ printf ("usage: rename_Tn_sections source_object_file destination_object_file\n"); return 1; } fs=fopen (argv[1],"rb"); if (fs==NULL){ printf ("opening file %s failed\n",argv[1]); return 1; } fd=fopen (argv[2],"wb"); if (fd==NULL){ printf ("creating file %s failed\n",argv[2]); return 1; } fread (header,1,20,fs); fwrite (header,1,20,fd); f_nscns = *(short *)&header[2]; f_nsyms = *(int*)&header[12]; f_opthdr = *(short*)&header[16]; f_symptr = *(int*)&header[8]; /* printf ("number of sections = %d\n",f_nscns); printf ("number of symbols = %d\n",f_nsyms); printf ("symbol table offset = %d\n",f_symptr); printf ("opthdr = %d\n",f_opthdr); */ for (section_n=0; section_n0){ fread (symbol,1,18,fs); fwrite (symbol,1,18,fd); --n_numaux; ++symbol_n; } } for (;;){ int c; c=fgetc (fs); if (c==EOF) break; fputc (c,fd); } fclose (fs); fclose (fd); return 0; }