On 11/08/2018 09:45 AM, Alexandre Oliva wrote: > On Nov 7, 2018, JonY <10wa...@gmail.com> wrote: > >> On 11/07/2018 08:34 AM, Alexandre Oliva wrote: >>> On Nov 1, 2018, JonY wrote: >>> >>>> Looks like it causes an error on 64bit: >>>> /usr/libexec/gcc/x86_64-w64-mingw32/ld: unrecognized option >>>> '--large-address-aware' >>> >>> What does? The patch I suggested? The current trunk? >>> >>> What was the command in this case? How was the toolchain configured? > >> No it's just a quick test to see how x86_64-w64-mingw32 reacts to >> --large-address-aware, it doesn't play well. > > I understand, but you're getting a different result from what I am, I'd > like to understand why before attempting to "fix" something that AFAICT > is correct and behaving just as intended. Maybe there are valid reasons > to drop --large-address-aware altogether on x86_64-w64-mingw32, but I'd > like to understand why, as in, how the error above came about for you, > when it didn't for me. > > I built gcc and binutils in a single tree, with x86_64-w64-mingw32 as > the target, and the resulting linker would accept --large-address-aware > in the -mi386-pe emulation, and that emulation was explicitly enabled > when building -m32 binaries. Does your w64 toolchain deviate from any > of these facts? >
No, no. By quick I just mean using -Wl,--large-address-aware on an existing gcc install, nothing complex. Sorry about not making it clear. > >> x86_64-mingw32 is not used as far as I know, only with "w64" or "pc". > > x86_64-mingw32's canonical form is x86_64-pc-mingw32, and they're > equivalent, so whatever you say or know about the latter should apply to > the shorter form as well. Likewise, my questions and doubts about the > shorter form apply equally to the canonical one. > >> The "w64" carries a special meaning to gcc dating back to the early >> 64bit port. It basically tells gcc to use mingw-w64 specific features >> that are not found on the regular mingw.org CRT at the time. > > I see. So -pc- and -w64- are not supposed to be equivalent indeed. > Thanks. > >> This might be affecting the "pc" vendor build, can you check >> x86_64-pc-mingw32 just to see if it is affected? > > I did. Its -m32 mode seems broken to me. As I wrote, the linker > emulation is never specified, so it would build 64-bit binaries even > when given -m32. Because it lacks explicit linker emulation > specification, it can't have --large-address-aware specified either. > > In my link tests, i686-mingw32 and x86_64-w64-mingw32 both worked (in > that their respective linkers wouldn't reject the --large-address-aware > passed by gcc) with the --large-address-aware patch that is installed in > trunk. Ditto with the incremental patch I posted last week, that would > have only improved x86_64-pc-mingw32. > I now understand the problem, thanks for the clarification about the patch. Patch is OK.
signature.asc
Description: OpenPGP digital signature