> the trouble here is that go's src/libmach/8obj.c has '#include > "../cmd/8l/8.out.h"', and 8.out.h now has the newly added '#include > "../ld/textflag.h"'. > > i see now that the kernel source has an instance of this, in > /sys/src/9/pc: 'fns.h:1: #include "../port/portfns.h"', but i'm not sure > how that is treated differently from this situation.
it is different because -I../port is part of CFLAGS. i've just verified that the plan 9 c compilers interpret relative paths relative to the original source file, not any included files, but -p interprets relative to the file doing the including. imo the compilers should be fixed, but it might require a few fixes. the easiest (smallest delta) solution would be for 8.out.h to include "../../cmd/ld/textflag.h" instead of "../ld/textflag.h". i suppose this is just another reason not to include include files. ☺ - erik