Conditional compilation of .importobj doesn't raise an undefined label error when it should
This is the smallest example I could come up with to show the problem. Imagine this is the contents of test.asm:
.gba
.thumb
.create "test.gba", 0x0
bl foo
.ifdef NOT_DEFINED
.importobj "foo.o"
.endif
.close
foo.o exists and exports the symbol foo.
This should report an error about Undefined label "foo", but it doesn't. It is accepted without complaints.
It does correctly report the error if the .importobj line is commented out or replaced with foo: or a .definelabel for foo. Additionally, if foo.o doesn't actually export foo, it also correctly reports the error (though that's hardly surprising).
The bug also manifests like this:
.gba
.thumb
.create "test.gba", 0x08000000
.ifdef NOT_DEFINED
.importobj "nonexistant.o"
.endif
.close
If nonexistent.o doesn't exist, ARMIPS will nonsensically complain about error: Could not load library.
Since both are caused by ARMIPS reading object files when it shouldn't (or attempting to, in this case), it's probably the same bug.