aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tcc.c7
-rw-r--r--tccelf.c16
2 files changed, 15 insertions, 8 deletions
diff --git a/tcc.c b/tcc.c
index 9727dea..652b918 100644
--- a/tcc.c
+++ b/tcc.c
@@ -11094,14 +11094,7 @@ int main(int argc, char **argv)
} else if (s->output_type == TCC_OUTPUT_MEMORY) {
ret = tcc_run(s, argc - optind, argv + optind);
} else
-#ifdef TCC_TARGET_PE
- if (s->output_type != TCC_OUTPUT_OBJ) {
- ret = pe_output_file(s, outfile);
- } else
-#endif
- {
ret = tcc_output_file(s, outfile) ? 1 : 0;
- }
the_end:
/* XXX: cannot do it with bound checking because of the malloc hooks */
if (!do_bounds_check)
diff --git a/tccelf.c b/tccelf.c
index a3c594d..62f8c33 100644
--- a/tccelf.c
+++ b/tccelf.c
@@ -1132,7 +1132,7 @@ static void tcc_output_binary(TCCState *s1, FILE *f,
/* output an ELF file */
/* XXX: suppress unneeded sections */
-int tcc_output_file(TCCState *s1, const char *filename)
+int elf_output_file(TCCState *s1, const char *filename)
{
Elf32_Ehdr ehdr;
FILE *f;
@@ -1788,6 +1788,20 @@ int tcc_output_file(TCCState *s1, const char *filename)
return ret;
}
+int tcc_output_file(TCCState *s, const char *filename)
+{
+ int ret;
+#ifdef TCC_TARGET_PE
+ if (s->output_type != TCC_OUTPUT_OBJ) {
+ ret = pe_output_file(s, filename);
+ } else
+#endif
+ {
+ ret = elf_output_file(s, filename);
+ }
+ return ret;
+}
+
static void *load_data(int fd, unsigned long file_offset, unsigned long size)
{
void *data;