Skip to content

Commit d0400e9

Browse files
RodoMa92seven7000real
authored andcommitted
[misc] Fix runtime Linux problems derived from a different initialization order on instancing classes.
1 parent 430cc72 commit d0400e9

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/xenia/kernel/xam/xam_module.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,17 @@ namespace xam {
2121

2222
std::atomic<int> xam_dialogs_shown_ = {0};
2323

24+
// FixMe(RodoMa92): Same hack as main_init_posix.cc:40
25+
// Force initialization before constructor calling, mimicking
26+
// Windows.
27+
// Ref:
28+
// https://reviews.llvm.org/D12689#243295
29+
#ifdef XE_PLATFORM_LINUX
30+
__attribute__((init_priority(101)))
31+
#endif
32+
static std::vector<xe::cpu::Export*>
33+
xam_exports(4096);
34+
2435
bool xeXamIsUIActive() { return xam_dialogs_shown_ > 0; }
2536

2637
XamModule::XamModule(Emulator* emulator, KernelState* kernel_state)
@@ -34,8 +45,6 @@ XamModule::XamModule(Emulator* emulator, KernelState* kernel_state)
3445
#undef XE_MODULE_EXPORT_GROUP
3546
}
3647

37-
std::vector<xe::cpu::Export*> xam_exports(4096);
38-
3948
xe::cpu::Export* RegisterExport_xam(xe::cpu::Export* export_entry) {
4049
assert_true(export_entry->ordinal < xam_exports.size());
4150
xam_exports[export_entry->ordinal] = export_entry;

0 commit comments

Comments
 (0)