Fork an instance of GDB so that the child invokes GCC.  This insulates
GDB from GCC unexpected exits, or exits on error.  The child GDB will
write the filename back to the parent, then pause().