win32: support "-Wl,--large-address-aware" option

master
Pavlas, Zdenek 2016-12-12 06:52:45 -08:00
parent 9b3e4c5895
commit 0486939291
3 changed files with 4 additions and 0 deletions

View File

@ -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)) {

1
tcc.h
View File

@ -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

View File

@ -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);