mirror of
https://github.com/frida/tinycc
synced 2024-12-28 23:59:41 +03:00
update
This commit is contained in:
parent
eb79471184
commit
bb07bf31aa
@ -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:
|
||||
|
||||
|
32
tcccoff.c
32
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;
|
||||
|
@ -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, ...)
|
||||
|
Loading…
Reference in New Issue
Block a user