summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/codegen/impl_debug.rs2
-rw-r--r--tests/expectations/tests/derive-debug-mangle-name.rs112
-rw-r--r--tests/headers/derive-debug-mangle-name.h14
3 files changed, 127 insertions, 1 deletions
diff --git a/src/codegen/impl_debug.rs b/src/codegen/impl_debug.rs
index e0204f4d..ab934ed6 100644
--- a/src/codegen/impl_debug.rs
+++ b/src/codegen/impl_debug.rs
@@ -117,7 +117,7 @@ impl<'a> ImplDebug<'a> for Item {
ctx: &BindgenContext,
name: &str,
) -> Option<(String, Vec<quote::Tokens>)> {
- let name_ident = ctx.rust_ident_raw(name);
+ let name_ident = ctx.rust_ident(name);
// We don't know if blacklisted items `impl Debug` or not, so we can't
// add them to the format string we're building up.
diff --git a/tests/expectations/tests/derive-debug-mangle-name.rs b/tests/expectations/tests/derive-debug-mangle-name.rs
new file mode 100644
index 00000000..4f2161fb
--- /dev/null
+++ b/tests/expectations/tests/derive-debug-mangle-name.rs
@@ -0,0 +1,112 @@
+/* automatically generated by rust-bindgen */
+
+
+#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
+
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct perf_event_attr {
+ pub type_: ::std::os::raw::c_uint,
+ pub a: f32,
+ pub __bindgen_anon_1: perf_event_attr__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union perf_event_attr__bindgen_ty_1 {
+ pub b: ::std::os::raw::c_int,
+ pub c: ::std::os::raw::c_int,
+ _bindgen_union_align: u32,
+}
+#[test]
+fn bindgen_test_layout_perf_event_attr__bindgen_ty_1() {
+ assert_eq!(
+ ::std::mem::size_of::<perf_event_attr__bindgen_ty_1>(),
+ 4usize,
+ concat!("Size of: ", stringify!(perf_event_attr__bindgen_ty_1))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<perf_event_attr__bindgen_ty_1>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(perf_event_attr__bindgen_ty_1))
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const perf_event_attr__bindgen_ty_1)).b as *const _ as usize },
+ 0usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(perf_event_attr__bindgen_ty_1),
+ "::",
+ stringify!(b)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const perf_event_attr__bindgen_ty_1)).c as *const _ as usize },
+ 0usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(perf_event_attr__bindgen_ty_1),
+ "::",
+ stringify!(c)
+ )
+ );
+}
+impl Default for perf_event_attr__bindgen_ty_1 {
+ fn default() -> Self {
+ unsafe { ::std::mem::zeroed() }
+ }
+}
+impl ::std::fmt::Debug for perf_event_attr__bindgen_ty_1 {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ write!(f, "perf_event_attr__bindgen_ty_1 {{ union }}")
+ }
+}
+#[test]
+fn bindgen_test_layout_perf_event_attr() {
+ assert_eq!(
+ ::std::mem::size_of::<perf_event_attr>(),
+ 12usize,
+ concat!("Size of: ", stringify!(perf_event_attr))
+ );
+ assert_eq!(
+ ::std::mem::align_of::<perf_event_attr>(),
+ 4usize,
+ concat!("Alignment of ", stringify!(perf_event_attr))
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const perf_event_attr)).type_ as *const _ as usize },
+ 0usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(perf_event_attr),
+ "::",
+ stringify!(type_)
+ )
+ );
+ assert_eq!(
+ unsafe { &(*(0 as *const perf_event_attr)).a as *const _ as usize },
+ 4usize,
+ concat!(
+ "Alignment of field: ",
+ stringify!(perf_event_attr),
+ "::",
+ stringify!(a)
+ )
+ );
+}
+impl Default for perf_event_attr {
+ fn default() -> Self {
+ unsafe { ::std::mem::zeroed() }
+ }
+}
+impl ::std::fmt::Debug for perf_event_attr {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ write!(
+ f,
+ "perf_event_attr {{ type: {:?}, a: {:?}, __bindgen_anon_1: {:?} }}",
+ self.type_,
+ self.a,
+ self.__bindgen_anon_1
+ )
+ }
+}
diff --git a/tests/headers/derive-debug-mangle-name.h b/tests/headers/derive-debug-mangle-name.h
new file mode 100644
index 00000000..1cd7db63
--- /dev/null
+++ b/tests/headers/derive-debug-mangle-name.h
@@ -0,0 +1,14 @@
+// bindgen-flags: --impl-debug
+struct perf_event_attr {
+
+ /*
+ * Major type: hardware/software/tracepoint/etc.
+ */
+ unsigned int type;
+
+ float a;
+ union {
+ int b;
+ int c;
+ };
+};