目录
dependabot[bot]

Bump github/codeql-action from 4.37.9 to 4.38.0

Bumps github/codeql-action from 4.37.9 to 4.38.0.


updated-dependencies:

  • dependency-name: github/codeql-action dependency-version: 4.38.0 dependency-type: direct:production update-type: version-update:semver-minor …

Signed-off-by: dependabot[bot] support@github.com

13天前2355次提交
lt;INSTALL_INTERFACE:.../prevail> as well. - Conditional Boost dependency: require Boost from the installed config only when prevail's public interface was actually built against a Boost::headers target (prevail_PUBLIC_NEEDS_BOOST). The MSVC/NuGet-headers build has no such target, so hard-requiring it (find_dependency(Boost REQUIRED)) would fail a consumer without a Boost CMake package. - Workflow: install Boost on ubuntu/macOS (SetupBoostHeaders provisions it via NuGet on Windows); yamllint-clean; single main branch. - Refresh the example consumer to current API (it referenced create_ebpf_platform and a default-constructed LinearConstraint, both gone); it now links a real library symbol to exercise the full find_package path. Verified end-to-end on Linux: build -> install -> find_package(prevail) -> consumer build -> run all pass. Windows (earlier "Could not find prevailConfig") needs a CI round to diagnose with the uploaded CMakeError.log artifact. * Fix Windows install test: pass CMAKE_PREFIX_PATH with forward slashes The Windows Test Install built and installed prevail correctly (prevailConfig.cmake landed in lib/cmake/prevail), but the consumer's find_package(prevail) reported "Could not find a package configuration file". Cause: test_install.ps1 passed -DCMAKE_PREFIX_PATH=$InstallDir with a backslash Windows path (D:\a\...\test_install_output); CMake interprets backslashes in a -D cache value as escapes (\t -> tab, etc.), corrupting the prefix so the config directory was never searched. ubuntu/macOS were unaffected (forward-slash paths). Convert the prefix to forward slashes before passing it. (--install --prefix is a direct CLI arg and already worked, so only the -D value needed it.) * Provision Boost for the Windows install-test consumer With the prefix-path fix, Windows now finds prevailConfig.cmake, and the failure moved into it: find_dependency(Boost REQUIRED) -> "Could NOT find Boost". On MSVC, prevail's public headers use Boost (the multiprecision Number/SafeI64 fallback), so a consumer genuinely needs Boost -- both for the config's find_dependency and to compile -- but the consumer project doesn't provision it. Reuse the NuGet Boost headers the main build already downloaded under <build>/packages (via SetupBoostHeaders.cmake) and point the consumer's FindBoost at them with -DBoost_INCLUDE_DIR. ubuntu/macOS are unaffected (system Boost). This is the pragmatic provisioning fix; hiding Boost from prevail's public headers (so consumers never need it on MSVC) is tracked as separate follow-up work. * Review nits: BOOST_INCLUDEDIR hint, fail-fast, concurrency group - test_install.ps1: also pass BOOST_INCLUDEDIR (FindBoost's documented include hint; Boost_INCLUDE_DIR is its result variable), and exit with a clear message if the NuGet Boost headers aren't found rather than letting the downstream configure error explain it. - test-installation.yml: add a concurrency group to cancel superseded runs, matching build.yml. --------- Signed-off-by: Elazar Gershuni <elazarg@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>" href="/fanguangsheng/prevail-sa/commits/9de448a9c9">Enable install/consume CI and fix the packaging path (follow-up to #1173) (#1188)3个月前
  • docsDocument writable helper output initialization contract (#1146)4个月前
  • examplesRelease v0.2.62个月前
  • externalBump external/libbtf from `6a09e51` to `07af232`1个月前
  • scriptsDrive sample verification tests from the inventory; parallelize CI (#1195)3个月前
  • srcFix -v truncating output on the first verification error (#1010) (#1221)16天前
  • test-dataClamp the uvalue read in shl and lshr to 64 bits16天前
  • .clang-formatclang-format2年前
  • .dockerignoreFix Dockerfile7年前
  • .gitignoreMake svalue a T_NUM-specific kind variable4个月前
  • .gitmodulesReplace patricia tree with std::map (#1008)7个月前
  • .yamllint.ymlFix YAML lint errors and warnings (#636)2年前
  • AGENTS.mdHuman-friendly CLI output for bin/prevail (#1042)7个月前
  • CHANGELOG.mdRelease v0.2.62个月前
  • CMakeLists.txtRelease v0.2.62个月前
  • CODE_OF_CONDUCT.mdAdd Code of Conduct based on Contributor Covenant 2.05年前
  • DockerfileBump Docker base image to ubuntu:24.04 for CMake 3.24+3个月前
  • DoxyfileAdd headers to existing files5年前
  • LICENSE-Apache-2.0.txtAdditional license fixes (#126)5年前
  • LICENSE.txtadd license7年前
  • README.mdRefresh the CLI help block in README2个月前
  • test-schema.yamlAdd observation/invariant consistency checks + YAML support (#976)8个月前
  • ebpf-samples@c504fda6ffBump ebpf-samples from `6a81f8e` to `c504fda`3个月前
  • Coverage StatusCodeQL

    PREVAIL - A new eBPF verifier

    a Polynomial-Runtime EBPF Verifier using an Abstract Interpretation Layer

    The version discussed in the PLDI paper is available here.

    DeepWiki: A comprehensive auto-generated documentation is avaliable at https://deepwiki.com/vbpf/prevail

    Getting Started

    Clone:

    git clone --recurse-submodules https://github.com/vbpf/prevail.git
    cd prevail

    Building

    🐧 Linux

    Dependencies (Ubuntu)

    Prevail is built as C++23, which requires GCC 13+ or Clang 17+. The default toolchain on Ubuntu 24.04 LTS (build-essential → GCC 13) is sufficient. On Ubuntu 22.04 install g++-13 from the ubuntu-toolchain-r PPA; the default GCC 11 will not build the project. Earlier Ubuntu releases (e.g. 20.04) are not supported.

    sudo apt install build-essential git cmake libboost-dev libyaml-cpp-dev
    sudo apt install libboost-filesystem-dev libboost-program-options-dev

    Make

    cmake -B build -DCMAKE_BUILD_TYPE=Release
    cmake --build build
    🪟 Windows

    Dependencies

    • Install git
    • Install Visual Studio Build Tools 2022 and:
      • Choose the “C++ build tools” workload (Visual Studio Build Tools 2022 has support for CMake Version 3.25)
      • Under Individual Components, select:
        • “C++ Clang Compiler”
        • “MSBuild support for LLVM”
    • Install nuget.exe

    Make on Windows (which uses a multi-configuration generator)

    cmake -B build
    cmake --build build --config Release
    🍏 macOS

    Dependencies:

    brew install llvm cmake boost yaml-cpp

    The system LLVM (shipped with Xcode Command Line Tools) provides Clang 15, which isn’t enough to compile prevail since it depends on C++23. Brew’s LLVM comes with Clang 17 (or newer), which has sufficient C++23 support.

    Make:

    export CPATH=$(brew --prefix)/include LIBRARY_PATH=$(brew --prefix)/lib CMAKE_PREFIX_PATH=$(brew --prefix)
    cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=$(brew --prefix llvm)/bin/clang -DCMAKE_CXX_COMPILER=$(brew --prefix llvm)/bin/clang++
    cmake --build build
    🐋 Docker

    Build and run

    docker build -t prevail .
    docker run -it prevail ebpf-samples/cilium/bpf_lxc.o 2/1

    Example:

    $ bin/prevail ebpf-samples/cilium/bpf_lxc.o 2/1
    PASS: 2/1
    Usage
    PREVAIL is a new eBPF verifier based on abstract interpretation.
    
    
    bin/prevail [OPTIONS] path [section] [function]
    
    
    POSITIONALS:
      path TEXT:FILE REQUIRED     Elf file to analyze
      section SECTION             Section to analyze
      function FUNCTION           Function to analyze
    
    OPTIONS:
      -h,     --help              Print this help message and exit
              --version           Display program version information and exit
              --section SECTION   Section to analyze
              --function FUNCTION Function to analyze
      -l                          List programs
      -q,     --quiet             No stdout output, exit code only
              --cfg               Print control-flow graph and exit
    
    Features:
              --termination, --no-verify-termination{false}
                                  Verify termination. Default: ignore
              --allow-division-by-zero, --no-division-by-zero{false}
                                  Handling potential division by zero. Default: allow
      -s,     --strict            Apply additional checks that would cause runtime failures
              --stack-size INT:INT in [1 - 1048576]
                                  Per-subprogram stack frame size in bytes (default: 512)
              --max-call-stack-frames INT:INT in [1 - 128]
                                  Maximum number of nested function calls (default: 8)
              --max-packet-size INT:INT in [1 - 1073741824]
                                  Maximum packet size in bytes (default: 65535)
              --include_groups GROUPS:{atomic32,atomic64,base32,base64,callx,divmul32,divmul64,packet}
                                  Include conformance groups
              --exclude_groups GROUPS:{atomic32,atomic64,base32,base64,callx,divmul32,divmul64,packet}
                                  Exclude conformance groups
    
    Verbosity:
              --simplify, --no-simplify{false}
                                  Simplify the display of the CFG by merging chains of instructions
                                  into a single basic block. Default: enabled (disabled with
                                  --failure-slice)
              --line-info         Print line information
              --print-btf-types   Print BTF types
      -v                          Print invariants and first failure
      -f                          Print first failure
              --failure-slice     Print minimal failure slices showing only instructions that
                                  contributed to errors
              --failure-slice-depth UINT
                                  Maximum backward steps for failure slicing (default: 200)
    
    CFG output:
              --asm FILE          Print disassembly to FILE
              --dot FILE          Export control-flow graph to dot FILE

    A standard alternative to the –asm flag is llvm-objdump -S FILE.

    The cfg can be viewed using dot and the standard PDF viewer:

    sudo apt install graphviz
    bin/prevail ebpf-samples/cilium/bpf_lxc.o 2/1 --dot cfg.dot
    dot -Tpdf cfg.dot > cfg.pdf
    关于
    7.8 MB
    邀请码
      Gitlink(确实开源)
    • 加入我们
    • 官网邮箱:gitlink@ccf.org.cn
    • QQ群
    • QQ群
    • 公众号
    • 公众号

    版权所有:中国计算机学会技术支持:开源发展技术委员会
    京ICP备13000930号-9 京公网安备 11010802047560号