It appears that passing -g to the assembly phase of C compilation
results in an object file with broken debug info, that gdb can't
read. This is probably a bug in gcc and/or binutils, but this change
means that I can't avoid it (unless we were to hack the pipeline to
do .c->.s->.o in one stage instead of two).