Skip to content

Commit

Permalink
ruby.c: initialize extra optional extensions linked statically
Browse files Browse the repository at this point in the history
Add a hook point to initialize extra extension libraries. The default
hook function is replaced when linking a strong `Init_extra_exts`
symbol. A builder can insert an object file that defines Init_extra_exts
by XLDFLAGS.
  • Loading branch information
kateinoigakukun committed Jan 19, 2022
1 parent 9033ac3 commit be1382b
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions ruby.c
Expand Up @@ -1524,6 +1524,15 @@ ruby_init_prelude(void)

void rb_call_builtin_inits(void);

// Initialize extra optional exts linked statically.
// This empty definition will be replaced with the actual strong symbol by linker.
#if RBIMPL_HAS_ATTRIBUTE(weak)
__attribute__((weak))
#endif
void Init_extra_exts(void)
{
}

static void
ruby_opt_init(ruby_cmdline_options_t *opt)
{
Expand All @@ -1542,6 +1551,7 @@ ruby_opt_init(ruby_cmdline_options_t *opt)
rb_warning_category_update(opt->warn.mask, opt->warn.set);

Init_ext(); /* load statically linked extensions before rubygems */
Init_extra_exts();
rb_call_builtin_inits();
ruby_init_prelude();

Expand Down

0 comments on commit be1382b

Please sign in to comment.