https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85007
--- Comment #5 from Eric Reischer <emr-gnu at hev dot psu.edu> --- The multilib switch (-m32 -- which is undocumented as being valid for gnatmake incidentally) already is being passed to "gnatmake" -- it properly passes this flag to gcc when compiling the spec and body files, along with the "--RTS" flag properly set. The gnatbind command generated (and output) is: gnatbind-7.3 -E -ws -v --RTS=32 -x driver.ali gnatbind-7.3 -E -ws -v --RTS=32 -F=GNAT-TEMP-000004.TMP -x driver.ali GNATBIND 7.3.0 Copyright (C) 1995-2017, Free Software Foundation, Inc. Binding: driver.ali No errors ----- It should be noted that at the top of the b~driver.ali file generated are the following lines: V "GNAT Lib v7" A -gnatA A -gnatWb A -gnatiw A -g A -gnatws A -mtune=nehalem A -march=x86-64 P ZX As noted in the OP, my --with-tune=nehalem explains that line, but the -march line shouldn't be appearing if --RTS=32 is being passed, correct? The gnatlink command generated (and output) is: gnatlink-7.3 driver.ali -g -v <object files of the program> --GCC=gcc-7.3 -m32 -o driver GNATLINK 7.3.0 Copyright (C) 1994-2017, Free Software Foundation, Inc. gcc-7 -c -gnatA -gnatWb -gnatiw -g -gnatws b~driver.adb gcc-7.3 b~driver.o <other args and objects> -m32 -o driver <some other irrelevant Ada link paths> ld: i386:x86-64 architecture of input file `b~driver.o' is incompatible with i386 output ld: b~driver.o: file class ELFCLASS64 incompatible with ELFCLASS32 ld: final link failed: File in wrong format So, the "-m32" multiarch flag is not being passed to the first tool command executed by gnatlink (gcc-7) to compile b~driver.adb, even though "-m32" is passed as an argument to gnatmake.