https://github.com/trungnt2910 created
https://github.com/llvm/llvm-project/pull/135367
The current unwinding implementation on Haiku is messy and broken.
1. It searches weird paths for private headers, which is breaking builds in
consuming projects, such as dotnet/runtime.
2. It does not even
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From d213e68a98b5c92656122aa13bf853b77e6c0b7a Mon Sep 17 00:00:00 2001
From: Trung Nguyen <57174311+trungnt2...@users.noreply.github.com>
Date: Fri, 11 Apr 2025 23:11:04 +1000
Subject: [PATCH] Fix signal fra
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From dd2b01926ad901836465c1aaf1bf142688cbb768 Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:49:36 +1000
Subject: [PATCH] Fix signal frame unwinding
The current unwinding implementat
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From 06e16ff58a908d6fd47a264f95f4b53eb6ad51a5 Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:50:16 +1000
Subject: [PATCH] Fix signal frame unwinding
The current unwinding implementat
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From 116b60a6740831b1376377e33762faf53305f6c2 Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:53:14 +1000
Subject: [PATCH] Fix signal frame unwinding
The current unwinding implementat
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
trungnt2910 wrote:
Yes, tested on `x86_64` and only `x86_64` (though support for other archs can
be added by as easy as defining a few offsets and registers). Requires Haiku
`hrev58811` to fully work with `tests/signal_unwind.pass.cpp`.
This is also the same implementation used in my debugger
=?utf-8?q?Jérôme?= Duval ,
=?utf-8?q?Jérôme?= Duval
Message-ID:
In-Reply-To:
trungnt2910 wrote:
This code has **not** been tested against `tests/signal_unwind.pass.cpp`, and
this exact test has failed when tested against `libunwind` in LLVM 20 on Haiku.
See #135367 for an alternative impleme
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From bc84623d87b606ff2af239170bd19c14cb4e2876 Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:53:14 +1000
Subject: [PATCH] [libunwind][Haiku] Fix signal frame unwinding
The current un
trungnt2910 wrote:
> Does it build on r1beta5?
Theoretically yes, since I did not require any new Haiku nightly feature for
tge implementation.
The unwinding might not fully work due to missing CFE information in `libroot`,
in this case for `_kern_send_signal`.
https://github.com/llvm/llvm
https://github.com/trungnt2910 edited
https://github.com/llvm/llvm-project/pull/135367
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
trungnt2910 wrote:
Apologize for the confusing naming, somehow the tag prefixes were missing when
I applied the
[patch](https://github.com/trungnt2910/libunwind-haiku/commit/94b98e00309e659f29daa8a192bdf00021eec4fc)
from my test repo to the LLVM monorepo.
https://github.com/llvm/llvm-project/
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
https://github.com/trungnt2910 edited
https://github.com/llvm/llvm-project/pull/135367
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From 0ce9ca670b3b3d851f171b4a841a28ffa683108c Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:53:14 +1000
Subject: [PATCH] [libunwind][Haiku] Fix signal frame unwinding
The current un
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
@@ -3032,6 +2983,162 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+
+#if defined(B_HAIKU_32_BIT)
+typedef Elf32_Sy
trungnt2910 wrote:
Submitted a new implementation that uses Haiku's recent [special
handling](https://github.com/haiku/haiku/commit/1e1ad7efc96f94447815373be60fc1cc74962c65)
of the `commpage` in `dladdr` to detect the signal handler function.
This removes the need for both private headers and
@@ -3032,6 +2980,93 @@ int UnwindCursor::stepThroughSigReturn(Registers_s390x &) {
#endif // defined(_LIBUNWIND_CHECK_LINUX_SIGRETURN) &&
// defined(_LIBUNWIND_TARGET_S390X)
+#if defined(_LIBUNWIND_CHECK_HAIKU_SIGRETURN)
+static size_t signalHandlerSize = 0;
+
+template
https://github.com/trungnt2910 updated
https://github.com/llvm/llvm-project/pull/135367
>From 464d992011ad3191f67c1308741e3a5c66c96237 Mon Sep 17 00:00:00 2001
From: Trung Nguyen
Date: Fri, 11 Apr 2025 23:53:14 +1000
Subject: [PATCH] [libunwind][Haiku] Fix signal frame unwinding
The current un
27 matches
Mail list logo