зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1866608 - Update bindgen with fix from https://github.com/rust-lang/rust-bindgen/pull/2689. r=emilio,supply-chain-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D195060
This commit is contained in:
Родитель
630511a83a
Коммит
b69bf725b8
|
@ -100,6 +100,11 @@ git = "https://github.com/rust-diplomat/diplomat"
|
|||
rev = "8d125999893fedfdf30595e97334c21ec4b18da9"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/rust-lang/rust-bindgen?rev=86f3dbe846020e2ba573d6eb38d1434d0cbcbb40"]
|
||||
git = "https://github.com/rust-lang/rust-bindgen"
|
||||
rev = "86f3dbe846020e2ba573d6eb38d1434d0cbcbb40"
|
||||
replace-with = "vendored-sources"
|
||||
|
||||
[source."git+https://github.com/servo/rust-cssparser?rev=aaa966d9d6ae70c4b8a62bb5e3a14c068bb7dff0"]
|
||||
git = "https://github.com/servo/rust-cssparser"
|
||||
rev = "aaa966d9d6ae70c4b8a62bb5e3a14c068bb7dff0"
|
||||
|
|
|
@ -438,8 +438,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.69.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2"
|
||||
source = "git+https://github.com/rust-lang/rust-bindgen?rev=86f3dbe846020e2ba573d6eb38d1434d0cbcbb40#86f3dbe846020e2ba573d6eb38d1434d0cbcbb40"
|
||||
dependencies = [
|
||||
"bitflags 2.4.0",
|
||||
"cexpr",
|
||||
|
@ -3957,7 +3956,7 @@ version = "0.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c17aec6d4e1822c023689899f09311592a36cbf6de8f85dfaf5f01976790d8d"
|
||||
dependencies = [
|
||||
"bindgen 0.66.999",
|
||||
"bindgen 0.69.1",
|
||||
"mozbuild",
|
||||
"once_cell",
|
||||
"pkcs11-bindings",
|
||||
|
@ -4323,7 +4322,7 @@ version = "0.1.5"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0fabbdbe64b22820753da90995b3a73d02907eaeeac6f2414962a566aaa18ea"
|
||||
dependencies = [
|
||||
"bindgen 0.66.999",
|
||||
"bindgen 0.69.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
|
@ -144,6 +144,8 @@ backtrace = { path = "build/rust/backtrace" }
|
|||
bindgen_0_63 = { package = "bindgen", path = "build/rust/bindgen-0.63" }
|
||||
bindgen_0_64 = { package = "bindgen", path = "build/rust/bindgen-0.64" }
|
||||
bindgen = { path = "build/rust/bindgen" }
|
||||
# 0.69.1 + https://github.com/rust-lang/rust-bindgen/pull/2689
|
||||
bindgen_0_69 = { package = "bindgen", git = "https://github.com/rust-lang/rust-bindgen", rev = "86f3dbe846020e2ba573d6eb38d1434d0cbcbb40" }
|
||||
|
||||
# Patch nix 0.24 to 0.27
|
||||
nix = { path = "build/rust/nix" }
|
||||
|
|
|
@ -686,6 +686,11 @@ who = "Andreas Pehrson <apehrson@mozilla.com>"
|
|||
criteria = "safe-to-deploy"
|
||||
delta = "0.68.1 -> 0.69.1"
|
||||
|
||||
[[audits.bindgen]]
|
||||
who = "Mike Hommey <mh+mozilla@glandium.org>"
|
||||
criteria = "safe-to-deploy"
|
||||
delta = "0.69.1 -> 0.69.1@git:86f3dbe846020e2ba573d6eb38d1434d0cbcbb40"
|
||||
|
||||
[[audits.bit-set]]
|
||||
who = "Aria Beingessner <a.beingessner@gmail.com>"
|
||||
criteria = "safe-to-deploy"
|
||||
|
|
|
@ -23,6 +23,10 @@ url = "https://raw.githubusercontent.com/mozilla/supply-chain/main/audits.toml"
|
|||
audit-as-crates-io = true
|
||||
notes = "This is the upstream code plus a few local fixes, see bug 1685697."
|
||||
|
||||
[policy."bindgen:0.69.1@git:86f3dbe846020e2ba573d6eb38d1434d0cbcbb40"]
|
||||
audit-as-crates-io = true
|
||||
notes = "This is 0.69.1 + https://github.com/rust-lang/rust-bindgen/pull/2689."
|
||||
|
||||
[policy.chardetng]
|
||||
audit-as-crates-io = true
|
||||
notes = "This is a crate Henri wrote which is also published. We should probably update Firefox to tip and certify that."
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -24,7 +24,7 @@ build = "build.rs"
|
|||
description = "Automatically generates Rust FFI bindings to C and C++ libraries."
|
||||
homepage = "https://rust-lang.github.io/rust-bindgen/"
|
||||
documentation = "https://docs.rs/bindgen"
|
||||
readme = "README.md"
|
||||
readme = "../README.md"
|
||||
keywords = [
|
||||
"bindings",
|
||||
"ffi",
|
||||
|
@ -64,34 +64,28 @@ search = "# Unreleased"
|
|||
name = "bindgen"
|
||||
path = "lib.rs"
|
||||
|
||||
[dependencies]
|
||||
bitflags = "2.2.1"
|
||||
cexpr = "0.6"
|
||||
lazy_static = "1"
|
||||
lazycell = "1"
|
||||
peeking_take_while = "0.1.2"
|
||||
rustc-hash = "1.0.1"
|
||||
shlex = "1"
|
||||
|
||||
[dependencies.annotate-snippets]
|
||||
version = "0.9.1"
|
||||
features = ["color"]
|
||||
optional = true
|
||||
|
||||
[dependencies.bitflags]
|
||||
version = "2.2.1"
|
||||
|
||||
[dependencies.cexpr]
|
||||
version = "0.6"
|
||||
|
||||
[dependencies.clang-sys]
|
||||
version = "1"
|
||||
features = ["clang_6_0"]
|
||||
|
||||
[dependencies.lazy_static]
|
||||
version = "1"
|
||||
|
||||
[dependencies.lazycell]
|
||||
version = "1"
|
||||
|
||||
[dependencies.log]
|
||||
version = "0.4"
|
||||
optional = true
|
||||
|
||||
[dependencies.peeking_take_while]
|
||||
version = "0.1.2"
|
||||
|
||||
[dependencies.prettyplease]
|
||||
version = "0.2.7"
|
||||
features = ["verbatim"]
|
||||
|
@ -113,12 +107,6 @@ features = [
|
|||
]
|
||||
default-features = false
|
||||
|
||||
[dependencies.rustc-hash]
|
||||
version = "1.0.1"
|
||||
|
||||
[dependencies.shlex]
|
||||
version = "1"
|
||||
|
||||
[dependencies.syn]
|
||||
version = "2.0"
|
||||
features = [
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
[![crates.io](https://img.shields.io/crates/v/bindgen.svg)](https://crates.io/crates/bindgen)
|
||||
[![docs.rs](https://docs.rs/bindgen/badge.svg)](https://docs.rs/bindgen/)
|
||||
|
||||
# `bindgen`
|
||||
|
||||
**`bindgen` automatically generates Rust FFI bindings to C (and some C++) libraries.**
|
||||
|
||||
For example, given the C header `doggo.h`:
|
||||
|
||||
```c
|
||||
typedef struct Doggo {
|
||||
int many;
|
||||
char wow;
|
||||
} Doggo;
|
||||
|
||||
void eleven_out_of_ten_majestic_af(Doggo* pupper);
|
||||
```
|
||||
|
||||
`bindgen` produces Rust FFI code allowing you to call into the `doggo` library's
|
||||
functions and use its types:
|
||||
|
||||
```rust
|
||||
/* automatically generated by rust-bindgen 0.99.9 */
|
||||
|
||||
#[repr(C)]
|
||||
pub struct Doggo {
|
||||
pub many: ::std::os::raw::c_int,
|
||||
pub wow: ::std::os::raw::c_char,
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
pub fn eleven_out_of_ten_majestic_af(pupper: *mut Doggo);
|
||||
}
|
||||
```
|
||||
|
||||
## Users Guide
|
||||
|
||||
[📚 Read the `bindgen` users guide here! 📚](https://rust-lang.github.io/rust-bindgen)
|
||||
|
||||
## MSRV
|
||||
|
||||
The `bindgen` minimum supported Rust version is **1.60.0**.
|
||||
|
||||
The `bindgen-cli` minimum supported Rust version is **1.64.0**.
|
||||
|
||||
No MSRV bump policy has been established yet, so MSRV may increase in any release.
|
||||
|
||||
The MSRV is the minimum Rust version that can be used to *compile* each crate. However, `bindgen` and `bindgen-cli` can generate bindings that are compatible with Rust versions below the current MSRV.
|
||||
|
||||
Most of the time, the `bindgen-cli` crate will have a more recent MSRV than `bindgen` as crates such as `clap` require it.
|
||||
|
||||
## API Reference
|
||||
|
||||
[API reference documentation is on docs.rs](https://docs.rs/bindgen)
|
||||
|
||||
## Environment Variables
|
||||
|
||||
In addition to the [library API](https://docs.rs/bindgen) and [executable command-line API][bindgen-cmdline],
|
||||
`bindgen` can be controlled through environment variables.
|
||||
|
||||
End-users should set these environment variables to modify `bindgen`'s behavior without modifying the source code of direct consumers of `bindgen`.
|
||||
|
||||
- `BINDGEN_EXTRA_CLANG_ARGS`: extra arguments to pass to `clang`
|
||||
- Arguments are whitespace-separated
|
||||
- Use shell-style quoting to pass through whitespace
|
||||
- Examples:
|
||||
- Specify alternate sysroot: `--sysroot=/path/to/sysroot`
|
||||
- Add include search path with spaces: `-I"/path/with spaces"`
|
||||
- `BINDGEN_EXTRA_CLANG_ARGS_<TARGET>`: similar to `BINDGEN_EXTRA_CLANG_ARGS`,
|
||||
but used to set per-target arguments to pass to clang. Useful to set system include
|
||||
directories in a target-specific way in cross-compilation environments with multiple targets.
|
||||
Has precedence over `BINDGEN_EXTRA_CLANG_ARGS`.
|
||||
|
||||
Additionally, `bindgen` uses `libclang` to parse C and C++ header files.
|
||||
To modify how `bindgen` searches for `libclang`, see the [`clang-sys` documentation][clang-sys-env].
|
||||
For more details on how `bindgen` uses `libclang`, see the [`bindgen` users guide][bindgen-book-clang].
|
||||
|
||||
## Releases
|
||||
|
||||
We don't follow a specific release calendar, but if you need a release please
|
||||
file an issue requesting that (ping `@emilio` for increased effectiveness).
|
||||
|
||||
## Contributing
|
||||
|
||||
[See `CONTRIBUTING.md` for hacking on `bindgen`!](./CONTRIBUTING.md)
|
||||
|
||||
[bindgen-cmdline]: https://rust-lang.github.io/rust-bindgen/command-line-usage.html
|
||||
[clang-sys-env]: https://github.com/KyleMayes/clang-sys#environment-variables
|
||||
[bindgen-book-clang]: https://rust-lang.github.io/rust-bindgen/requirements.html#clang
|
|
@ -1432,57 +1432,58 @@ impl Item {
|
|||
}
|
||||
}
|
||||
|
||||
// Guess how does clang treat extern "C" blocks?
|
||||
if cursor.kind() == CXCursor_UnexposedDecl {
|
||||
Err(ParseError::Recurse)
|
||||
} else {
|
||||
match cursor.kind() {
|
||||
// On Clang 18+, extern "C" is reported accurately as a LinkageSpec.
|
||||
// Older LLVM treat it as UnexposedDecl.
|
||||
CXCursor_LinkageSpec | CXCursor_UnexposedDecl => {
|
||||
Err(ParseError::Recurse)
|
||||
}
|
||||
|
||||
// We allowlist cursors here known to be unhandled, to prevent being
|
||||
// too noisy about this.
|
||||
match cursor.kind() {
|
||||
CXCursor_MacroDefinition |
|
||||
CXCursor_MacroExpansion |
|
||||
CXCursor_UsingDeclaration |
|
||||
CXCursor_UsingDirective |
|
||||
CXCursor_StaticAssert |
|
||||
CXCursor_FunctionTemplate => {
|
||||
debug!(
|
||||
CXCursor_MacroDefinition |
|
||||
CXCursor_MacroExpansion |
|
||||
CXCursor_UsingDeclaration |
|
||||
CXCursor_UsingDirective |
|
||||
CXCursor_StaticAssert |
|
||||
CXCursor_FunctionTemplate => {
|
||||
debug!(
|
||||
"Unhandled cursor kind {:?}: {:?}",
|
||||
cursor.kind(),
|
||||
cursor
|
||||
);
|
||||
Err(ParseError::Continue)
|
||||
}
|
||||
|
||||
CXCursor_InclusionDirective => {
|
||||
let file = cursor.get_included_file_name();
|
||||
match file {
|
||||
None => {
|
||||
warn!("Inclusion of a nameless file in {:?}", cursor);
|
||||
}
|
||||
Some(included_file) => {
|
||||
for cb in &ctx.options().parse_callbacks {
|
||||
cb.include_file(&included_file);
|
||||
}
|
||||
|
||||
ctx.add_dep(included_file.into_boxed_str());
|
||||
}
|
||||
}
|
||||
Err(ParseError::Continue)
|
||||
}
|
||||
|
||||
_ => {
|
||||
// ignore toplevel operator overloads
|
||||
let spelling = cursor.spelling();
|
||||
if !spelling.starts_with("operator") {
|
||||
warn!(
|
||||
"Unhandled cursor kind {:?}: {:?}",
|
||||
cursor.kind(),
|
||||
cursor
|
||||
);
|
||||
}
|
||||
CXCursor_InclusionDirective => {
|
||||
let file = cursor.get_included_file_name();
|
||||
match file {
|
||||
None => {
|
||||
warn!(
|
||||
"Inclusion of a nameless file in {:?}",
|
||||
cursor
|
||||
);
|
||||
}
|
||||
Some(included_file) => {
|
||||
for cb in &ctx.options().parse_callbacks {
|
||||
cb.include_file(&included_file);
|
||||
}
|
||||
|
||||
ctx.add_dep(included_file.into_boxed_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
// ignore toplevel operator overloads
|
||||
let spelling = cursor.spelling();
|
||||
if !spelling.starts_with("operator") {
|
||||
warn!(
|
||||
"Unhandled cursor kind {:?}: {:?}",
|
||||
cursor.kind(),
|
||||
cursor
|
||||
);
|
||||
}
|
||||
}
|
||||
Err(ParseError::Continue)
|
||||
}
|
||||
|
||||
Err(ParseError::Continue)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче