summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2021-02-15Make clang version parsing logic more robustMarcel Hlopko
Previously the function assumed that the version number appeared in the third word. This PR adds a heuristic - take the first word that starts with a number. This way we can also parse: `debian clang version 11.0` that my clang reports.
2021-02-07codegen: Track union layout more accurately.Emilio Cobos Álvarez
Instead of always generating the _bindgen_union_align method (which shouldn't be needed at all for Rust structs, since the struct layout tracker already deals with adding repr(align) as necessary) make sure to visit all fields appropriately to generate the correct alignment.
2021-01-29Generate fields as non-pub if they would be access restricted in C++.Weston Carvalho
2021-01-10Use absolute paths for unsaved files passed to clang and prepend -include ↵Andrey Pushkar
directives to them. Fixes #1771 Closes #1857
2020-12-26Allow log stubs to be unused.Emilio Cobos Álvarez
2020-12-20comp: Fix bitfields to allow underaligned fields after them to take padding ↵Emilio Cobos Álvarez
space. Fixes #1947. There are two separate issues here: First, the change in comp.rs ensures that we don't round up the amount of storage to the alignment of the bitfield. That generates the "expected" output in #1947 (`__BindgenBitfieldUnit<[u8; 3], u16>`). But that's still not enough to fix that test-case because __BindgenBitfieldUnit would be aligned and have padding, and Rust won't put the extra field in the padding. In order to ensure the bitfield starts at the right alignment, but that Rust can put stuff in the extra field, we need to make a breaking change and split the generated fields in two: One preceding that guarantees alignment, and the actual storage, bit-aligned. This keeps the existing behavior while fixing that test-case.
2020-12-20context: Escape the dyn keyword properly.Emilio Cobos Álvarez
Fixes #1946
2020-12-19var: Avoid a bit of duplication with fit_macro_constants.Emilio Cobos Álvarez
2020-12-19Add option to fit macro consts into smaller typesAntoni Simka
Add a `--fit-macro-constant-types` option to make bindgen try to fit macro integer constants into types smaller than u32/i32. Useful especially when dealing with 8/16-bit architectures. Closes #1945
2020-12-15Remove unsued mutable field logic.Weston Carvalho
2020-12-02dyngen: Pass null-terminated byte strings to libloading.Emilio Cobos Álvarez
Fixes #1938.
2020-12-02cli: Expose module_raw_lines to the CLI.Emilio Cobos Álvarez
This makes command_line_args properly return them, instead of dropping them on the floor.
2020-11-28struct_layout: Fix field offset computation for packed(n) structs.Emilio Cobos Álvarez
This can cause unnecessary padding to be computed otherwise at the end of the struct. With repr(packed(n)), a field can have padding to adjacent fields as long as its alignment is less than n. So reuse the code we have to align to a field layout, aligning to the struct layout instead. Fixes #1934
2020-11-26lib: Use if let on recently-introduced code.Emilio Cobos Álvarez
2020-11-26lib: Improve c++ auto-detection.Emilio Cobos Álvarez
Fixes #1919, as otherwise we peek the wrong include paths unless you pass "-x c++" or such.
2020-11-26Add --no-default <regex> flagVarphone Wong
Sometimes, we need customize the implement of `Default` for certain types, In these cases, the `nodefault` annotation can be used to prevent bindgen to autoderive the `Default` traits for a type.
2020-11-25Remove cfg-if dependency.Emilio Cobos Álvarez
We use it so little that it's not worth it.
2020-11-25dyngen: Handle variadic functions.Emilio Cobos Álvarez
Right now trying to generate a dynamic library with variadic functions panics because we don't account for the extra `...` in the arguments. Keeping the current interface for variadic functions is tricky, as we cannot "wrap" a variadic function (VaList[1] is nightly-only). However, we don't need to. We're already exposing the libloading error, so exposing the function pointer field as public is just fine and allows consumers to call the variadic function. At that point the can_call() / CheckFoo libraries become pointless (you can just do library.function.is_ok() or such), so we can simplify the code as well removing those. [1]: https://doc.rust-lang.org/std/ffi/struct.VaList.html
2020-11-25codegen: Minor nits for dynamic function generation.Emilio Cobos Álvarez
2020-11-25Add dynamic loading supportJoe Ellis
Closes #1541. Closes #1846. Co-authored-by: Michael-F-Bryan <michaelfbryan@gmail.com>
2020-11-25Rustfmt to green up CI.Emilio Cobos Álvarez
2020-10-16codegen: Allow to not derive Debug on enums.Emilio Cobos Álvarez
Fixes #1899. This code predated all the derive machinery, and always hardcoded its derives. We could avoid hard-coding the other traits, but those seem usually-useful, so leave them there for backwards compat for now.
2020-09-16codegen: Use shorthand struct initialization when possible.Emilio Cobos Álvarez
2020-09-16codegen: Deindent a bit some recently-introduced objective-c code.Emilio Cobos Álvarez
2020-09-16Updates for CISebastian Imlay
2020-09-16Updates from PR commentsSebastian Imlay
2020-09-16ran cargo fmtSebastian Imlay
2020-09-16Updates base on commentsSebastian Imlay
* Added TryInto trait implementation from parent to child interfaces. * Added HashSet for protocols so that the protocol inheritance works as well.
2020-09-16Initial stuff for changing ownership and adding inheritanceSebastian Imlay
2020-09-15Use path_for_whitelisting instead of canonical_path when matching for enum ↵Youmu
type specification and template opaque type specification
2020-08-29codegen: Use shorthand initialization in VTable::new.Emilio Cobos Álvarez
2020-08-25Added constructor return type for wasm32 target (#1877)Emilio Cobos Álvarez
2020-08-25codegen: Do generate unnamed enums, as they can be referred to by members.Emilio Cobos Álvarez
Fixes #1880
2020-08-24Optimized condition order, added regression testAudrius
2020-08-24lib: Fix inferred target when clang target differs from rust target.Emilio Cobos Álvarez
Fixes #1211.
2020-08-21Added constructor return type for wasm32 targetAudrius
2020-08-15codegen: Simplify a bit the code in #1847Emilio Cobos Álvarez
2020-08-15Added Bindgen names to objective-c pointer return typesSebastian Imlay
* Took advantage of the repr transparent to use Bindgen return type names. * Updated unit tests and book
2020-08-14Add --target to the clang args earlierMike Hommey
Because the --target was passed after the include path detection, in cases of cross-compilation, the include path detection would add paths relevant to the host (e.g. /usr/include/x86_64_linux-gnu on x86_64 linux while targeting something else), possibly breaking things along the way.
2020-08-13context: Don't pass --target=rust-target to clang when building for the host.Emilio Cobos Álvarez
This will prevent common issues in platforms where the Rust target is not the clang target, like aarch64-apple-darwin (Rust) vs. arm64-apple-darwin. We may want to special-case those too when cross-compiling.
2020-08-09Cleanup some `clippy::unused_io_amount` errorsVarphone Wong
2020-08-09Add --default-macro-constant-typeChih-Hung Hsieh
* --default-macro-constant-type could be 'signed' or 'unsigned' * Its default value is 'unsigned' to use u32/u64 for C macro constants that fit into the u32/u64 ranges. * For old C libraries that use macros as int/long parameter and/or return value types, their macros are better declared as i32/i64 if the values fit the i32/i64 ranges, to be compatible with c_int/c_long types. They can use "--default-macro-constant-type signed"
2020-08-04Move `__bindgen_anon_` to constant `DEFAULT_ANON_FIELDS_PREFIX`Varphone Wong
2020-08-04Fix “warning: irrefutable if-let pattern” on add to output_vectorVarphone Wong
2020-08-04Make anon-fields-prefix non-optionalDarren Kulp
2020-08-04Add --anon-fields-prefix optionVarphone Wong
Allow to use the given prefix for the anon fields instead of `__bindgen_anon_`.
2020-08-04Fixed const-ness of multidimensional arraysJoseph Angelo
2020-08-03codegen: Use shorthand initialization in EnumBuilder.Emilio Cobos Álvarez
This was introduced in #1850.
2020-08-03Add --no-debug <regex> flagVarphone Wong
2020-08-03Improves bindings for typed and anonymous enumsCameron Mulhern