Skip to content

Commit 69adff1

Browse files
committed
Force all builtin modules to be referenced.
1 parent 64bf1bc commit 69adff1

2 files changed

Lines changed: 52 additions & 1 deletion

File tree

atom/common/node_bindings.cc

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,57 @@ void SetupProcessObject(Environment*, int, const char* const*, int,
3131
const char* const*);
3232
}
3333

34+
// Force all builtin modules to be referenced so they can actually run their
35+
// DSO constructors, see http://git.io/DRIqCg.
36+
#if defined(OS_WIN)
37+
#define REFERENCE_MODULE(name) \
38+
__pragma(comment (linker, "/export:_register_" #name))
39+
#else
40+
#define REFERENCE_MODULE(name) \
41+
extern "C" void _register_ ## name (void); \
42+
void (*fp_register_ ## name)(void) = _register_ ## name
43+
#endif
44+
// Node's builtin modules.
45+
REFERENCE_MODULE(cares_wrap);
46+
REFERENCE_MODULE(fs_event_wrap);
47+
REFERENCE_MODULE(buffer);
48+
REFERENCE_MODULE(contextify);
49+
REFERENCE_MODULE(crypto);
50+
REFERENCE_MODULE(fs);
51+
REFERENCE_MODULE(http_parser);
52+
REFERENCE_MODULE(os);
53+
REFERENCE_MODULE(v8);
54+
REFERENCE_MODULE(zlib);
55+
REFERENCE_MODULE(pipe_wrap);
56+
REFERENCE_MODULE(process_wrap);
57+
REFERENCE_MODULE(signal_wrap);
58+
REFERENCE_MODULE(smalloc);
59+
REFERENCE_MODULE(spawn_sync);
60+
REFERENCE_MODULE(tcp_wrap);
61+
REFERENCE_MODULE(timer_wrap);
62+
REFERENCE_MODULE(tls_wrap);
63+
REFERENCE_MODULE(tty_wrap);
64+
REFERENCE_MODULE(udp_wrap);
65+
REFERENCE_MODULE(uv);
66+
// Atom Shell's builtin modules.
67+
REFERENCE_MODULE(atom_browser_app);
68+
REFERENCE_MODULE(atom_browser_auto_updater);
69+
REFERENCE_MODULE(atom_browser_dialog);
70+
REFERENCE_MODULE(atom_browser_menu);
71+
REFERENCE_MODULE(atom_browser_power_monitor);
72+
REFERENCE_MODULE(atom_browser_protocol);
73+
REFERENCE_MODULE(atom_browser_tray);
74+
REFERENCE_MODULE(atom_browser_window);
75+
REFERENCE_MODULE(atom_common_clipboard);
76+
REFERENCE_MODULE(atom_common_crash_reporter);
77+
REFERENCE_MODULE(atom_common_id_weak_map);
78+
REFERENCE_MODULE(atom_common_screen);
79+
REFERENCE_MODULE(atom_common_shell);
80+
REFERENCE_MODULE(atom_common_v8_util);
81+
REFERENCE_MODULE(atom_renderer_ipc);
82+
REFERENCE_MODULE(atom_renderer_web_view);
83+
#undef REFERENCE_MODULE
84+
3485
namespace atom {
3586

3687
namespace {

vendor/node

Submodule node updated 1 file

0 commit comments

Comments
 (0)