Looks like the symbols generated by the compiler for transactional and non-transactional versions of a tm_callable function (foo._$TXN, foo._$nonTXN) are not global. Because whenever I try to use such functions where the declarations are not visible, I am getting undefined reference errors. For instance, I have a static library which annotates some functions as tm_callable. And when I try to use that static library in some other code, I see these problems.
Is there any way to force the compiler to generate global symbols for both transactional and non-transactional versions of an annotated function?