From bb07bf31aae1bcb4c3590f61210c46c0d3a37433 Mon Sep 17 00:00:00 2001 From: bellard Date: Sat, 23 Oct 2004 22:52:58 +0000 Subject: update --- tcccoff.c | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) (limited to 'tcccoff.c') diff --git a/tcccoff.c b/tcccoff.c index 7f60ccf..ecc91ed 100644 --- a/tcccoff.c +++ b/tcccoff.c @@ -73,9 +73,8 @@ typedef struct { unsigned short dummy4; } AUXEF; -int tcc_output_coff(TCCState *s1, const char *OutFile) +int tcc_output_coff(TCCState *s1, FILE *f) { - FILE *f; Section *tcc_sect; SCNHDR *coff_sec; int file_pointer; @@ -84,12 +83,6 @@ int tcc_output_coff(TCCState *s1, const char *OutFile) FILHDR file_hdr; /* FILE HEADER STRUCTURE */ Section *stext, *sdata, *sbss; - f = fopen(OutFile, "wb"); - - if (!f) { - error("Unable to open output file"); - } - stext = FindSection(s1, ".text"); sdata = FindSection(s1, ".data"); sbss = FindSection(s1, ".bss"); @@ -237,7 +230,7 @@ int tcc_output_coff(TCCState *s1, const char *OutFile) EndAddress[nFuncs] = pc; FuncEntries[nFuncs] = (file_pointer - - LineNoFilePtr[nFuncs]) / LINESZ; + LineNoFilePtr[nFuncs]) / LINESZ - 1; LastLineNo[nFuncs++] = last_line_num + 1; } else { // beginning of function @@ -703,8 +696,6 @@ int tcc_output_coff(TCCState *s1, const char *OutFile) tcc_free(Coff_str_table); } - fclose(f); - return 0; } @@ -843,18 +834,13 @@ int FindCoffSymbolIndex(const char *func_name) return n; // total number of symbols } - - - - - BOOL OutputTheSection(Section * sect) { const char *s = sect->name; - if (s == ".text") + if (!strcmp(s, ".text")) return true; - else if (s == ".data") + else if (!strcmp(s, ".data")) return true; else return 0; @@ -862,15 +848,15 @@ BOOL OutputTheSection(Section * sect) short int GetCoffFlags(const char *s) { - if (s == ".text") + if (!strcmp(s, ".text")) return STYP_TEXT | STYP_DATA | STYP_ALIGN | 0x400; - else if (s == ".data") + else if (!strcmp(s, ".data")) return STYP_DATA; - else if (s == ".bss") + else if (!strcmp(s, ".bss")) return STYP_BSS; - else if (s == ".stack") + else if (!strcmp(s, ".stack")) return STYP_BSS | STYP_ALIGN | 0x200; - else if (s == ".cinit") + else if (!strcmp(s, ".cinit")) return STYP_COPY | STYP_DATA | STYP_ALIGN | 0x200; else return 0; -- cgit v1.3.1