summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-22Release v0.63.0 (#2357)Christian Poveda Ruiz
2022-11-22Deprecate Rust targets lower or equal than `1.30` (#2356)Christian Poveda Ruiz
2022-11-22Add `--wrap-unsafe-ops` option (#2354)Christian Poveda Ruiz
This reverts commit e8ffb42ab66405ac56d04494a30e54b584f2d4dd and adds a new `--wrap-unsafe-ops` option as a workaround.
2022-11-22Add `ParseCallbacks::process_comment` (#2347)Christian Poveda Ruiz
This method can be used to process comments and replace them with whatever the user wants.
2022-11-21Introduce `DeriveInfo` (#2355)Christian Poveda Ruiz
This PR introduces a new non-exhaustive `struct` called `DeriveInfo` to be used as the sole argument of `ParseCallbacks::add_derives` with the purpose of being able to extend the information passed to this method in a backwards-compatible manner, meaning that adding new fields to `DeriveInfo` won't be a breaking change when releasing a new version.
2022-11-17Remove deprecated methods (#2346)Christian Poveda Ruiz
2022-11-17add LICENSE symlinks to all individually published cratesFabio Valentini
2022-11-17v0.62.0v0.62.0Emilio Cobos Álvarez
2022-11-14document regex arguments handling (#2345)Christian Poveda Ruiz
2022-11-11Document and test allowlisting and blocklisting methods (#2344)Christian Poveda Ruiz
2022-11-11Fix duplicated function names (#2341)Christian Poveda Ruiz
Even though this change does name deduplication in a slower way, it avoids name collisions without any breaking changes in the test suite. Fixes #2202
2022-11-10Handle the `const struct *` and `struct *` patterns (#2304)Christian Poveda Ruiz
Given that C keeps a different namespace for `struct`/`enum`/`union` and `typedef` aliases. The following patterns ```c typedef const struct foo { void *inner; } *foo; typedef struct bar { void *inner; } *bar; ``` are valid C code and produces both a `struct` and a pointer called `foo` and `bar` in different namespaces. Given that Rust does not make this distinction, we add the `_ptr` prefix to the pointer type aliases to avoid any name collisions.
2022-11-09Fix inline function identificationkohanis
2022-11-09ir: Don't crash with built-in unexposed types from libclang.Emilio Cobos Álvarez
This fixes #2325. The issue is that `__bf16` is not exposed at all by libclang, which causes us to crash. It's a bit of a shame libclang doesn't expose it but there's no rust equivalent I think, so this should be ok for now. Unfortunately no test because the header crashes older clang versions.
2022-11-04Fix clippy warnings (#2336)Christian Poveda Ruiz
2022-11-04Wrap `unsafe` function's bodies in `unsafe` blocks (#2266)Christian Poveda Ruiz
This guarantees that bindings generated by `bindgen` compile even if the `unsafe_op_in_unsafe_fn` lint is denied.
2022-11-04Clean the implementation of `Default` for `BindgenOptions` (#2332)Christian Poveda Ruiz
* Clean the implementation of `Default` for `BindgenOptions`
2022-11-04Add support for the `"C-unwind"` ABI (#2334)Christian Poveda Ruiz
* Add support for the `"C-unwind"` ABI This allows using `"C-unwind"` as an ABI override if the rust target is nightly.
2022-11-02Add the `--override-abi` option (#2329)Christian Poveda Ruiz
* Add the `--override-abi` option. This option can be used from the CLI with the <abi>:<regex> syntax and it overrides the ABI of a function if it matches <regex>. Fixes #2257
2022-11-02Allow callback composition (#2330)Christian Poveda Ruiz
* Allow callback composition Store all the callbacks added to the builder in a `Vec` so bindgen invokes each one of them in a last-to-first manner.
2022-11-02Fix clippy warnings (#2331)Christian Poveda Ruiz
2022-11-01Add a mechanism to rerun bindgen with the same user options (#2292)Christian Poveda Ruiz
* Run `Bindings::generate` again if required. This adds a mechanism so `bindgen` is able to run `Bindings::generate` multiple times with the same user input if the `generate_static_inline` option is enabled and `GenerateResult::ShouldRestart` is returned by `Bindings::generate`. This is done to eventually solve #1090 which would require to check for any static inline functions and generate a new header file to be used as an extra input and run `Bindings::generate` again.
2022-11-01Add tutorial about non-system libraries (#2318)Christian Poveda Ruiz
* add tutorial about non-system libraries * fix broken comment * ignore code snippet
2022-10-31Replace confusing note in cpp.md on "RVO"Charlie Barto
The original commit adding this note referenced #778, but then went on to talk about how the problem was RVO and that the problem is not possible to solve in bindgen because bindgen can't know if RVO happened or not. However this is incorrect in several ways. The problem in #778 has nothing whatsoever to do with RVO but rather with bindgen simply not understanding the calling convention for passing or returning types that are "non trivial for the purposes of calls". This is completely consistent and does not depend on what the optimizer decided to do (after all, if callsite side calling-convention did depend on what the optimizer happened to do inside the function it would be impossible for C++ compilers to emit correct calls to external C++ functions!). You can see this quite clearly [here](https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEEgDspAAOqAqETgwe3r7%2ByanpAiFhkSwxcVyJdpgOGUIETMQEWT5%2BAVU1AnUNBEUR0bEJtvWNzTltwz2hfaUDFQCUtqhexMjsHAD06wDUACoAnkmYW3tLxFtoWFsIsZikWyRbtKhM6FuGW5iqrEn0AHQmGgAggoCMQvA4tgRMCCokwlFsTPErPEACImADMViBILBEKhIIRSIBgK2pMh0IIEDmGKxJLJ%2BMpaAYBIZ5gAbNTMcSyVsAG6oPDoABUkJpxMRaK5QIZWwUAEcvA1MFTCbSeTKCIjkZK1WTiJgCMsGKKpYCJeKgaECFsWExQiqtdz6RTIQj0SjZQqlVSxUCnaT9YbiMa0gAvTCoKgQBmc2kSjgLWicACsvD8HC0pFQnDc1msstOqwRZnRPFIBE0CYWAGsQOj0b9603my22fpOJI05Ws5xeAoQBpy5WFnBYEg0CwknRYuRKBOp/Q4sAFMwkgoEKgCKQsLy8KsAGp4TAAdwA8od02WaLQocR%2BxAot2oqEGntOGWJ2xBKeGLQ3xneCwW0jHEADtzwfUal5aFu0%2BaovChd9eCtTAkzA2g8CiYhXw8LBu1BPAWCQhYqAMZdDxPc9GCQmRBBEMR2CkWj5CUNRu10Lh9EMYw80sfRMP7SAFlQJJHAEfsOD7VDqjEvwIFcUY/E44IphKMo9BSNJZMUjT8lk3o1NmWxpI6BguhGTwWj0dpZPMyZin6cohm6HTOJBboDMciQFgUQtGMTFMuzA7MOC2VQAA42QAWjZSQtmAZBkC2aMwQYas5mS3BCAecxSzmXgKwAuYazrBsW3Kps2zQztSHTTMQr7AchyK0hR0QFBUEnacyAoCB526kBl1XddN23TBdwPI8zwvGjr1ve9HzA59mGIf8P06r8CB/P9uyA7jQMzfBIMcaCJMzODkAQtYyxQtDMwwrCcIwNZMwIojuATPgyIUCjpuoj7mPo8QmP4QRFBUdQwN0AIDCMFBeJsB7BKpLNRIyCSoqoBhUCi1DBUwKKmRxcEiDvKT7FklwGHcSycmU6nPJmJzNIKTJaaUvItIyRn1LckzbImVzjIp2oJh5oz3Is7IOcl%2Bzpl5ny/O89sOFTWruxCsLIpiuKEqSlKvDSjKICy0nizygrhxK%2BtGwq8qVZqureAa2wmsKrRipVswgvq3tmo9hZoLvDIQEkIA) Notice how the body of `main` is identical no matter if copy elision is enabled or not. To get `test` passed in a register you must remove the copy constructor. I spent a few hours being really confused by this note before I tracked down the original PR and realized what it was trying to talk about. Hopefully this saves the next person to come across it the same trouble. As an aside I suspect the clang c bindings can already give you information on special member functions and base classes, making it fairly easy to do this correctly. AFAICT bindgen already does not rely on llvm's code generation facilities to figure out the ABI of calls for C (except perhaps indirectly, via rustc), so this seems reasonable to just do in bindgen, explicitly.
2022-10-24Update README.mdChristian Poveda Ruiz
2022-10-24Avoid suppressing panic messages (#2323)Christian Poveda Ruiz
* print `PanicInfo` using hook * update changelog
2022-10-24Sanitize RegexSet input so alternation is properly handled (#1756)Adam Gausmann
* tests: Avoid using globs as regexes * Sanitize regex set input to properly handle alternation * Add test case for alternates/anchors interaction * emit warning if wildcard pattern is used * update changelog and bump versions Co-authored-by: Darren Kulp <darren@kulp.ch> Co-authored-by: Christian Poveda <christian.poveda@ferrous-systems.com>
2022-10-24Merge pull request #2321 from GKFX/private_fieldsChristian Poveda Ruiz
Document visibility annotation
2022-10-23Make doctests passGeorge Bateman
2022-10-23Document visibility annotationGeorge Bateman
2022-10-22Remove Travis-CI badgesDarren Kulp
Travis-CI was fully removed as of faf8b3edbaeb591315fc6f370c1228b8caf9860f. The only badge now [mentioned in the Cargo book][1] is `maintenance`. The `travis-ci` badge reference was [removed from Cargo two years ago][2]. The Cargo book advises putting badges in README.md instead. [1]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section [2]: https://github.com/rust-lang/cargo/commit/60779a006f98fba1680182c174134363d08e0a9b
2022-10-22clang: Detect anonymous items explicitly, rather than relying on empty names.Emilio Cobos Álvarez
In Clang 16, anonymous items may return names like `(anonymous union at ..)` rather than empty names. The right way to detect them is using clang_Cursor_isAnonymous. Fixes #2312 Closes #2316 Co-Authored-by: Patrick Walton <pcwalton@fb.com>
2022-10-22Use panic hooks instead of using `catch_unwind`Christian Poveda
One of the advantages of doing this is that `ParseCallbacks` no longer needs to implement `UnwindSafe` which means that users can rely on `RefCell` and `Cell` to extract information from the callbacks. Users relying on `catch_unwind` can still achieve similar behavior using `std::thread::spawn`. Fixes #2147.
2022-10-20Merge pull request #2315 from ferrous-systems/book-custom-targetChristian Poveda Ruiz
Add FAQ about custom targets
2022-10-20add FAQ about custom targetsChristian Poveda
2022-10-18Merge pull request #2313 from ferrous-systems/fix-clippy-lintsChristian Poveda
Fix clippy lints
2022-10-18fix clippy lintsChristian Poveda
2022-10-16Specify readme properly.Emilio Cobos Álvarez
2022-10-16v0.61.0Emilio Cobos Álvarez
2022-10-16ci: clippy fixes.Emilio Cobos Álvarez
The allowed casts are because c_longlong etc aren't guaranteed to map to i64 / etc. I believe c_double maps to f64 in all platforms tho.
2022-10-16Add a few missing changelog entries.Emilio Cobos Álvarez
2022-10-16Remove no-longer-correct include entry in Cargo.toml.Emilio Cobos Álvarez
2022-10-16Move the csmith-fuzzing directory to the top level.Emilio Cobos Álvarez
2022-10-16Handle incomplete external array constantsChristian Poveda
This adds a new special case for constants like: ```c extern const char some_static_string[]; ``` so `bindgen` emits a `static` instead of a `static mut` for them.
2022-10-12Merge pull request #2302 from ferrous-systems/clonable-builderChristian Poveda
Implement `Clone` for `Builder`
2022-10-10Merge pull request #2299 from ferrous-systems/more-robust-postprocessingChristian Poveda
Make postprocessing more robust
2022-10-07Implement `Clone` for `Builder`Christian Poveda
This is done by moving all the remaining `Builder` state into `BindgenOptions` so any internal logic that affects `Builder` state only runs once the builder is consumed by `Builder::generate`: - move `input_headers` to `BindgenOptions`. - move `input_header_contents` to `BindgenOptions`. - derive `Clone` for `Builder`.
2022-10-07update `CHANGELOG.md` (#2298)Christian Poveda
2022-10-06Make postprocessing more robustChristian Poveda
This is done by merging extern blocks and sorting items in every module instead of just in the root module. The tests were changed to use `cxx` namespaces so they effectively check that items are manipulated correctly in every single module.
2022-10-06Merge pull request #2228 from justsmth/generated_name_overrideChristian Poveda
Generated name override