Unverified Commit 5af48ce0 authored by Luna Nova's avatar Luna Nova
Browse files

electron: fix LLVM 21+ build by backporting patch

chromium <139's histogram_macros_internal.h contains a UB static cast
that causes a compile error for LLVM 21+

return static_cast<Enum>(base::to_underlying(Enum::kMaxValue) + 1);
→
integer value 4 is outside the valid range of values [0, 3] for the enumeration type 'LandlockState'
→
error: static assertion expression is not an integral constant expression
   UMA_HISTOGRAM_ENUMERATION("Security.Sandbox.LandlockState", landlock_state);

applying upstream fix from https://chromium-review.googlesource.com/c/chromium/src/+/6633292

A static cast to an enum type that is outside the range of enum values
was defined to be undefined behavior in February 2014 in
https://cplusplus.github.io/CWG/issues/1766.html
parent 66a3cd62
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -140,6 +140,15 @@ in
        url = "https://github.com/chromium/chromium/commit/6aae0e2353c857d98980ff677bf304288d7c58de.patch";
        hash = "sha256-Dd38c/0hiH+PbGPJhhEFuW6kUR45A36XZqOVExoxlhM=";
      })
    ]
    ++ lib.optionals (lib.versionOlder info.version "38") [
      # Fix build with LLVM 21+
      # https://chromium-review.googlesource.com/c/chromium/src/+/6633292
      (fetchpatch {
        name = "Dont-return-an-enum-from-EnumSizeTraits-Count.patch";
        url = "https://github.com/chromium/chromium/commit/b0ff8c3b258a8816c05bdebf472dbba719d3c491.patch";
        hash = "sha256-YIWcsCj5w0jUd7D67hsuk0ljTA/IbHwA6db3eK4ggUY=";
      })
    ];

  npmRoot = "third_party/node";