Skip to content

Commit 41ca29f

Browse files
committed
Add align feature to sem_t struct
1 parent 5f38367 commit 41ca29f

File tree

6 files changed

+30
-0
lines changed

6 files changed

+30
-0
lines changed

src/unix/notbsd/linux/mips/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,16 @@ s! {
2121
}
2222

2323
// FIXME this is actually a union
24+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
25+
repr(align(4)))]
26+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
27+
repr(align(8)))]
2428
pub struct sem_t {
2529
#[cfg(target_pointer_width = "32")]
2630
__size: [::c_char; 16],
2731
#[cfg(target_pointer_width = "64")]
2832
__size: [::c_char; 32],
33+
#[cfg(not(feature = "align"))]
2934
__align: [::c_long; 0],
3035
}
3136

src/unix/notbsd/linux/other/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,16 @@ s! {
158158
}
159159

160160
// FIXME this is actually a union
161+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
162+
repr(align(4)))]
163+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
164+
repr(align(8)))]
161165
pub struct sem_t {
162166
#[cfg(target_pointer_width = "32")]
163167
__size: [::c_char; 16],
164168
#[cfg(target_pointer_width = "64")]
165169
__size: [::c_char; 32],
170+
#[cfg(not(feature = "align"))]
166171
__align: [::c_long; 0],
167172
}
168173

src/unix/notbsd/linux/s390x.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,13 @@ s! {
245245
}
246246

247247
// FIXME this is actually a union
248+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
249+
repr(align(4)))]
250+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
251+
repr(align(8)))]
248252
pub struct sem_t {
249253
__size: [::c_char; 32],
254+
#[cfg(not(feature = "align"))]
250255
__align: [::c_long; 0],
251256
}
252257

src/unix/uclibc/mips/mips32.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,16 @@ s! {
222222
}
223223

224224
// FIXME this is actually a union
225+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
226+
repr(align(4)))]
227+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
228+
repr(align(8)))]
225229
pub struct sem_t {
226230
#[cfg(target_pointer_width = "32")]
227231
__size: [::c_char; 16],
228232
#[cfg(target_pointer_width = "64")]
229233
__size: [::c_char; 32],
234+
#[cfg(not(feature = "align"))]
230235
__align: [::c_long; 0],
231236
}
232237
}

src/unix/uclibc/mips/mips64.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,8 +188,13 @@ s! {
188188
}
189189

190190
// FIXME this is actually a union
191+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
192+
repr(align(4)))]
193+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
194+
repr(align(8)))]
191195
pub struct sem_t {
192196
__size: [::c_char; 32],
197+
#[cfg(not(feature = "align"))]
193198
__align: [::c_long; 0],
194199
}
195200
}

src/unix/uclibc/x86_64/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,16 @@ s! {
205205
pub c_cc: [::cc_t; ::NCCS],
206206
}
207207

208+
#[cfg_attr(all(feature = "align", target_pointer_width = "32"),
209+
repr(align(4)))]
210+
#[cfg_attr(all(feature = "align", target_pointer_width = "64"),
211+
repr(align(8)))]
208212
pub struct sem_t { // ToDo
209213
#[cfg(target_pointer_width = "32")]
210214
__size: [::c_char; 16],
211215
#[cfg(target_pointer_width = "64")]
212216
__size: [::c_char; 32],
217+
#[cfg(not(feature = "align"))]
213218
__align: [::c_long; 0],
214219
}
215220

0 commit comments

Comments
 (0)