Skip to content
Snippets Groups Projects
  • Luigi Rizzo's avatar
    e43bc663
    This rather large commit changes the way modules are loaded. · e43bc663
    Luigi Rizzo authored
     
    As partly documented in loader.c and include/asterisk/module.h,
    modules are now expected to return all of their methods and flags
    into a structure 'mod_data', and are normally loaded with RTLD_NOW
    | RTLD_LOCAL, so symbols are resolved immediately and conflicts
    should be less likely.  Only in a small number of cases (res_*,
    typically) modules are loaded RTLD_GLOBAL, so they can export
    symbols.
     
    The core of the change is only the two files loader.c and
    include/asterisk/module.h, all the rest is simply adaptation of the
    existing modules to the new API, a rather mechanical (but believe
    me, time and finger-consuming!) process whose detail you can figure
    out by svn diff'ing any single module.
    
    Expect some minor compilation issue after this change, please
    report it on mantis http://bugs.digium.com/view.php?id=6968
    so we collect all the feedback in one place.
    
    I am just sorry that this change missed SVN version number 20000!
    
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@20003 65c4cc65-6c06-0410-ace0-fbb531ad65f3
    e43bc663
    History
    This rather large commit changes the way modules are loaded.
    Luigi Rizzo authored
     
    As partly documented in loader.c and include/asterisk/module.h,
    modules are now expected to return all of their methods and flags
    into a structure 'mod_data', and are normally loaded with RTLD_NOW
    | RTLD_LOCAL, so symbols are resolved immediately and conflicts
    should be less likely.  Only in a small number of cases (res_*,
    typically) modules are loaded RTLD_GLOBAL, so they can export
    symbols.
     
    The core of the change is only the two files loader.c and
    include/asterisk/module.h, all the rest is simply adaptation of the
    existing modules to the new API, a rather mechanical (but believe
    me, time and finger-consuming!) process whose detail you can figure
    out by svn diff'ing any single module.
    
    Expect some minor compilation issue after this change, please
    report it on mantis http://bugs.digium.com/view.php?id=6968
    so we collect all the feedback in one place.
    
    I am just sorry that this change missed SVN version number 20000!
    
    
    
    git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@20003 65c4cc65-6c06-0410-ace0-fbb531ad65f3