diff options
| -rw-r--r-- | libtcc.c | 2 | ||||
| -rw-r--r-- | tcc.h | 1 | ||||
| -rw-r--r-- | tccpe.c | 1 |
3 files changed, 4 insertions, 0 deletions
@@ -1370,6 +1370,8 @@ static int tcc_set_linker(TCCState *s, const char *option) } else if (link_option(option, "soname=", &p)) { s->soname = copy_linker_arg(p); #ifdef TCC_TARGET_PE + } else if (link_option(option, "large-address-aware", &p)) { + s->pe_characteristics |= 0x20; } else if (link_option(option, "file-alignment=", &p)) { s->pe_file_align = strtoul(p, &end, 16); } else if (link_option(option, "stack=", &p)) { @@ -744,6 +744,7 @@ struct TCCState { #ifdef TCC_TARGET_PE /* PE info */ int pe_subsystem; + unsigned pe_characteristics; unsigned pe_file_align; unsigned pe_stack_size; # ifdef TCC_TARGET_X86_64 @@ -703,6 +703,7 @@ static int pe_write(struct pe_info *pe) pe_header.opthdr.SizeOfStackReserve = pe->s1->pe_stack_size; if (PE_DLL == pe->type) pe_header.filehdr.Characteristics = CHARACTERISTICS_DLL; + pe_header.filehdr.Characteristics |= pe->s1->pe_characteristics; sum = 0; pe_fwrite(&pe_header, sizeof pe_header, op, &sum); |
