summaryrefslogtreecommitdiff
path: root/bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h
diff options
context:
space:
mode:
Diffstat (limited to 'bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h')
-rw-r--r--bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h b/bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h
new file mode 100644
index 00000000..0860ce95
--- /dev/null
+++ b/bindgen-tests/tests/headers/issue-648-derive-debug-with-padding.h
@@ -0,0 +1,21 @@
+// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq --impl-partialeq --rust-target 1.40
+/**
+ * We emit a `[u8; 63usize]` padding field for this struct, which cannot derive
+ * Debug/Hash because 63 is over the hard coded limit.
+ */
+struct NoDebug {
+ char c;
+ // padding of 63 bytes
+} __attribute__((__aligned__(64)));
+
+/**
+ * This should derive Debug/Hash/PartialEq/Eq because the padding size is less than the max derive
+ * Debug/Hash/PartialEq/Eq impl for arrays. However, we conservatively don't derive Debug/Hash because
+ * we determine Debug derive-ability before we compute padding, which happens at
+ * codegen.
+ */
+struct ShouldDeriveDebugButDoesNot {
+ char c[32];
+ char d;
+ // padding of 31 bytes
+} __attribute__((__aligned__(64)));