This commit is contained in:
bellard 2004-10-23 22:52:58 +00:00
parent eb79471184
commit bb07bf31aa
4 changed files with 23 additions and 23 deletions

View File

@ -14,6 +14,9 @@ version 0.9.21:
- '-Ttext' linker option
- section alignment fixes
- bit fields fixes
- do not generate code for unused inline functions
- '-oformat' linker option.
- added 'binary' output format.
version 0.9.20:

View File

@ -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;

View File

@ -1599,6 +1599,15 @@ void longlong_test(void)
printf("%lld\n", value(&a));
}
lloptest(0x80000000, 0);
/* another long long spill test */
{
long long *p, v;
v = 1;
p = &v;
p[0]++;
printf("%lld\n", *p);
}
}
void vprintf1(const char *fmt, ...)

View File

@ -181,6 +181,8 @@
DEF_ASM(skip)
DEF_ASM(space)
DEF_ASM(string)
DEF_ASM(asciz)
DEF_ASM(ascii)
DEF_ASM(globl)
DEF_ASM(global)
DEF_ASM(text)