Project

General

Profile

Actions

Emulator Issues #12409

closed

Dolphin emulator fails to build with GCC 11

Added by mystro256 almost 4 years ago. Updated almost 4 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Current
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
Yes
Regression start:
Fixed in:
5.0-13669

Description

I've trimmed out any non-applicable templates from the description.

MD5 Hash? (right click the game in the game list, Properties, Verify tab, Verify Integrity button)

I most recently tried building a34823df61df65168aa40ef5e82e44defd4a0138, but I've also tested the latest commit about a month ago, and I don't see any related commits to GCC 11 since then.

What's the problem? Describe what went wrong.

When attempting to build dolphin with GCC 11, I used Fedora 34, it seems to fail with this error:

In file included from /usr/include/stdio.h:33,
from /usr/include/c++/11/cstdio:42,
from /usr/include/c++/11/ext/string_conversions.h:43,
from /usr/include/c++/11/bits/basic_string.h:6595,
from /usr/include/c++/11/string:55,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/CommonFuncs.h:8,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/Assert.h:8,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/x64Emitter.h:15,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.h:9,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:5:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp: In function 'Gen::OpArg DSP::JIT::x64::GetRegisterPointer(size_t)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:34:66: error: 'reg' is not a constant expression
34 | return MDisp(R15, static_cast(offsetof(SDSP, r.ar[reg - DSP_REG_AR0])));
| ^~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:39:66: error: 'reg' is not a constant expression
39 | return MDisp(R15, static_cast(offsetof(SDSP, r.ix[reg - DSP_REG_IX0])));
| ^~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:44:66: error: 'reg' is not a constant expression
44 | return MDisp(R15, static_cast(offsetof(SDSP, r.wr[reg - DSP_REG_WR0])));
| ^~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:49:66: error: 'reg' is not a constant expression
49 | return MDisp(R15, static_cast(offsetof(SDSP, r.st[reg - DSP_REG_ST0])));
| ^~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:52:66: error: 'reg' is not a constant expression
52 | return MDisp(R15, static_cast(offsetof(SDSP, r.ac[reg - DSP_REG_ACH0].h)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:67:66: error: 'reg' is not a constant expression
67 | return MDisp(R15, static_cast(offsetof(SDSP, r.ax[reg - DSP_REG_AXL0].l)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:70:66: error: 'reg' is not a constant expression
70 | return MDisp(R15, static_cast(offsetof(SDSP, r.ax[reg - DSP_REG_AXH0].h)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:73:66: error: 'reg' is not a constant expression
73 | return MDisp(R15, static_cast(offsetof(SDSP, r.ac[reg - DSP_REG_ACL0].l)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:76:66: error: 'reg' is not a constant expression
76 | return MDisp(R15, static_cast(offsetof(SDSP, r.ac[reg - DSP_REG_ACM0].m)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:79:66: error: 'reg' is not a constant expression
79 | return MDisp(R15, static_cast(offsetof(SDSP, r.ax[reg - DSP_REG_AX0_32].val)));
| ^~~~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPJitRegCache.cpp:82:66: error: 'reg' is not a constant expression
82 | return MDisp(R15, static_cast(offsetof(SDSP, r.ac[reg - DSP_REG_ACC0_64].val)));
| ^~~~~~~~~~~~~~~
gmake[2]: *** [Source/Core/Core/CMakeFiles/core.dir/build.make:3257: Source/Core/Core/CMakeFiles/core.dir/DSP/Jit/x64/DSPJitRegCache.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
In file included from /usr/include/stdio.h:33,
from /usr/include/c++/11/cstdio:42,
from /usr/include/c++/11/ext/string_conversions.h:43,
from /usr/include/c++/11/bits/basic_string.h:6595,
from /usr/include/c++/11/string:55,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/CommonFuncs.h:8,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/Assert.h:8,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Common/x64Emitter.h:15,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.h:14,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.cpp:5:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.cpp: In member function 'Gen::OpArg DSP::JIT::x64::DSPEmitter::M_SDSP_r_st(size_t)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.cpp:478:58: error: 'index' is not a constant expression
478 | return MDisp(R15, static_cast(offsetof(SDSP, r.st[index])));
| ^~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.cpp: In member function 'Gen::OpArg DSP::JIT::x64::DSPEmitter::M_SDSP_reg_stack_ptrs(size_t)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/DSP/Jit/x64/DSPEmitter.cpp:483:68: error: 'index' is not a constant expression
483 | return MDisp(R15, static_cast(offsetof(SDSP, reg_stack_ptrs[index])));
| ^~~~~

What steps will reproduce the problem?

Try to build dolphin using gcc 11. I've also used binutils 2.35, and glibc 2.33 if this affects anything.

Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.

I believe so, but I don't see any reason why the failure would have already been fixed. It looks like a conflict of constants in x86 jit, which appears to still exist.

Is the issue present in the latest stable version?

Yes

If the issue isn't present in the latest stable version, which is the first broken version? (You can find the first broken version by bisecting. Windows users can use the tool https://forums.dolphin-emu.org/Thread-green-notice-development-thread-unofficial-dolphin-bisection-tool-for-finding-broken-builds and anyone who is building Dolphin on their own can use git bisect.)

Not a regression

Is there anything else that can help developers narrow down the issue? (e.g. logs, screenshots,
configuration files, savefiles, savestates)

Please let me know if you need a full log, but the above should be enough to get the jist.


Files

dolphin-emu-gcc11.patch (1.2 KB) dolphin-emu-gcc11.patch mystro256, 02/09/2021 05:51 PM
Actions #1

Updated by mystro256 almost 4 years ago

Note that I've also had to add the following includes (but might already be resolved)

#include to Source/Core/Common/Config/Config.cpp

#include to Source/Core/DiscIO/WIACompression.cpp

#include to Externals/rangeset/include/rangeset/rangesizeset.h

See the attached patch. This doesn't fix the issue above, just fixes some GCC 11 related issues.

Actions #2

Updated by leoetlino almost 4 years ago

  • Status changed from New to Accepted
  • Assignee set to leoetlino

It appears that GCC 11 has started enforcing the requirement that &(object.member) needs to be a constant expression: https://godbolt.org/z/Tn6Tr3

Unfortunately, that behavior is standards compliant so it looks like we'll need to fix this.

Actions #3

Updated by JosJuice almost 4 years ago

  • Milestone set to Current
  • Relates to maintainability changed from No to Yes
Actions #4

Updated by leoetlino almost 4 years ago

  • Status changed from Accepted to Fix pending
Actions #5

Updated by mystro256 almost 4 years ago

I noticed there was a the same build issue with PPC as well, so it might be worth fixing it there too:

In file included from /usr/include/bits/types/stack_t.h:23,
from /usr/include/signal.h:300,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/MachineContext.h:94,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitCommon/JitBase.h:14,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/Jit.h:18,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:16:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp: In member function 'Arm64GPRCache::GuestRegInfo Arm64GPRCache::GetGuestGPR(size_t)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:136:32: error: 'preg' is not a constant expression
136 | return {32, PPCSTATE_OFF(gpr[preg]), m_guest_registers[GUEST_GPR_OFFSET + preg]};
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:136:15: note: in expansion of macro 'PPCSTATE_OFF'
136 | return {32, PPCSTATE_OFF(gpr[preg]), m_guest_registers[GUEST_GPR_OFFSET + preg]};
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp: In member function 'Arm64GPRCache::GuestRegInfo Arm64GPRCache::GetGuestCR(size_t)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:142:38: error: 'preg' is not a constant expression
142 | return {64, PPCSTATE_OFF(cr.fields[preg]), m_guest_registers[GUEST_CR_OFFSET + preg]};
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:142:15: note: in expansion of macro 'PPCSTATE_OFF'
142 | return {64, PPCSTATE_OFF(cr.fields[preg]), m_guest_registers[GUEST_CR_OFFSET + preg]};
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp: In member function 'Arm64Gen::ARM64Reg Arm64FPRCache::R(size_t, RegType)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:454:83: error: 'preg' is not a constant expression
454 | m_float_emit->LDR(64, INDEX_UNSIGNED, tmp_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:454:67: note: in expansion of macro 'PPCSTATE_OFF'
454 | m_float_emit->LDR(64, INDEX_UNSIGNED, tmp_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:508:43: error: 'preg' is not a constant expression
508 | u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:508:27: note: in expansion of macro 'PPCSTATE_OFF'
508 | u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp: In member function 'Arm64Gen::ARM64Reg Arm64FPRCache::RW(size_t, RegType)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:556:86: error: 'preg' is not a constant expression
556 | m_float_emit->STR(128, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:556:70: note: in expansion of macro 'PPCSTATE_OFF'
556 | m_float_emit->STR(128, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:564:85: error: 'preg' is not a constant expression
564 | m_float_emit->STR(64, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:564:69: note: in expansion of macro 'PPCSTATE_OFF'
564 | m_float_emit->STR(64, INDEX_UNSIGNED, flush_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp: In member function 'virtual void Arm64FPRCache::FlushRegister(size_t, bool)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:691:45: error: 'preg' is not a constant expression
691 | u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:691:29: note: in expansion of macro 'PPCSTATE_OFF'
691 | u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:708:84: error: 'preg' is not a constant expression
708 | m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:708:68: note: in expansion of macro 'PPCSTATE_OFF'
708 | m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps0)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:709:84: error: 'preg' is not a constant expression
709 | m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_RegCache.cpp:709:68: note: in expansion of macro 'PPCSTATE_OFF'
709 | m_float_emit->STR(64, INDEX_UNSIGNED, host_reg, PPC_REG, u32(PPCSTATE_OFF(ps[preg].ps1)));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp: In member function 'void JitArm64::srawix(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp:634:42: warning: '<<' in boolean context, did you mean '<'? [-Wint-in-bool-context]
634 | if (amount != 0 && (imm < 0) && (imm << (32 - amount)))
| ~~~~~^~~~~~~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp: In member function 'void JitArm64::srawx(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp:1356:47: warning: '<<' in boolean context, did you mean '<'? [-Wint-in-bool-context]
1356 | ComputeCarry(amount != 0 && i < 0 && (i << (32 - amount)));
| ~~~^~~~~~~~~~~~~~~~~
In file included from /usr/include/bits/types/stack_t.h:23,
from /usr/include/signal.h:300,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/MachineContext.h:94,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitCommon/JitBase.h:14,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/Jit.h:18,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp:12:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp: In member function 'void JitArm64::GenerateAsm()':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp:108:53: warning: 'offsetof' within non-standard-layout type 'JitBlock' is conditionally-supported [-Winvalid-offsetof]
108 | LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlock, effectiveAddress));
| ^
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp:114:53: warning: 'offsetof' within non-standard-layout type 'JitBlock' is conditionally-supported [-Winvalid-offsetof]
114 | LDR(INDEX_UNSIGNED, pc_and_msr, block, offsetof(JitBlock, msrBits));
| ^
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitAsm.cpp:119:48: warning: 'offsetof' within non-standard-layout type 'JitBlock' is conditionally-supported [-Winvalid-offsetof]
119 | LDR(INDEX_UNSIGNED, block, block, offsetof(JitBlock, normalEntry));
| ^
gmake[2]: *** [Source/Core/Core/CMakeFiles/core.dir/build.make:3296: Source/Core/Core/CMakeFiles/core.dir/PowerPC/JitArm64/JitArm64_RegCache.cpp.o] Error 1
gmake[2]: *** Waiting for unfinished jobs....
In file included from /usr/include/bits/types/stack_t.h:23,
from /usr/include/signal.h:300,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/MachineContext.h:94,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitCommon/JitBase.h:14,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/Jit.h:18,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp:11:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp: In member function 'void JitArm64::mfsr(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp:114:69: error: 'inst' is not a constant expression
114 | LDR(INDEX_UNSIGNED, gpr.R(inst.RD), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
| ^~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp:114:48: note: in expansion of macro 'PPCSTATE_OFF'
114 | LDR(INDEX_UNSIGNED, gpr.R(inst.RD), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp: In member function 'void JitArm64::mtsr(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp:123:69: error: 'inst' is not a constant expression
123 | STR(INDEX_UNSIGNED, gpr.R(inst.RS), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
| ^~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp:123:48: note: in expansion of macro 'PPCSTATE_OFF'
123 | STR(INDEX_UNSIGNED, gpr.R(inst.RS), PPC_REG, PPCSTATE_OFF(sr[inst.SR]));
| ^~~~~~~~~~~~
gmake[2]: *** [Source/Core/Core/CMakeFiles/core.dir/build.make:3309: Source/Core/Core/CMakeFiles/core.dir/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp.o] Error 1
In file included from /usr/include/bits/types/stack_t.h:23,
from /usr/include/signal.h:300,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/MachineContext.h:94,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitCommon/JitBase.h:14,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/Jit.h:18,
from /builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp:12:
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp: In member function 'void JitArm64::psq_l(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp:80:78: error: 'inst' is not a constant expression
80 | LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
| ^
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp:80:45: note: in expansion of macro 'PPCSTATE_OFF'
80 | LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
| ^~~~~~~~~~~~
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp: In member function 'void JitArm64::psq_st(UGeckoInstruction)':
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp:182:78: error: 'inst' is not a constant expression
182 | LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
| ^
/builddir/build/BUILD/dolphin-31524288e3b2450eaefff8202c6d26c4ba3f7333/Source/Core/Core/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp:182:45: note: in expansion of macro 'PPCSTATE_OFF'
182 | LDR(INDEX_UNSIGNED, scale_reg, PPC_REG, PPCSTATE_OFF(spr[SPR_GQR0 + inst.I]));
| ^~~~~~~~~~~~
gmake[2]: *** [Source/Core/Core/CMakeFiles/core.dir/build.make:3270: Source/Core/Core/CMakeFiles/core.dir/PowerPC/JitArm64/JitArm64_LoadStorePaired.cpp.o] Error 1

Actions #6

Updated by leoetlino almost 4 years ago

  • Status changed from Fix pending to Accepted
  • Assignee changed from leoetlino to JosJuice

5.0-13665 fixes the build issue for x86-64. There are still offsetof usages to fix for AArch64, though.

Actions #7

Updated by JosJuice almost 4 years ago

  • Status changed from Accepted to Fix pending
Actions #8

Updated by leoetlino almost 4 years ago

  • Status changed from Fix pending to Fixed
  • Assignee deleted (JosJuice)
  • Fixed in set to 5.0-13669
Actions #9

Updated by mystro256 almost 4 years ago

Thanks!

Actions

Also available in: Atom PDF