From 1fdfb7bbb93de952d295d2d375b41387bbf6d2b3 Mon Sep 17 00:00:00 2001 From: John van Groningen Date: Mon, 13 Dec 2010 11:02:08 +0000 Subject: put functions in areals.asm in different sections to enable optimizing linking, these sections are first called _T000, _T001 .. and renamed to .text using rename_Tn_sections.c --- rename_Tn_sections.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 rename_Tn_sections.c (limited to 'rename_Tn_sections.c') diff --git a/rename_Tn_sections.c b/rename_Tn_sections.c new file mode 100644 index 0000000..8b20348 --- /dev/null +++ b/rename_Tn_sections.c @@ -0,0 +1,140 @@ + +#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; +} -- cgit v1.2.3