Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update clang-sys #1489

Merged
merged 1 commit into from
Jan 16, 2019
Merged

Update clang-sys #1489

merged 1 commit into from
Jan 16, 2019

Conversation

KyleMayes
Copy link
Contributor

This update of clang-sys is intended to improve the libclang version selection when linking dynamically as described here.

In short, libclang shared library versions are no longer determined by the filename, they are determined by loading the library and attempting to load functions until the version can be determined.

This should improve behavior when there are multiple instances of libclang available and should resolve several issues, namely servo/servo#21478 and servo/servo#22384.

Copy link
Contributor

@emilio emilio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@jvo203
Copy link

jvo203 commented Jan 25, 2019

The changes introduced by this commit cause a compilation hang (an infinite loop) on some (not all) CentOS 6 installations. This is likely dependent on where and how clang has been installed on CentOS 6.

For details (git bisect etc.) please see the following issue:

Twinklebear/ispc-rs#8

Forcibly downgrading bindgen to 0.46 (before this clang-sys commit) fixes the issue.

@KyleMayes
Copy link
Contributor Author

I tried looking into this with CentOS 6.10 in a Docker container.

My attempt to build LLVM/Clang 7 from source has failed, I'm going to try again later with another version.

If that doesn't work (either the build or reproducing the issue), what version of LLVM/Clang are you using and how did you get it?

@jvo203
Copy link

jvo203 commented Jan 25, 2019

Both CentOS 6.10 machines where the compilation hanged have clang installed from the alonid epel repository:

https://copr.fedorainfracloud.org/coprs/alonid/llvm-5.0.1/

[chris@capricorn ~]$ cat /etc/redhat-release
CentOS release 6.10 (Final)
[chris@capricorn ~]$ clang --version
clang version 5.0.1
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/llvm-5.0.1/bin

.bashrc contains references to llvm 5.0.1:
export PATH=/opt/llvm-5.0.1/bin:/home/chris/bin:/home/chris/local/bin:.:$PATH
export LD_LIBRARY_PATH=.:/home/chris/local/lib:/home/chris/libmicrohttpd/lib:/usr/local/lib:/home/chris/libwebp/lib:/home/chris/boost/lib:$LD_LIBRARY_PATH
export LIBCLANG_PATH=/opt/llvm-5.0.1/lib64
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

alonid-llvm-5.0.1-epel-6.repo:
[alonid-llvm-5.0.1]
name=Copr repo for llvm-5.0.1 owned by alonid
baseurl=https://copr-be.cloud.fedoraproject.org/results/alonid/llvm-5.0.1/epel-6-$basearch/
type=rpm-md
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/alonid/llvm-5.0.1/pubkey.gpg
repo_gpgcheck=0
enabled=1
enabled_metadata=1

@emilio
Copy link
Contributor

emilio commented Jan 26, 2019

Could you post the result of running a debug version of bindgen on whatever headers with RUST_LOG=bindgen on the environment?

