I'm working with a codebase that's meant to be built with a proprietary C compiler using tons of esoteric language extensions. Ideally, I'd like to stick to my chosen environment as much as possible, but parsing the code for syntax/tags is hard.

The custom attributes can be handled by passing stuff like -D __no_init= to clang, but then we have stuff like this in the header files:

__saddr __no_init volatile union { unsigned char P14; __BITS8 P14_bit; } @ 0xFFF0E;

which makes it tough to find P14_bit as a tag. After some fiddling, it seems that clang actually accepts references to P14_bit as valid.

It seems, instead, that the gtags backend doesn't parse it "correctly". It picks up and indexes __BITS8 and other macros/typedefs in the same file, but P14_bit and P14 aren't indexed by

Does anyone have any workaround hacks to suggest?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.