ABI Breaking Checks

The abi-breaking.h seems to be incompatible with modules, owing to it having strong definitions in the header.

I’m wondering if I can make it compatible by changing the:

attribute((weak, visibility(“hidden”))) variables to attribute((used)) static variables instead? It still seems to produce the desired link errors in my basic tests. Does that seem plausible to you?

(modules have a special case for static variables in headers to support things like the iostreams initializer)

Not sure why the modules buildbots don’t see this but google’s internal build system building with modules does…

  • Dave

How can a “weak” definition be a “strong” one!? :wink:

“strong” was wrong/unnecessary, sorry.

looks more closely

Ah, totally my mistake - abi-breaking.h wasn’t being built as a modular header, so it’d be included into two other modular headers, those two header modules would be imported together & the two definitions would conflict. But if it’s actually built as its own module there’s no duplication & it’s fine (probably explains why the modules buildbots are fine).

Sorry for the noise! Carry on!

  • Dave