clang-format on arm-gen.c and tcccoff.c.

They now mostly follow the same coding style as everything else.
This commit is contained in:
gus knight 2015-07-27 14:26:15 -04:00
parent 9e1b6bf517
commit 694d0fdade
2 changed files with 2082 additions and 2067 deletions

1339
arm-gen.c

File diff suppressed because it is too large Load diff

168
tcccoff.c
View file

@ -38,14 +38,14 @@ int EndAddress[MAX_FUNCS];
int LastLineNo[MAX_FUNCS]; int LastLineNo[MAX_FUNCS];
int FuncEntries[MAX_FUNCS]; int FuncEntries[MAX_FUNCS];
int OutputTheSection(Section * sect); int OutputTheSection(Section* sect);
short int GetCoffFlags(const char *s); short int GetCoffFlags(const char* s);
void SortSymbolTable(void); void SortSymbolTable(void);
Section *FindSection(TCCState * s1, const char *sname); Section* FindSection(TCCState* s1, const char* sname);
int C67_main_entry_point; int C67_main_entry_point;
int FindCoffSymbolIndex(const char *func_name); int FindCoffSymbolIndex(const char* func_name);
int nb_syms; int nb_syms;
typedef struct { typedef struct {
@ -74,15 +74,15 @@ typedef struct {
unsigned short dummy4; unsigned short dummy4;
} AUXEF; } AUXEF;
ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f) ST_FUNC int tcc_output_coff(TCCState* s1, FILE* f)
{ {
Section *tcc_sect; Section* tcc_sect;
SCNHDR *coff_sec; SCNHDR* coff_sec;
int file_pointer; int file_pointer;
char *Coff_str_table, *pCoff_str_table; char* Coff_str_table, *pCoff_str_table;
int CoffTextSectionNo, coff_nb_syms; int CoffTextSectionNo, coff_nb_syms;
FILHDR file_hdr; /* FILE HEADER STRUCTURE */ FILHDR file_hdr; /* FILE HEADER STRUCTURE */
Section *stext, *sdata, *sbss; Section* stext, *sdata, *sbss;
int i, NSectionsToOutput = 0; int i, NSectionsToOutput = 0;
Coff_str_table = pCoff_str_table = NULL; Coff_str_table = pCoff_str_table = NULL;
@ -102,14 +102,14 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
o_filehdr.magic = 0x0108; /* see magic.h */ o_filehdr.magic = 0x0108; /* see magic.h */
o_filehdr.vstamp = 0x0190; /* version stamp */ o_filehdr.vstamp = 0x0190; /* version stamp */
o_filehdr.tsize = stext->data_offset; /* text size in bytes, padded to FW bdry */ o_filehdr.tsize =
stext->data_offset; /* text size in bytes, padded to FW bdry */
o_filehdr.dsize = sdata->data_offset; /* initialized data " " */ o_filehdr.dsize = sdata->data_offset; /* initialized data " " */
o_filehdr.bsize = sbss->data_offset; /* uninitialized data " " */ o_filehdr.bsize = sbss->data_offset; /* uninitialized data " " */
o_filehdr.entrypt = C67_main_entry_point; /* entry pt. */ o_filehdr.entrypt = C67_main_entry_point; /* entry pt. */
o_filehdr.text_start = stext->sh_addr; /* base of text used for this file */ o_filehdr.text_start = stext->sh_addr; /* base of text used for this file */
o_filehdr.data_start = sdata->sh_addr; /* base of data used for this file */ o_filehdr.data_start = sdata->sh_addr; /* base of data used for this file */
// create all the section headers // create all the section headers
file_pointer = FILHSZ + sizeof(AOUTHDR); file_pointer = FILHSZ + sizeof(AOUTHDR);
@ -124,7 +124,9 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
NSectionsToOutput++; NSectionsToOutput++;
if (CoffTextSectionNo == -1 && tcc_sect == stext) if (CoffTextSectionNo == -1 && tcc_sect == stext)
CoffTextSectionNo = NSectionsToOutput; // rem which coff sect number the .text sect is CoffTextSectionNo = NSectionsToOutput; // rem which coff sect
// number the .text sect
// is
strcpy(coff_sec->s_name, tcc_sect->name); /* section name */ strcpy(coff_sec->s_name, tcc_sect->name); /* section name */
@ -148,14 +150,14 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
// now loop through and determine file pointer locations // now loop through and determine file pointer locations
// for the raw data // for the raw data
for (i = 1; i < s1->nb_sections; i++) { for (i = 1; i < s1->nb_sections; i++) {
coff_sec = &section_header[i]; coff_sec = &section_header[i];
tcc_sect = s1->sections[i]; tcc_sect = s1->sections[i];
if (OutputTheSection(tcc_sect)) { if (OutputTheSection(tcc_sect)) {
// put raw data // put raw data
coff_sec->s_scnptr = file_pointer; /* file ptr to raw data for section */ coff_sec->s_scnptr =
file_pointer; /* file ptr to raw data for section */
file_pointer += coff_sec->s_size; file_pointer += coff_sec->s_size;
} }
} }
@ -192,28 +194,25 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
// also find association between source file name and function // also find association between source file name and function
// so we can sort the symbol table // so we can sort the symbol table
Stab_Sym* sym, *sym_end;
Stab_Sym *sym, *sym_end;
char func_name[MAX_FUNC_NAME_LENGTH], char func_name[MAX_FUNC_NAME_LENGTH],
last_func_name[MAX_FUNC_NAME_LENGTH]; last_func_name[MAX_FUNC_NAME_LENGTH];
unsigned long func_addr, last_pc, pc; unsigned long func_addr, last_pc, pc;
const char *incl_files[INCLUDE_STACK_SIZE]; const char* incl_files[INCLUDE_STACK_SIZE];
int incl_index, len, last_line_num; int incl_index, len, last_line_num;
const char *str, *p; const char* str, *p;
coff_sec->s_lnnoptr = file_pointer; /* file ptr to linno */ coff_sec->s_lnnoptr = file_pointer; /* file ptr to linno */
func_name[0] = '\0'; func_name[0] = '\0';
func_addr = 0; func_addr = 0;
incl_index = 0; incl_index = 0;
last_func_name[0] = '\0'; last_func_name[0] = '\0';
last_pc = 0xffffffff; last_pc = 0xffffffff;
last_line_num = 1; last_line_num = 1;
sym = (Stab_Sym *) stab_section->data + 1; sym = (Stab_Sym*)stab_section->data + 1;
sym_end = sym_end =
(Stab_Sym *) (stab_section->data + (Stab_Sym*)(stab_section->data + stab_section->data_offset);
stab_section->data_offset);
nFuncs = 0; nFuncs = 0;
while (sym < sym_end) { while (sym < sym_end) {
@ -231,8 +230,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
func_addr = 0; func_addr = 0;
EndAddress[nFuncs] = pc; EndAddress[nFuncs] = pc;
FuncEntries[nFuncs] = FuncEntries[nFuncs] =
(file_pointer - (file_pointer - LineNoFilePtr[nFuncs]) / LINESZ - 1;
LineNoFilePtr[nFuncs]) / LINESZ - 1;
LastLineNo[nFuncs++] = last_line_num + 1; LastLineNo[nFuncs++] = last_line_num + 1;
} else { } else {
// beginning of function // beginning of function
@ -241,9 +239,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
coff_sec->s_nlnno++; coff_sec->s_nlnno++;
file_pointer += LINESZ; file_pointer += LINESZ;
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data +
sym->n_strx;
p = strchr(str, ':'); p = strchr(str, ':');
if (!p) { if (!p) {
@ -281,8 +277,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
break; break;
/* include files */ /* include files */
case N_BINCL: case N_BINCL:
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data + sym->n_strx;
add_incl: add_incl:
if (incl_index < INCLUDE_STACK_SIZE) { if (incl_index < INCLUDE_STACK_SIZE) {
incl_files[incl_index++] = str; incl_files[incl_index++] = str;
@ -296,9 +291,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
if (sym->n_strx == 0) { if (sym->n_strx == 0) {
incl_index = 0; /* end of translation unit */ incl_index = 0; /* end of translation unit */
} else { } else {
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data +
sym->n_strx;
/* do not add path */ /* do not add path */
len = strlen(str); len = strlen(str);
if (len > 0 && str[len - 1] != '/') if (len > 0 && str[len - 1] != '/')
@ -309,7 +302,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
sym++; sym++;
} }
} }
} }
file_hdr.f_symptr = file_pointer; /* file pointer to symtab */ file_hdr.f_symptr = file_pointer; /* file pointer to symtab */
@ -323,7 +315,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
// OK now we are all set to write the file // OK now we are all set to write the file
fwrite(&file_hdr, FILHSZ, 1, f); fwrite(&file_hdr, FILHSZ, 1, f);
fwrite(&o_filehdr, sizeof(o_filehdr), 1, f); fwrite(&o_filehdr, sizeof(o_filehdr), 1, f);
@ -361,7 +352,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
} }
} }
// group the symbols in order of filename, func1, func2, etc // group the symbols in order of filename, func1, func2, etc
// finally global symbols // finally global symbols
@ -377,13 +367,12 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
if (s1->do_debug && tcc_sect == stext) { if (s1->do_debug && tcc_sect == stext) {
// count how many line nos data // count how many line nos data
Stab_Sym* sym, *sym_end;
Stab_Sym *sym, *sym_end;
char func_name[128], last_func_name[128]; char func_name[128], last_func_name[128];
unsigned long func_addr, last_pc, pc; unsigned long func_addr, last_pc, pc;
const char *incl_files[INCLUDE_STACK_SIZE]; const char* incl_files[INCLUDE_STACK_SIZE];
int incl_index, len, last_line_num; int incl_index, len, last_line_num;
const char *str, *p; const char* str, *p;
LINENO CoffLineNo; LINENO CoffLineNo;
@ -393,10 +382,9 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
last_func_name[0] = '\0'; last_func_name[0] = '\0';
last_pc = 0; last_pc = 0;
last_line_num = 1; last_line_num = 1;
sym = (Stab_Sym *) stab_section->data + 1; sym = (Stab_Sym*)stab_section->data + 1;
sym_end = sym_end =
(Stab_Sym *) (stab_section->data + (Stab_Sym*)(stab_section->data + stab_section->data_offset);
stab_section->data_offset);
while (sym < sym_end) { while (sym < sym_end) {
switch (sym->n_type) { switch (sym->n_type) {
@ -415,10 +403,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
} else { } else {
// beginning of function // beginning of function
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data +
sym->n_strx;
p = strchr(str, ':'); p = strchr(str, ':');
if (!p) { if (!p) {
@ -448,7 +433,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
case N_SLINE: case N_SLINE:
pc = sym->n_value + func_addr; pc = sym->n_value + func_addr;
/* XXX: slow! */ /* XXX: slow! */
strcpy(last_func_name, func_name); strcpy(last_func_name, func_name);
@ -471,8 +455,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
/* include files */ /* include files */
case N_BINCL: case N_BINCL:
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data + sym->n_strx;
add_incl2: add_incl2:
if (incl_index < INCLUDE_STACK_SIZE) { if (incl_index < INCLUDE_STACK_SIZE) {
incl_files[incl_index++] = str; incl_files[incl_index++] = str;
@ -486,9 +469,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
if (sym->n_strx == 0) { if (sym->n_strx == 0) {
incl_index = 0; /* end of translation unit */ incl_index = 0; /* end of translation unit */
} else { } else {
str = str = (const char*)stabstr_section->data + sym->n_strx;
(const char *) stabstr_section->data +
sym->n_strx;
/* do not add path */ /* do not add path */
len = strlen(str); len = strlen(str);
if (len > 0 && str[len - 1] != '/') if (len > 0 && str[len - 1] != '/')
@ -509,17 +490,16 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
AUXBF auxbf; AUXBF auxbf;
AUXEF auxef; AUXEF auxef;
int i; int i;
Elf32_Sym *p; Elf32_Sym* p;
const char *name; const char* name;
int nstr; int nstr;
int n = 0; int n = 0;
Coff_str_table = (char *) tcc_malloc(MAX_STR_TABLE); Coff_str_table = (char*)tcc_malloc(MAX_STR_TABLE);
pCoff_str_table = Coff_str_table; pCoff_str_table = Coff_str_table;
nstr = 0; nstr = 0;
p = (Elf32_Sym *) symtab_section->data; p = (Elf32_Sym*)symtab_section->data;
for (i = 0; i < nb_syms; i++) { for (i = 0; i < nb_syms; i++) {
@ -536,8 +516,7 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
tcc_error("String table too large"); tcc_error("String table too large");
csym._n._n_n._n_zeroes = 0; csym._n._n_n._n_zeroes = 0;
csym._n._n_n._n_offset = csym._n._n_n._n_offset = pCoff_str_table - Coff_str_table + 4;
pCoff_str_table - Coff_str_table + 4;
strcpy(pCoff_str_table, name); strcpy(pCoff_str_table, name);
pCoff_str_table += strlen(name) + 1; // skip over null pCoff_str_table += strlen(name) + 1; // skip over null
@ -648,7 +627,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
csym.n_sclass = C_LABEL; csym.n_sclass = C_LABEL;
} }
csym.n_value = p->st_value; csym.n_value = p->st_value;
csym.n_scnum = 2; csym.n_scnum = 2;
csym.n_numaux = 1; csym.n_numaux = 1;
@ -662,7 +640,6 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
fwrite(&auxfunc, 18, 1, f); fwrite(&auxfunc, 18, 1, f);
n++; n++;
n++; n++;
} }
p++; p++;
@ -685,21 +662,18 @@ ST_FUNC int tcc_output_coff(TCCState *s1, FILE *f)
return 0; return 0;
} }
// group the symbols in order of filename, func1, func2, etc // group the symbols in order of filename, func1, func2, etc
// finally global symbols // finally global symbols
void SortSymbolTable(void) void SortSymbolTable(void)
{ {
int i, j, k, n = 0; int i, j, k, n = 0;
Elf32_Sym *p, *p2, *NewTable; Elf32_Sym* p, *p2, *NewTable;
char *name, *name2; char* name, *name2;
NewTable = (Elf32_Sym *) tcc_malloc(nb_syms * sizeof(Elf32_Sym)); NewTable = (Elf32_Sym*)tcc_malloc(nb_syms * sizeof(Elf32_Sym));
p = (Elf32_Sym *) symtab_section->data;
p = (Elf32_Sym*)symtab_section->data;
// find a file symbol, copy it over // find a file symbol, copy it over
// then scan the whole symbol list and copy any function // then scan the whole symbol list and copy any function
@ -707,20 +681,19 @@ void SortSymbolTable(void)
for (i = 0; i < nb_syms; i++) { for (i = 0; i < nb_syms; i++) {
if (p->st_info == 4) { if (p->st_info == 4) {
name = (char *) symtab_section->link->data + p->st_name; name = (char*)symtab_section->link->data + p->st_name;
// this is a file symbol, copy it over // this is a file symbol, copy it over
NewTable[n++] = *p; NewTable[n++] = *p;
p2 = (Elf32_Sym *) symtab_section->data; p2 = (Elf32_Sym*)symtab_section->data;
for (j = 0; j < nb_syms; j++) { for (j = 0; j < nb_syms; j++) {
if (p2->st_info == 0x12) { if (p2->st_info == 0x12) {
// this is a func symbol // this is a func symbol
name2 = name2 = (char*)symtab_section->link->data + p2->st_name;
(char *) symtab_section->link->data + p2->st_name;
// find the function data index // find the function data index
@ -730,7 +703,8 @@ void SortSymbolTable(void)
} }
if (k >= nFuncs) { if (k >= nFuncs) {
tcc_error("debug (sort) info can't find function: %s", name2); tcc_error("debug (sort) info can't find function: %s",
name2);
} }
if (strcmp(AssociatedFile[k], name) == 0) { if (strcmp(AssociatedFile[k], name) == 0) {
@ -748,7 +722,7 @@ void SortSymbolTable(void)
// now all the filename and func symbols should have been copied over // now all the filename and func symbols should have been copied over
// copy all the rest over (all except file and funcs) // copy all the rest over (all except file and funcs)
p = (Elf32_Sym *) symtab_section->data; p = (Elf32_Sym*)symtab_section->data;
for (i = 0; i < nb_syms; i++) { for (i = 0; i < nb_syms; i++) {
if (p->st_info != 4 && p->st_info != 0x12) { if (p->st_info != 4 && p->st_info != 0x12) {
NewTable[n++] = *p; NewTable[n++] = *p;
@ -761,7 +735,7 @@ void SortSymbolTable(void)
// copy it all back // copy it all back
p = (Elf32_Sym *) symtab_section->data; p = (Elf32_Sym*)symtab_section->data;
for (i = 0; i < nb_syms; i++) { for (i = 0; i < nb_syms; i++) {
*p++ = NewTable[i]; *p++ = NewTable[i];
} }
@ -769,18 +743,17 @@ void SortSymbolTable(void)
tcc_free(NewTable); tcc_free(NewTable);
} }
int FindCoffSymbolIndex(const char* func_name)
int FindCoffSymbolIndex(const char *func_name)
{ {
int i, n = 0; int i, n = 0;
Elf32_Sym *p; Elf32_Sym* p;
char *name; char* name;
p = (Elf32_Sym *) symtab_section->data; p = (Elf32_Sym*)symtab_section->data;
for (i = 0; i < nb_syms; i++) { for (i = 0; i < nb_syms; i++) {
name = (char *) symtab_section->link->data + p->st_name; name = (char*)symtab_section->link->data + p->st_name;
if (p->st_info == 4) { if (p->st_info == 4) {
// put a filename symbol // put a filename symbol
@ -814,9 +787,9 @@ int FindCoffSymbolIndex(const char *func_name)
return n; // total number of symbols return n; // total number of symbols
} }
int OutputTheSection(Section * sect) int OutputTheSection(Section* sect)
{ {
const char *s = sect->name; const char* s = sect->name;
if (!strcmp(s, ".text")) if (!strcmp(s, ".text"))
return 1; return 1;
@ -826,7 +799,7 @@ int OutputTheSection(Section * sect)
return 0; return 0;
} }
short int GetCoffFlags(const char *s) short int GetCoffFlags(const char* s)
{ {
if (!strcmp(s, ".text")) if (!strcmp(s, ".text"))
return STYP_TEXT | STYP_DATA | STYP_ALIGN | 0x400; return STYP_TEXT | STYP_DATA | STYP_ALIGN | 0x400;
@ -842,9 +815,9 @@ short int GetCoffFlags(const char *s)
return 0; return 0;
} }
Section *FindSection(TCCState * s1, const char *sname) Section* FindSection(TCCState* s1, const char* sname)
{ {
Section *s; Section* s;
int i; int i;
for (i = 1; i < s1->nb_sections; i++) { for (i = 1; i < s1->nb_sections; i++) {
@ -858,13 +831,13 @@ Section *FindSection(TCCState * s1, const char *sname)
return 0; return 0;
} }
ST_FUNC int tcc_load_coff(TCCState * s1, int fd) ST_FUNC int tcc_load_coff(TCCState* s1, int fd)
{ {
// tktk TokenSym *ts; // tktk TokenSym *ts;
FILE *f; FILE* f;
unsigned int str_size; unsigned int str_size;
char *Coff_str_table, *name; char* Coff_str_table, *name;
int i, k; int i, k;
struct syment csym; struct syment csym;
char name2[9]; char name2[9];
@ -889,8 +862,7 @@ ST_FUNC int tcc_load_coff(TCCState * s1, int fd)
if (fread(&str_size, sizeof(int), 1, f) != 1) if (fread(&str_size, sizeof(int), 1, f) != 1)
tcc_error("error reading .out file for input"); tcc_error("error reading .out file for input");
Coff_str_table = (char*)tcc_malloc(str_size);
Coff_str_table = (char *) tcc_malloc(str_size);
if (fread(Coff_str_table, str_size - 4, 1, f) != 1) if (fread(Coff_str_table, str_size - 4, 1, f) != 1)
tcc_error("error reading .out file for input"); tcc_error("error reading .out file for input");
@ -920,11 +892,15 @@ ST_FUNC int tcc_load_coff(TCCState * s1, int fd)
name = name2; name = name2;
} }
} }
// if (strcmp("_DAC_Buffer",name)==0) // tktk // if (strcmp("_DAC_Buffer",name)==0) // tktk
// name[0]=0; // name[0]=0;
if (((csym.n_type & 0x30) == 0x20 && csym.n_sclass == 0x2) || ((csym.n_type & 0x30) == 0x30 && csym.n_sclass == 0x2) || (csym.n_type == 0x4 && csym.n_sclass == 0x2) || (csym.n_type == 0x8 && csym.n_sclass == 0x2) || // structures if (((csym.n_type & 0x30) == 0x20 && csym.n_sclass == 0x2) ||
(csym.n_type == 0x18 && csym.n_sclass == 0x2) || // pointer to structure ((csym.n_type & 0x30) == 0x30 && csym.n_sclass == 0x2) ||
(csym.n_type == 0x4 && csym.n_sclass == 0x2) ||
(csym.n_type == 0x8 && csym.n_sclass == 0x2) || // structures
(csym.n_type == 0x18 &&
csym.n_sclass == 0x2) || // pointer to structure
(csym.n_type == 0x7 && csym.n_sclass == 0x2) || // doubles (csym.n_type == 0x7 && csym.n_sclass == 0x2) || // doubles
(csym.n_type == 0x6 && csym.n_sclass == 0x2)) // floats (csym.n_type == 0x6 && csym.n_sclass == 0x2)) // floats
{ {