Laurent GUERBY wrote: > gnatmake uses Non_Blocking_Spawn to call the compiler (gnatmake supports > "-j N" like make), but for the gnatlink call (we see in the "ps fauxww") > it uses in gcc/ada/make.adb: > > procedure Link > ... > GNAT.OS_Lib.Spawn (Gnatlink_Path.all, Link_Args, Success); > end Link; > > which ends up calling gcc/ada/s-os_lib.adb > > Spawn_Internal (Program_Name, Args, Result, Junk, Blocking => > True); > ... > function Portable_Spawn (Args : Address) return Integer; > pragma Import (C, Portable_Spawn, "__gnat_portable_spawn"); > > which ends up calling in gcc/ada/adaint.c: > > int > __gnat_portable_spawn (char *args[]) > ... > pid = fork (); > if (pid < 0) > return -1; > > if (pid == 0) > { > /* The child. */ > if (execv (args[0], MAYBE_TO_PTR32 (args)) != 0) > _exit (1); > } > > /* The parent. */ > finished = waitpid (pid, &status, 0); > > if (finished != pid || WIFEXITED (status) == 0) > return -1; > > return WEXITSTATUS (status); > }
Hmpf. That seems to rule out that theory. Gnatlink is still spawning the gcc driver to link, rather than the linker itself; maybe the driver's doing something wrong? Is collect-ld a shell script or an executable on your host? cheers, DaveK