[Bug 50625] Unhandled exception with try/catch

WineHQ Bugzilla wine-bugs at winehq.org
Wed Dec 1 02:18:48 CST 2021


https://bugs.winehq.org/show_bug.cgi?id=50625

--- Comment #19 from Martin Storsjö <martin at martin.st> ---
Can you clarify what distribution (+version) and architecture configuration of
it that you're building on?

The core issue shown in the configure log is this:

configure:16584: checking for unw_step
configure:16602: gcc -o conftest -g -O2 -mthumb -mfloat-abi=hard    conftest.c 
>&5
/tmp/cc8aT0B2.o: In function `main':
/home/admin/wine-6.22/conftest.c:112: undefined reference to `_ULarm_step'
collect2: error: ld returned 1 exit status


On an aarch64 install of Ubuntu 20.04, I've installed the libunwind-dev:armhf
package, and I configure my build like this:
     CC="arm-linux-gnueabihf-gcc" ../wine/configure --host=arm-linux-gnueabihf

With such a build, with Wine 6.22, my current suite of exception handling tests
pass.

As your build just runs plain "gcc", I would guess that it's a 32 bit
distribution. But that doesn't explain the linking error - it sounds like
libunwind is built/packaged differently on that architecture. (Building
libunwind from source is quite quick and straightforward though.)


However the testcase you've attached here does even when Wine is correctly
configured and built with libunwind, as the __CxxFrameHandler function still
isn't implemented. If you'd make a build that is linked against the static CRT
(/MT instead of /MD) it should work - I tried building it from the source you
provided that way, and then it passes.

I can try to have a look at whether it's feasible to implement that function -
but I'm not sure if there are other architecture specific bits in the
msvcp140.dll and how well that DLL is supported on non-x86 architectures
overall.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.


More information about the wine-bugs mailing list