alexcrichton opened issue #3183:
As of https://github.com/bytecodealliance/wasmtime/pull/3180 Wasmtime will stop workong on AArch64 Linux with PAC enabled. Debugging this issue at https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime/topic/arm64.2C.20pointer.20auth.2C.20unwinding seems to indicate that this is a libgcc bug which only accidentally worked before because the
DW_OP_lit0
we specify for register 34, the pointer auth enabling register, just happened to show up at an even address in memory. After #3180 the encoding of the FDE is changing just enough that some expressions show up at odd addresses, which tricks libgcc to thinking that pointer authentication is enabled, when it actually isn't.This commit is tracking improving this by either figuring out a workaround for gcc, implementing pointer authentication, or something similar.
akirilov-arm commented on issue #3183:
An associated libgcc issue has been created.
akirilov-arm labeled issue #3183:
As of https://github.com/bytecodealliance/wasmtime/pull/3180 Wasmtime will stop workong on AArch64 Linux with PAC enabled. Debugging this issue at https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime/topic/arm64.2C.20pointer.20auth.2C.20unwinding seems to indicate that this is a libgcc bug which only accidentally worked before because the
DW_OP_lit0
we specify for register 34, the pointer auth enabling register, just happened to show up at an even address in memory. After #3180 the encoding of the FDE is changing just enough that some expressions show up at odd addresses, which tricks libgcc to thinking that pointer authentication is enabled, when it actually isn't.This commit is tracking improving this by either figuring out a workaround for gcc, implementing pointer authentication, or something similar.
akirilov-arm labeled issue #3183:
As of https://github.com/bytecodealliance/wasmtime/pull/3180 Wasmtime will stop workong on AArch64 Linux with PAC enabled. Debugging this issue at https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime/topic/arm64.2C.20pointer.20auth.2C.20unwinding seems to indicate that this is a libgcc bug which only accidentally worked before because the
DW_OP_lit0
we specify for register 34, the pointer auth enabling register, just happened to show up at an even address in memory. After #3180 the encoding of the FDE is changing just enough that some expressions show up at odd addresses, which tricks libgcc to thinking that pointer authentication is enabled, when it actually isn't.This commit is tracking improving this by either figuring out a workaround for gcc, implementing pointer authentication, or something similar.
akirilov-arm commented on issue #3183:
And a patch has been posted.
akirilov-arm commented on issue #3183:
The fix has been committed.
alexcrichton closed issue #3183:
As of https://github.com/bytecodealliance/wasmtime/pull/3180 Wasmtime will stop workong on AArch64 Linux with PAC enabled. Debugging this issue at https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime/topic/arm64.2C.20pointer.20auth.2C.20unwinding seems to indicate that this is a libgcc bug which only accidentally worked before because the
DW_OP_lit0
we specify for register 34, the pointer auth enabling register, just happened to show up at an even address in memory. After #3180 the encoding of the FDE is changing just enough that some expressions show up at odd addresses, which tricks libgcc to thinking that pointer authentication is enabled, when it actually isn't.This commit is tracking improving this by either figuring out a workaround for gcc, implementing pointer authentication, or something similar.
Last updated: Dec 23 2024 at 12:05 UTC