$ RUST_LOG='bindgen' ./target/debug/bindgen test.h 2>&1 | head -6                                                                                                                                               
[2019-01-26T04:18:43Z INFO  bindgen] Clang Version: clang version 7.0.1 (Fedora 7.0.1-2.fc30)
[2019-01-26T04:18:43Z WARN  bindgen] Using clang (7, 0), expected (3, 9)
[2019-01-26T04:18:43Z DEBUG bindgen] Generating bindings, libclang at /usr/lib64/libclang.so.7
[2019-01-26T04:18:43Z DEBUG bindgen] Trying to find clang with flags: []
[2019-01-26T04:18:43Z DEBUG bindgen] Found clang: Clang { path: "/usr/bin/clang", version: Some(CXVersion { Major: 7, Minor: 0, Subminor: 1 }), c_search_paths: Some(["/usr/local/include", "/usr/lib64/clang/7.0.1/include", "/usr/include"]), cpp_search_paths: Some(["/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9", "/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/x86_64-redhat-linux", "/usr/bin/../lib/gcc/x86_64-redhat-linux/9/../../../../include/c++/9/backward", "/usr/local/include", "/usr/lib64/clang/7.0.1/include", "/usr/include"]) }
[2019-01-26T04:18:43Z DEBUG bindgen] Fixed-up options: BindgenOptions { blacklisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_items: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, opaque_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustfmt_path: None, whitelisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_vars: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, default_enum_style: Consts, bitfield_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enum_modules: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: None, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: None, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: [], module_lines: {}, clang_args: ["-isystem", "/usr/local/include", "-isystem", "/usr/lib64/clang/7.0.1/include", "-isystem", "/usr/include", "test.h"], input_header: Some("test.h"), input_unsaved_files: [], parse_callbacks: None, codegen_config: FUNCTIONS | TYPES | VARS | METHODS | CONSTRUCTORS | DESTRUCTORS, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: Stable_1_21, rust_features: RustFeatures { untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, repr_transparent: false, repr_packed_n: false, thiscall_abi: false }, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: None, no_partialeq_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_copy_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_hash_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true } }

And the full error would be helpful too. Thanks!

@jvo203
Copy link

jvo203 commented Jan 27, 2019

