Re: www/firefox on earmv6hf
Rin Okuyama <[email protected]> Sun, 11 May 2025 13:24:03 +0900
| Newsgroups | gmane.os.netbsd.devel.packages,gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
Hi, On 2025/05/09 10:31, Jörg Sonnenberger wrote: > On 5/9/25 3:28 AM, Rin Okuyama wrote: >> Hi, >> >> I am who added this assertion to libunwind. >> >> As described in the comment, numbering schemes for VFP >> registers are different for GCC and LLVM :( > > That shouldn't matter and the logic was supposed to place them in the > same location, so the assert is just wrong. Hmm, with the attached patch, the assertions are dropped. John, can you try this patch? // My guess is that clang-style CFI directives in inline asm // codes compiled by gcc, or vice versa. Although the assertions // will be removed anyway, I'm just curious about how these fire... Thanks, rin
libunwind_arm_20250511.patch
(text/plain, 1.5 KB)
diff --git a/sys/lib/libunwind/Registers.hpp b/sys/lib/libunwind/Registers.hpp
index d10c7c44548..90890ee8ee1 100644
--- a/sys/lib/libunwind/Registers.hpp
+++ b/sys/lib/libunwind/Registers.hpp
@@ -383,8 +383,6 @@ enum {
#define FLAGS_VFPV2_USED 0x1
#define FLAGS_VFPV3_USED 0x2
-#define FLAGS_LEGACY_VFPV2_REGNO 0x4
-#define FLAGS_EXTENDED_VFPV2_REGNO 0x8
class Registers_arm32 {
public:
@@ -439,14 +437,6 @@ public:
assert(validFloatVectorRegister(num));
const void *addr = reinterpret_cast<const void *>(addr_);
if (num >= REGNO_ARM32_S0 && num <= REGNO_ARM32_S31) {
- /*
- * XXX
- * There are two numbering schemes for VFPv2 registers: s0-s31
- * (used by GCC) and d0-d15 (used by LLVM). We won't support both
- * schemes simultaneously in a same frame.
- */
- assert((flags & FLAGS_EXTENDED_VFPV2_REGNO) == 0);
- flags |= FLAGS_LEGACY_VFPV2_REGNO;
if ((flags & FLAGS_VFPV2_USED) == 0) {
lazyVFPv2();
flags |= FLAGS_VFPV2_USED;
@@ -464,12 +454,6 @@ public:
addr, sizeof(fpreg[0]) / 2);
} else {
if (num <= REGNO_ARM32_D15) {
- /*
- * XXX
- * See XXX comment above.
- */
- assert((flags & FLAGS_LEGACY_VFPV2_REGNO) == 0);
- flags |= FLAGS_EXTENDED_VFPV2_REGNO;
if ((flags & FLAGS_VFPV2_USED) == 0) {
lazyVFPv2();
flags |= FLAGS_VFPV2_USED;
@@ -496,8 +480,6 @@ private:
#undef FLAGS_VFPV2_USED
#undef FLAGS_VFPV3_USED
-#undef FLAGS_LEGACY_VFPV2_REGNO
-#undef FLAGS_EXTENDED_VFPV2_REGNO
enum {
DWARF_VAX_R0 = 0,