Skip to content

README's LLVM version guidance is stale — LLVM 19+ isn't uniformly safe (see #659) #736

Description

@yclrkj

Description

The README's libclang guidance currently reads:

  • Binding generation via bindgen requires libclang. The easiest way to acquire this is via winget
    • winget install -i LLVM.LLVM --version 17.0.6 --force
      • Ensure you select the GUI option to add LLVM to the PATH
      • LLVM 18 has a bug that causes bindings to fail to generate for ARM64. Continue using LLVM 17 until LLVM 19 comes out with the fix. See this for more details.

This framing (last updated for the LLVM 18 / ARM64 __prefetch bug) reads as "LLVM 19+ is fine," but #659 shows a different, broader regression on x86_64 (not ARM64-specific) that affects newer LLVM through at least 23.1.1 — confirmed independently in a comment on #659 with LLVM 23.1.1 producing ~40 opaque 1-byte struct stubs for core WDK types (_DEVICE_OBJECT, _IRP, _DRIVER_OBJECT, etc.) on a WDM driver. #659's reporters found LLVM 21.1.2 works; I found LLVM 17.0.6 works; neither of us tried the full range in between, so the actual good/bad boundary isn't pinned down yet.

Suggested fix

Once wdk-sys/wdk-build ship a release including the fix already on main (referenced in #659, commit 21ec8f8), update the README to either:

  1. State the actual verified-good LLVM range (once known), or
  2. Point directly at Could not compile wdk-sys #659 for current known-good/known-bad LLVM versions until a release resolves it, rather than implying the fix is scoped to "LLVM 19+" (which is true for the ARM64 __prefetch bug this section originally documented, but not for the newer x86_64 regression).

This is a docs-accuracy issue, not a functional bug — filing separately from #659 since #659 already has the technical repro/fix info; this is specifically about updating README guidance so new users don't get steered wrong by the "LLVM 19+ is fine" implication.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions