[asterisk-dev] [Code Review] Out-of-tree modules can fail because of compiler flag differences.
Jason Parker
jparker at digium.com
Wed Mar 31 15:21:07 CDT 2010
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/508/
-----------------------------------------------------------
(Updated 2010-03-31 15:21:07.435562)
Review request for Asterisk Developers.
Changes
-------
Patch for trunk.
Includes some stuff the 1.4 patch didn't (res/res_odbc.c, main/heap.c)
Summary
-------
When compiling modules out-of-tree, there is a large potential for ABI breakage, due to changing compiler flags. If Asterisk is compiled with DEBUG_THREADS, and an out-of-tree module is not, it should not give undefined symbol errors during load (in fact, there's no reason it shouldn't work). The biggest problem areas seemed to be DEBUG_THREADS and DEBUG_CHANNEL_LOCKS.
Is this the right way to go about this?
Note: Many of the functions in lock.h had to be moved into a .c file (main/lock.c). They were defined as static inline, which defeats much of the purpose. A module *would* have the information about where a lock was obtained, but since it was including lock.h without DEBUG_THREADS enabled, it wouldn't bother logging it - even though Asterisk would really like it to.
Diffs (updated)
-----
/trunk/include/asterisk/astobj2.h 255676
/trunk/include/asterisk/heap.h 255676
/trunk/include/asterisk/lock.h 255676
/trunk/include/asterisk/res_odbc.h 255676
/trunk/main/astobj2.c 255676
/trunk/main/heap.c 255676
Diff: https://reviewboard.asterisk.org/r/508/diff
Testing
-------
Compile tests with/without DEBUG_THREADS and DEBUG_CHANNEL_LOCKS work great. I've not tried building an external module with different flags yet. I suspect that one would compile fine, but may not act properly, partially because of the note above.
Thanks,
Jason
More information about the asterisk-dev
mailing list