forked from Mirrors/tinycc
add binary executable output support
parent
bc48cc1edb
commit
2349efa61b
9
tccelf.c
9
tccelf.c
|
@ -1345,7 +1345,7 @@ int elf_output_file(TCCState *s1, const char *filename)
|
||||||
file_type = s1->output_type;
|
file_type = s1->output_type;
|
||||||
s1->nb_errors = 0;
|
s1->nb_errors = 0;
|
||||||
|
|
||||||
if (file_type != TCC_OUTPUT_OBJ) {
|
if ((file_type != TCC_OUTPUT_OBJ) && (s1->output_type != TCC_OUTPUT_FORMAT_BINARY)) {
|
||||||
tcc_add_runtime(s1);
|
tcc_add_runtime(s1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1359,14 +1359,15 @@ int elf_output_file(TCCState *s1, const char *filename)
|
||||||
if (file_type != TCC_OUTPUT_OBJ) {
|
if (file_type != TCC_OUTPUT_OBJ) {
|
||||||
relocate_common_syms();
|
relocate_common_syms();
|
||||||
|
|
||||||
tcc_add_linker_symbols(s1);
|
if (s1->output_type != TCC_OUTPUT_FORMAT_BINARY)
|
||||||
|
tcc_add_linker_symbols(s1);
|
||||||
|
|
||||||
if (!s1->static_link) {
|
if ((!s1->static_link) && (s1->output_type != TCC_OUTPUT_FORMAT_BINARY)) {
|
||||||
const char *name;
|
const char *name;
|
||||||
int sym_index, index;
|
int sym_index, index;
|
||||||
ElfW(Sym) *esym, *sym_end;
|
ElfW(Sym) *esym, *sym_end;
|
||||||
|
|
||||||
if (file_type == TCC_OUTPUT_EXE) {
|
if ((file_type == TCC_OUTPUT_EXE) && (s1->output_type != TCC_OUTPUT_FORMAT_BINARY)) {
|
||||||
char *ptr;
|
char *ptr;
|
||||||
/* add interpreter section only if executable */
|
/* add interpreter section only if executable */
|
||||||
interp = new_section(s1, ".interp", SHT_PROGBITS, SHF_ALLOC);
|
interp = new_section(s1, ".interp", SHT_PROGBITS, SHF_ALLOC);
|
||||||
|
|
Loading…
Reference in New Issue