A version v0.47.0 freezes indefinitely, CTRL+C is needed to stop it.
[chris@capricorn rust-bindgen]$ RUST_LOG='bindgen' ./target/debug/bindgen ../fits_web_ql/wrapper.h 2>&1 | head -6
[2019-01-27T00:07:47Z INFO bindgen] Clang Version: clang version 5.0.1
[2019-01-27T00:07:47Z WARN bindgen] Using clang (5, 0), expected (3, 9)
[2019-01-27T00:07:47Z DEBUG bindgen] Generating bindings, libclang at /opt/llvm-5.0.1/lib64/libclang.so.5.0
[2019-01-27T00:07:47Z DEBUG bindgen] Trying to find clang with flags: []
[2019-01-27T00:07:47Z DEBUG bindgen] Found clang: Clang { path: "/opt/llvm-5.0.1/bin/clang", version: Some(CXVersion { Major: 5, Minor: 0, Subminor: 1 }), c_search_paths: Some(["/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "/usr/local/include", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "/usr/include"]), cpp_search_paths: Some(["/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1/x86_64-redhat-linux", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1/backward", "/usr/local/include", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "/usr/include"]) }
[2019-01-27T00:07:47Z DEBUG bindgen] Fixed-up options: BindgenOptions { blacklisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_items: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, opaque_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustfmt_path: None, whitelisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_vars: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, default_enum_style: Consts, bitfield_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enum_modules: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: None, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: None, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: [], module_lines: {}, clang_args: ["-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "-isystem", "/usr/local/include", "-isystem", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "-isystem", "/usr/include", "../fits_web_ql/wrapper.h"], input_header: Some("../fits_web_ql/wrapper.h"), input_unsaved_files: [], parse_callbacks: None, codegen_config: FUNCTIONS | TYPES | VARS | METHODS | CONSTRUCTORS | DESTRUCTORS, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: Stable_1_21, rust_features: RustFeatures { untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, repr_transparent: false, repr_packed_n: false, thiscall_abi: false }, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: None, no_partialeq_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_copy_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_hash_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true } }

^C
[chris@capricorn rust-bindgen]$

Next I checkout v0.46.0 and bindgen does not freeze (no CTRL+C is needed):
[chris@capricorn rust-bindgen]$ git checkout v0.46.0
Previous HEAD position was 8747bc9... Bump version and update changelog.
HEAD is now at 7c24f6b... Version bump.
[chris@capricorn rust-bindgen]$ cargo build
Downloaded clang-sys v0.26.0
warning: Pattern matching for Cargo's include/exclude fields is changing and file csmith-fuzzing/README.md WILL be included in a future Cargo version.
See rust-lang/cargo#4268 for more info
Compiling bindgen v0.46.0 (/mnt/data/chris/projects/rust-bindgen)
Compiling clang-sys v0.26.0
Finished dev [unoptimized + debuginfo] target(s) in 18.34s
[chris@capricorn rust-bindgen]$ RUST_LOG='bindgen' ./target/debug/bindgen ../fits_web_ql/wrapper.h 2>&1 | head -6
[2019-01-27T00:12:06Z INFO bindgen] Clang Version: clang version 5.0.1
[2019-01-27T00:12:06Z WARN bindgen] Using clang (5, 0), expected (3, 9)
[2019-01-27T00:12:06Z DEBUG bindgen] Trying to find clang with flags: []
[2019-01-27T00:12:06Z DEBUG bindgen] Found clang: Clang { path: "/opt/llvm-5.0.1/bin/clang", version: Some(CXVersion { Major: 5, Minor: 0, Subminor: 1 }), c_search_paths: Some(["/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "/usr/local/include", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "/usr/include"]), cpp_search_paths: Some(["/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1/x86_64-redhat-linux", "/opt/rh/devtoolset-6/root/usr/lib/gcc/x86_64-redhat-linux/6.3.1/../../../../include/c++/6.3.1/backward", "/usr/local/include", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "/usr/include"]) }
[2019-01-27T00:12:06Z DEBUG bindgen] Fixed-up options: BindgenOptions { blacklisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, blacklisted_items: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, opaque_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustfmt_path: None, whitelisted_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_functions: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, whitelisted_vars: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, default_enum_style: Consts, bitfield_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, rustified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enum_modules: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, constified_enums: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: None, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: None, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: [], module_lines: {}, clang_args: ["-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/ipp/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/mkl/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/pstl/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/tbb/include", "-isystem", "/opt/intel/compilers_and_libraries_2019.1.144/linux/daal/include", "-isystem", "/usr/local/include", "-isystem", "/opt/llvm-5.0.1/lib64/clang/5.0.1/include", "-isystem", "/usr/include", "../fits_web_ql/wrapper.h"], input_header: Some("../fits_web_ql/wrapper.h"), input_unsaved_files: [], parse_callbacks: None, codegen_config: FUNCTIONS | TYPES | VARS | METHODS | CONSTRUCTORS | DESTRUCTORS, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: Stable_1_21, rust_features: RustFeatures { untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, thiscall_abi: false }, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: None, no_partialeq_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_copy_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true }, no_hash_types: RegexSet { items: [], matched: [], set: Some(RegexSet([])), record_matches: true } }
[2019-01-27T00:12:06Z DEBUG bindgen::ir::item] Item::from_ty_with_id: ItemId(1)

[chris@capricorn rust-bindgen]$
[chris@capricorn rust-bindgen]$

@emilio
Copy link
Contributor

emilio commented Jan 27, 2019

Is there any chance you could see where it's hanging with a debugger?

Running gdb --args ./target/debug/bindgen ../fits_web_ql/wrapper.h, and ctrl+C'ing after a while, then running bt full would be the way to do that.

@jvo203
Copy link

jvo203 commented Jan 27, 2019

The output is rather long, I kept pressing to continue until there were no more messages in gdb. Hope it helps!

[chris@capricorn rust-bindgen]$ git checkout v0.47.0
HEAD is now at 8747bc9... Bump version and update changelog.
[chris@capricorn rust-bindgen]$ cargo build
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
[chris@capricorn rust-bindgen]$ gdb --args ./target/debug/bindgen ../fits_web_ql/wrapper.h
GNU gdb (GDB) Red Hat Enterprise Linux 8.0.1-36.el6
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./target/debug/bindgen...done.
warning: Missing auto-load script at offset 0 in section .debug_gdb_scripts
of file /mnt/data/chris/projects/rust-bindgen/target/debug/bindgen.
Use `info auto-load python-scripts [REGEXP]' to list them.
(gdb) run
Starting program: /mnt/data/chris/projects/rust-bindgen/target/debug/bindgen ../fits_web_ql/wrapper.h
warning: Skipping deprecated .gdb_index section in /usr/lib/debug/lib64/ld-2.12.so.debug.
Do "set use-deprecated-index-sections on" before the file is read
to use the section anyway.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Detaching after fork from child process 15513.
Detaching after fork from child process 15514.
Detaching after fork from child process 15515.
Detaching after fork from child process 15516.
Detaching after fork from child process 15518.
[New Thread 0x7fffec1e9700 (LWP 15520)]
^C
Thread 1 "bindgen" received signal SIGINT, Interrupt.
0x00007ffff77bb2fd in pthread_join (threadid=140737154815744, thread_return=0x0) at pthread_join.c:89
89 lll_wait_tid (pd->tid);
Missing separate debuginfos, use: debuginfo-install clang-5.0.1-libs-5.0.1-1.svn319847.el6.alonid.x86_64 libffi-3.0.5-3.2.el6.x86_64 llvm-5.0.1-libs-5.0.1-1.svn319952.el6.alonid.x86_64 ncurses-libs-5.7-4.20090207.el6.x86_64
(gdb) bt full
#0 0x00007ffff77bb2fd in pthread_join (threadid=140737154815744, thread_return=0x0) at pthread_join.c:89
__ignore = -512
_tid = 15520
_buffer = {__routine = 0x7ffff77bb1d0 , __arg = 0x7fffec1e9d28, __canceltype = 1441846080,
__prev = 0x0}
oldtype = 0
pd = 0x7fffec1e9700
self = 0x7ffff7fbc840
result = 0
#1 0x00007ffff1c51570 in llvm::llvm_execute_on_thread(void ()(void), void*, unsigned int) ()
from /opt/llvm-5.0.1/lib64/libLLVM-5.0.so
No symbol table info available.
#2 0x00007ffff1be6cc3 in llvm::CrashRecoveryContext::RunSafelyOnThread(llvm::function_ref<void ()>, unsigned int)
() from /opt/llvm-5.0.1/lib64/libLLVM-5.0.so
No symbol table info available.
#3 0x00007ffff6d32e93 in clang_parseTranslationUnit2FullArgv () from /opt/llvm-5.0.1/lib64/libclang.so.5.0
No symbol table info available.
#4 0x00007ffff6d331f8 in clang_parseTranslationUnit2 () from /opt/llvm-5.0.1/lib64/libclang.so.5.0
No symbol table info available.
#5 0x00007ffff6d3329a in clang_parseTranslationUnit () from /opt/llvm-5.0.1/lib64/libclang.so.5.0
No symbol table info available.
#6 0x0000555555e766ff in clang_sys::clang_parseTranslationUnit (index=0x5555564fa540, file=0x5555564faa90 "",
arguments=0x5555564ff5c0, n_arguments=18, unsaved=0x8, n_unsaved=0, flags=1)
at /home/chris/.cargo/registry/src/github.com-1ecc6299db9ec823/clang-sys-0.27.0/src/link.rs:98
f = 0x7ffff6d33280 <clang_parseTranslationUnit>
#7 0x0000555555af7355 in bindgen::clang::TranslationUnit::parse (ix=0x7ffffffef870, file=..., cmd_args=...,
unsaved=..., opts=1) at src/clang.rs:1454
c_unsaved = alloc::vec::Vec<clang_sys::CXUnsavedFile> {buf: alloc::raw_vec::RawVec<clang_sys::CXUnsavedFile, alloc::alloc::Global> {ptr: core::ptr::Unique<clang_sys::CXUnsavedFile> {pointer: core::nonzero::NonZero<*const clang_sys::CXUnsavedFile> (0x8), _marker: core::marker::PhantomData<clang_sys::CXUnsavedFile>}, cap: 0, a: alloc::al---Type to continue, or q to quit---
loc::Global}, len: 0}
c_args = alloc::vec::Vec<*const i8> {buf: alloc::raw_vec::RawVec<*const i8, alloc::alloc::Global> {ptr: core::ptr::Unique<*const i8> {pointer: core::nonzero::NonZero<*const *const i8> (0x5555564ff5c0), _marker: core::marker::PhantomData<*const i8>}, cap: 18, a: alloc::alloc::Global}, len: 18}
_c_args = alloc::vec::Vecstd::ffi::c_str::CString {buf: alloc::raw_vec::RawVec<std::ffi::c_str::CString, alloc::alloc::Global> {ptr: core::ptr::Uniquestd::ffi::c_str::CString {pointer: core::nonzero::NonZero<*const std::ffi::c_str::CString> (0x5555564faab0), _marker: core::marker::PhantomDatastd::ffi::c_str::CString}, cap: 18, a: alloc::alloc::Global}, len: 18}
fname = std::ffi::c_str::CString {inner: alloc::boxed::Box<[u8]> {data_ptr: 0x5555564faa90 "\000", length: 1}}
#8 0x0000555555b606ac in bindgen::ir::context::BindgenContext::new (options=...) at src/ir/context.rs:562
clang_args = alloc::borrow::Cow<alloc::vec::Vecalloc::string::String>
parse_options = 1
index = bindgen::clang::Index {x: 0x5555564fa540}
effective_target = alloc::string::String {vec: alloc::vec::Vec {buf: alloc::raw_vec::RawVec<u8, alloc::alloc::Global> {ptr: core::ptr::Unique {pointer: core::nonzero::NonZero<*const u8> (0x5555564b6180 "x86_64-unknown-linux-gnu1\000"), _marker: core::marker::PhantomData}, cap: 24, a: alloc::alloc::Global}, len: 24}}
explicit_target = false
#9 0x0000555555b1483a in bindgen::Bindings::generate (options=...) at src/lib.rs:1778
time_phases = false
clang_args_for_clang_sys = alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}
#10 0x0000555555b10915 in bindgen::Builder::generate (self=...) at src/lib.rs:1186
No locals.
#11 0x0000555555811661 in bindgen::main::{{closure}} () at src/main.rs:50
builder =
#12 0x0000555555815af6 in std::panicking::try::do_call (data=0x7fffffff80d0 "\b\000")
at /rustc/9fda7c2237db910e41d6a712e9a2139b352e558b/src/libstd/panicking.rs:310
---Type to continue, or q to quit---
f = closure (bindgen::Builder {options: bindgen::BindgenOptions {blacklisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_items: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, opaque_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustfmt_path: core::option::Optionstd::path::PathBuf, whitelisted_types: bindgen::regex_set:---Type to continue, or q to quit---
:RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, whitelisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, whitelisted_vars: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, default_enum_style: bindgen::codegen::EnumVariation::Consts, bitfield_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String---Type to continue, or q to quit---
, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enum_modules: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: core::option::Optionalloc::string::String, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: core::option::Optionalloc::string::String, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, module_lines: hashbrown::map::HashMap<alloc::string::String, alloc::vec::Vecalloc::string::String, core::hash::BuildHasherDefaulthashbrown::fx::FxHasher> {has---Type to continue, or q to quit---
h_builder: core::hash::BuildHasherDefaulthashbrown::fx::FxHasher (core::marker::PhantomDatahashbrown::fx::FxHasher), table: hashbrown::raw::RawTable<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {ctrl: core::ptr::NonNull {pointer: core::nonzero::NonZero<*const u8> (0x555556075e80 '\377' <repeats 16 times>, "\017\000")}, bucket_mask: 0, data: core::ptr::NonNull<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {pointer: core::nonzero::NonZero<*const (alloc::string::String, alloc::vec::Vecalloc::string::String)> (0x8)}, items: 0, growth_left: 0}}, clang_args: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, input_header: core::option::Optionalloc::string::String, input_unsaved_files: alloc::vec::Vecbindgen::clang::UnsavedFile {buf: alloc::raw_vec::RawVec<bindgen::clang::UnsavedFile, alloc::alloc::Global> {ptr: core::ptr::Uniquebindgen::clang::UnsavedFile {pointer: core::nonzero::NonZero<*const bindgen::clang::UnsavedFile> (0x8), _marker: core::marker::PhantomDatabindgen::clang::UnsavedFile}, cap: 0, a: alloc::alloc::Global}, len: 0}, parse_callbacks: core::option::Option<alloc::boxed::Box>, codegen_config: bindgen::CodegenConfig {bits: 63}, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: bindgen::features::RustTarget::Stable_1_21, rust_features: bindgen::features::RustFeatures {untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, repr_transparent: false, repr_packed_n: false, thiscall_abi: false}, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: core::option::Optionstd::path::PathBuf, no_partialeq_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_copy_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf---Type to continue, or q to quit---
: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_hash_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}}, input_headers: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x5555564c2b40), _marker: core::marker::PhantomDataalloc::string::String}, cap: 1, a: alloc::alloc::Global}, len: 1}, input_header_contents: alloc::vec::Vec<(alloc::string::String, alloc::string::String)> {buf: alloc::raw_vec::RawVec<(alloc::string::String, alloc::string::String), alloc::alloc::Global> {ptr: core::ptr::Unique<(alloc::string::String, alloc::string::String)> {pointer: core::nonzero::NonZero<*const (alloc::string::String, alloc::string::String)> (0x8), _marker: core::marker::PhantomData<(alloc::string::String, alloc::string::String)>}, cap: 0, a: alloc::alloc::Global}, len: 0}})
data = 0x7fffffff80d0
#13 0x0000555556054fba in __rust_maybe_catch_panic () at src/libpanic_unwind/lib.rs:102
No locals.
#14 0x000055555581597f in std::panicking::try (f=...)
at /rustc/9fda7c2237db910e41d6a712e9a2139b352e558b/src/libstd/panicking.rs:289
data = std::panicking::try::Data<closure, bindgen::Bindings> {f: closure (bindgen::Builder {options: bindgen::BindgenOptions {blacklisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core---Type to continue, or q to quit---
::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_items: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, opaque_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustfmt_path: core::option::Optionstd::path::PathBuf, whitelisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Option<regex::re_set::unico---Type to continue, or q to quit---
de::RegexSet>, record_matches: false}, whitelisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, whitelisted_vars: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, default_enum_style: bindgen::codegen::EnumVariation::Consts, bitfield_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enum_modules: bindgen::regex_set::RegexSet {items: alloc:---Type to continue, or q to quit---
:vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: core::option::Optionalloc::string::String, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: core::option::Optionalloc::string::String, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, module_lines: hashbrown::map::HashMap<alloc::string::String, alloc::vec::Vecalloc::string::String, core::hash::BuildHasherDefaulthashbrown::fx::FxHasher> {hash_builder: core::hash::BuildHasherDefaulthashbrown::fx::FxHasher (core::marker::PhantomDatahashbrown::fx::FxHasher), table: hashbrown::raw::RawTable<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {ctrl: core::ptr::NonNull {pointer: core::nonzero::NonZero<*const u8> (0x555556075e80 '\377' <repeats 16 times>, "\017\000")}, bucket_mask: 0, data: core::ptr::NonNull<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {pointer: core::nonzero::NonZero<*const (alloc::string::String, alloc::vec::Vecalloc::string::String)> (0x8)}, items: 0, growth_left: 0}}, clang_args: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Unique---Type to continue, or q to quit---
alloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, input_header: core::option::Optionalloc::string::String, input_unsaved_files: alloc::vec::Vecbindgen::clang::UnsavedFile {buf: alloc::raw_vec::RawVec<bindgen::clang::UnsavedFile, alloc::alloc::Global> {ptr: core::ptr::Uniquebindgen::clang::UnsavedFile {pointer: core::nonzero::NonZero<*const bindgen::clang::UnsavedFile> (0x8), _marker: core::marker::PhantomDatabindgen::clang::UnsavedFile}, cap: 0, a: alloc::alloc::Global}, len: 0}, parse_callbacks: core::option::Option<alloc::boxed::Box>, codegen_config: bindgen::CodegenConfig {bits: 63}, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: bindgen::features::RustTarget::Stable_1_21, rust_features: bindgen::features::RustFeatures {untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, repr_transparent: false, repr_packed_n: false, thiscall_abi: false}, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: core::option::Optionstd::path::PathBuf, no_partialeq_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_copy_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_hash_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc---Type to continue, or q to quit---
::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}}, input_headers: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x5555564c2b40), _marker: core::marker::PhantomDataalloc::string::String}, cap: 1, a: alloc::alloc::Global}, len: 1}, input_header_contents: alloc::vec::Vec<(alloc::string::String, alloc::string::String)> {buf: alloc::raw_vec::RawVec<(alloc::string::String, alloc::string::String), alloc::alloc::Global> {ptr: core::ptr::Unique<(alloc::string::String, alloc::string::String)> {pointer: core::nonzero::NonZero<*const (alloc::string::String, alloc::string::String)> (0x8), _marker: core::marker::PhantomData<(alloc::string::String, alloc::string::String)>}, cap: 0, a: alloc::alloc::Global}, len: 0}}), r: bindgen::Bindings {options: bindgen::BindgenOptions {blacklisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, blacklisted_items: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::ra---Type to continue, or q to quit---
w_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, opaque_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustfmt_path: core::option::Optionstd::path::PathBuf, whitelisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, whitelisted_functions: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, whitelisted_vars: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {poi---Type to continue, or q to quit---
nter: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, default_enum_style: bindgen::codegen::EnumVariation::Consts, bitfield_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, rustified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enum_modules: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, constified_enums: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<cor---Type to continue, or q to quit---
e::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, builtins: false, emit_ast: false, emit_ir: false, emit_ir_graphviz: core::option::Optionalloc::string::String, enable_cxx_namespaces: false, enable_function_attribute_detection: false, disable_name_namespacing: false, layout_tests: true, impl_debug: false, impl_partialeq: false, derive_copy: true, derive_debug: true, derive_default: false, derive_hash: false, derive_partialord: false, derive_ord: false, derive_partialeq: false, derive_eq: false, use_core: false, ctypes_prefix: core::option::Optionalloc::string::String, time_phases: false, namespaced_constants: true, msvc_mangling: false, convert_floats: true, raw_lines: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, module_lines: hashbrown::map::HashMap<alloc::string::String, alloc::vec::Vecalloc::string::String, core::hash::BuildHasherDefaulthashbrown::fx::FxHasher> {hash_builder: core::hash::BuildHasherDefaulthashbrown::fx::FxHasher (core::marker::PhantomDatahashbrown::fx::FxHasher), table: hashbrown::raw::RawTable<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {ctrl: core::ptr::NonNull {pointer: core::nonzero::NonZero<*const u8> (0x555556075e80 '\377' <repeats 16 times>, "\017\000")}, bucket_mask: 0, data: core::ptr::NonNull<(alloc::string::String, alloc::vec::Vecalloc::string::String)> {pointer: core::nonzero::NonZero<*const (alloc::string::String, alloc::vec::Vecalloc::string::String)> (0x8)}, items: 0, growth_left: 0}}, clang_args: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, input_header: core::option::Optionalloc::string::String, input_unsaved_files: alloc::vec::Vecbindgen::clang::UnsavedFile {buf: alloc::raw_vec::RawVec<bindgen::clang::UnsavedFile, alloc::alloc::Global> {ptr: core::ptr::Uniquebindgen::clang::UnsavedFile {pointer: core::nonzero::NonZero<*const bindgen::clang::UnsavedFile> (0x8), _marker: core::marker::PhantomDatabindgen::clang::UnsavedFile}, cap: 0, a: alloc::alloc::Global}, len: 0}, parse_callbacks: core::option::Option<alloc::boxed::Box>, codegen_config: bindgen::CodegenConfig {bits: 63}, conservative_inline_namespaces: false, generate_comments: true, generate_inline_functions: false, whitelist_recursively: true, objc_extern_crate: false, generate_block: false, block_extern_crate: false, enable_mangling: true, prepend_enum_name: true, rust_target: bindgen::features::RustTarget::Stable_1_21, rust_features: bindgen::features::RustFeatures {untagged_union: true, associated_const: true, builtin_clone_impls: true, repr_align: false, i128_and_u128: false, must_use_function: false, repr_transparent: false, repr_packed_n: false, thiscall_abi: false}, record_matches: true, rustfmt_bindings: true, rustfmt_configuration_file: core::option::Option<std---Type to continue, or q to quit---
::path::PathBuf>, no_partialeq_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_copy_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}, no_hash_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell, alloc::alloc::Global> {ptr: core::ptr::Unique<core::cell::Cell> {pointer: core::nonzero::NonZero<*const core::cell::Cell> (0x1), _marker: core::marker::PhantomData<core::cell::Cell>}, cap: 0, a: alloc::alloc::Global}, len: 0}, set: core::option::Optionregex::re_set::unicode::RegexSet, record_matches: false}}, module: proc_macro2::TokenStream {inner: proc_macro2::stable::TokenStream {inner: alloc::vec::Vec<proc_macro2::TokenTree> {buf: alloc::raw_vec::RawVec<proc_macro2::TokenTree, alloc::alloc::Global> {ptr: core::ptr::Unique<proc_macro2::TokenTree> {pointer: core::nonzero::NonZero<*const proc_macro2::TokenTree> (0x5555564c2b40), _marker: core::marker::PhantomData<proc_macro2::TokenTree>}, cap: 1, a: alloc::alloc::Global}, len: 1}}, _marker: core::marker::PhantomData<alloc::rc::Rc<()>>}}}
any_vtable = 0
any_data = 0
#15 0x000055555582b35d in std::panic::catch_unwind (f=...)
at /rustc/9fda7c2237db910e41d6a712e9a2139b352e558b/src/libstd/panic.rs:398
---Type to continue, or q to quit---
No locals.
#16 0x000055555582a9b8 in bindgen::main () at src/main.rs:49
builder = bindgen::Builder {options: bindgen::BindgenOptions {blacklisted_types: bindgen::regex_set::RegexSet {items: alloc::vec::Vecalloc::string::String {buf: alloc::raw_vec::RawVec<alloc::string::String, alloc::alloc::Global> {ptr: core::ptr::Uniquealloc::string::String {pointer: core::nonzero::NonZero<*const alloc::string::String> (0x8), _marker: core::marker::PhantomDataalloc::string::String}, cap: 0, a: alloc::alloc::Global}, len: 0}, matched: alloc::vec::Vec<core::cell::Cell> {buf: alloc::raw_vec::RawVec<core::cell::Cell

@KyleMayes
Copy link
Contributor Author

Based on my own investigation and the above backtrace, the hang happens inside libclang.

It seems to be caused by this code where each instance of libclang.so is loaded. If I remove that part of the code, everything works as usual.

I don't understand why this causes issues (and why this has only affected CentOS 6 thus far), perhaps the loaded shared library isn't being closed properly? I will continue to look into it.

@emilio
Copy link
Contributor

emilio commented Jan 29, 2019

Given this and #1504 I think we should revert this change for now.

emilio added a commit to emilio/rust-bindgen that referenced this pull request Jan 29, 2019
This reverts commit 0d004a7, reversing
changes made to 2a01e8d.
emilio added a commit that referenced this pull request Jan 29, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants