Skip to content

Commit 1867bf3

Browse files
authored
Merge pull request #4202 from taiki-e/c-char3
Define c_char at top-level and remove per-target c_char definitions
2 parents fd5b78c + 2bb023e commit 1867bf3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+30
-178
lines changed

libc-test/build.rs

+1-40
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,6 @@ fn test_apple(target: &str) {
353353
// FIXME: "'__uint128' undeclared" in C
354354
"__uint128" => true,
355355

356-
// `c_char_def` is always public but not always reexported.
357-
"c_char_def" => true,
358-
359356
_ => false,
360357
}
361358
});
@@ -603,11 +600,6 @@ fn test_openbsd(target: &str) {
603600
}
604601
});
605602

606-
cfg.skip_type(move |ty| {
607-
// `c_char_def` is always public but not always reexported.
608-
ty == "c_char_def"
609-
});
610-
611603
cfg.type_name(move |ty, is_struct, is_union| {
612604
match ty {
613605
// Just pass all these through, no need for a "struct" prefix
@@ -722,8 +714,6 @@ fn test_windows(target: &str) {
722714
"ssize_t" if !gnu => true,
723715
// FIXME: The size and alignment of this type are incorrect
724716
"time_t" if gnu && i686 => true,
725-
// `c_char_def` is always public but not always reexported.
726-
"c_char_def" => true,
727717
_ => false,
728718
});
729719

@@ -934,8 +924,6 @@ fn test_solarish(target: &str) {
934924

935925
cfg.skip_type(move |ty| match ty {
936926
"sighandler_t" => true,
937-
// `c_char_def` is always public but not always reexported.
938-
"c_char_def" => true,
939927
_ => false,
940928
});
941929

@@ -1236,8 +1224,6 @@ fn test_netbsd(target: &str) {
12361224
match ty {
12371225
// FIXME: sighandler_t is crazy across platforms
12381226
"sighandler_t" => true,
1239-
// `c_char_def` is always public but not always reexported.
1240-
"c_char_def" => true,
12411227
_ => false,
12421228
}
12431229
});
@@ -1455,8 +1441,6 @@ fn test_dragonflybsd(target: &str) {
14551441
match ty {
14561442
// sighandler_t is crazy across platforms
14571443
"sighandler_t" => true,
1458-
// `c_char_def` is always public but not always reexported.
1459-
"c_char_def" => true,
14601444
_ => false,
14611445
}
14621446
});
@@ -1615,8 +1599,6 @@ fn test_wasi(target: &str) {
16151599
}
16161600
});
16171601

1618-
cfg.skip_type(|ty| ty == "c_char_def");
1619-
16201602
// These have a different and internal type in header files and are only
16211603
// used here to generate a pointer to them in bindings so skip these tests.
16221604
cfg.skip_static(|c| c.starts_with("_CLOCK_"));
@@ -1865,9 +1847,6 @@ fn test_android(target: &str) {
18651847
// FIXME: "'__uint128' undeclared" in C
18661848
"__uint128" => true,
18671849

1868-
// `c_char_def` is always public but not always reexported.
1869-
"c_char_def" => true,
1870-
18711850
_ => false,
18721851
}
18731852
});
@@ -2619,9 +2598,6 @@ fn test_freebsd(target: &str) {
26192598
// `eventfd(2)` and things come with it are added in FreeBSD 13
26202599
"eventfd_t" if Some(13) > freebsd_ver => true,
26212600

2622-
// `c_char_def` is always public but not always reexported.
2623-
"c_char_def" => true,
2624-
26252601
_ => false,
26262602
}
26272603
});
@@ -2938,9 +2914,6 @@ fn test_emscripten(target: &str) {
29382914
// https://github.com/emscripten-core/emscripten/issues/5033
29392915
ty if ty.starts_with("epoll") => true,
29402916

2941-
// `c_char_def` is always public but not always reexported.
2942-
"c_char_def" => true,
2943-
29442917
// LFS64 types have been removed in Emscripten 3.1.44
29452918
// https://github.com/emscripten-core/emscripten/pull/19812
29462919
t => t.ends_with("64") || t.ends_with("64_t"),
@@ -3217,9 +3190,6 @@ fn test_neutrino(target: &str) {
32173190
// Does not exist in Neutrino
32183191
"locale_t" => true,
32193192

3220-
// `c_char_def` is always public but not always reexported.
3221-
"c_char_def" => true,
3222-
32233193
_ => false,
32243194
}
32253195
});
@@ -3383,8 +3353,6 @@ fn test_vxworks(target: &str) {
33833353
// FIXME
33843354
cfg.skip_type(move |ty| match ty {
33853355
"stat64" | "sighandler_t" | "off64_t" => true,
3386-
// `c_char_def` is always public but not always reexported.
3387-
"c_char_def" => true,
33883356
_ => false,
33893357
});
33903358

@@ -3732,9 +3700,6 @@ fn test_linux(target: &str) {
37323700
// FIXME: "'__uint128' undeclared" in C
37333701
"__uint128" => true,
37343702

3735-
// `c_char_def` is always public but not always reexported.
3736-
"c_char_def" => true,
3737-
37383703
t => {
37393704
if musl {
37403705
// LFS64 types have been removed in musl 1.2.4+
@@ -3964,7 +3929,7 @@ fn test_linux(target: &str) {
39643929
}
39653930
// FIXME: Requires >= 5.4 kernel headers
39663931
if name == "PTP_CLOCK_GETCAPS2"
3967-
|| name == "PTP_ENABLE_PPS2"
3932+
|| name == "PTP_ENABLE_PPS2"
39683933
|| name == "PTP_EXTTS_REQUEST2"
39693934
|| name == "PTP_PEROUT_REQUEST2"
39703935
|| name == "PTP_PIN_GETFUNC2"
@@ -4683,8 +4648,6 @@ fn test_linux_like_apis(target: &str) {
46834648
})
46844649
.skip_type(move |ty| match ty {
46854650
"Elf64_Phdr" | "Elf32_Phdr" => false,
4686-
// `c_char_def` is always public but not always reexported.
4687-
"c_char_def" => true,
46884651
_ => true,
46894652
});
46904653
cfg.generate(src_hotfix_dir().join("lib.rs"), "linux_elf.rs");
@@ -4920,8 +4883,6 @@ fn test_haiku(target: &str) {
49204883
"pthread_condattr_t" => true,
49214884
"pthread_mutexattr_t" => true,
49224885
"pthread_rwlockattr_t" => true,
4923-
// `c_char_def` is always public but not always reexported.
4924-
"c_char_def" => true,
49254886
_ => false,
49264887
}
49274888
});

src/fuchsia/aarch64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::off_t;
22
use crate::prelude::*;
33

4-
pub type c_char = u8;
54
pub type __u64 = c_ulonglong;
65
pub type wchar_t = u32;
76
pub type nlink_t = c_ulong;

src/fuchsia/riscv64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use crate::off_t;
22
use crate::prelude::*;
33

44
// From psABI Calling Convention for RV64
5-
pub type c_char = u8;
65
pub type __u64 = c_ulonglong;
76
pub type wchar_t = i32;
87

src/fuchsia/x86_64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use crate::off_t;
22
use crate::prelude::*;
33

4-
pub type c_char = i8;
54
pub type wchar_t = i32;
65
pub type nlink_t = u64;
76
pub type blksize_t = c_long;

src/hermit.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//! Hermit C type definitions
22
3-
pub use crate::arch::c_char_def as c_char;
43
use crate::prelude::*;
54

65
pub type c_schar = i8;

src/lib.rs

+29-35
Original file line numberDiff line numberDiff line change
@@ -38,41 +38,35 @@ cfg_if! {
3838

3939
pub use core::ffi::c_void;
4040

41-
/// Type definitions that are coupled tighter to architecture than OS.
42-
mod arch {
43-
cfg_if! {
44-
// This configuration comes from `rust-lang/rust` in `library/core/src/ffi/mod.rs`.
45-
if #[cfg(all(
46-
not(windows),
47-
// FIXME(ctest): just use `target_vendor` = "apple"` once `ctest` supports it
48-
not(any(
49-
target_os = "macos",
50-
target_os = "ios",
51-
target_os = "tvos",
52-
target_os = "watchos",
53-
target_os = "visionos",
54-
)),
55-
any(
56-
target_arch = "aarch64",
57-
target_arch = "arm",
58-
target_arch = "csky",
59-
target_arch = "hexagon",
60-
target_arch = "msp430",
61-
target_arch = "powerpc",
62-
target_arch = "powerpc64",
63-
target_arch = "riscv64",
64-
target_arch = "riscv32",
65-
target_arch = "s390x",
66-
target_arch = "xtensa",
67-
)
68-
))] {
69-
// To be reexported as `c_char`
70-
// FIXME(ctest): just name these `c_char` once `ctest` learns that these don't get
71-
// exported.
72-
pub type c_char_def = u8;
73-
} else {
74-
pub type c_char_def = i8;
75-
}
41+
cfg_if! {
42+
// This configuration comes from `rust-lang/rust` in `library/core/src/ffi/mod.rs`.
43+
if #[cfg(all(
44+
not(windows),
45+
// FIXME(ctest): just use `target_vendor` = "apple"` once `ctest` supports it
46+
not(any(
47+
target_os = "macos",
48+
target_os = "ios",
49+
target_os = "tvos",
50+
target_os = "watchos",
51+
target_os = "visionos",
52+
)),
53+
any(
54+
target_arch = "aarch64",
55+
target_arch = "arm",
56+
target_arch = "csky",
57+
target_arch = "hexagon",
58+
target_arch = "msp430",
59+
target_arch = "powerpc",
60+
target_arch = "powerpc64",
61+
target_arch = "riscv64",
62+
target_arch = "riscv32",
63+
target_arch = "s390x",
64+
target_arch = "xtensa",
65+
)
66+
))] {
67+
pub type c_char = u8;
68+
} else {
69+
pub type c_char = i8;
7670
}
7771
}
7872

src/sgx.rs

-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ pub type intptr_t = isize;
1919
pub type uintptr_t = usize;
2020
pub type ssize_t = isize;
2121

22-
pub type c_char = i8;
2322
pub type c_long = i64;
2423
pub type c_ulong = u64;
2524

src/solid/aarch64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub type c_char = u8;
21
pub type wchar_t = u32;
32
pub type c_long = i64;
43
pub type c_ulong = u64;

src/solid/arm.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub type c_char = u8;
21
pub type wchar_t = u32;
32
pub type c_long = i32;
43
pub type c_ulong = u32;

src/switch.rs

-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ pub type uintptr_t = usize;
2020
pub type ssize_t = isize;
2121

2222
pub type off_t = i64;
23-
pub type c_char = u8;
2423
pub type c_long = i64;
2524
pub type c_ulong = u64;
2625
pub type wchar_t = u32;

src/teeos/mod.rs

-3
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ pub type ssize_t = isize;
4545

4646
pub type pid_t = c_int;
4747

48-
// aarch64 specific
49-
pub type c_char = u8;
50-
5148
pub type wchar_t = u32;
5249

5350
pub type c_long = i64;

src/trusty.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub use crate::arch::c_char_def as c_char;
21
use crate::prelude::*;
32
pub type size_t = usize;
43
pub type ssize_t = isize;

src/unix/aix/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type caddr_t = *mut c_char;
54
pub type clockid_t = c_longlong;
65
pub type blkcnt_t = c_long;

src/unix/bsd/apple/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
use crate::prelude::*;
66
use crate::{cmsghdr, off_t};
77

8-
pub type c_char = i8;
98
pub type wchar_t = i32;
109
pub type clock_t = c_ulong;
1110
pub type time_t = c_long;

src/unix/bsd/freebsdlike/dragonfly/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use crate::prelude::*;
22
use crate::{cmsghdr, off_t};
33

44
pub type dev_t = u32;
5-
pub type c_char = i8;
65
pub type wchar_t = i32;
76
pub type clock_t = u64;
87
pub type ino_t = u64;

src/unix/bsd/freebsdlike/freebsd/aarch64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type c_long = i64;
54
pub type c_ulong = u64;
65
pub type clock_t = i32;

src/unix/bsd/freebsdlike/freebsd/arm.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type c_long = i32;
54
pub type c_ulong = u32;
65
pub type clock_t = u32;

src/unix/bsd/freebsdlike/freebsd/powerpc.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type c_long = i32;
54
pub type c_ulong = u32;
65
pub type clock_t = u32;

src/unix/bsd/freebsdlike/freebsd/powerpc64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type c_long = i64;
54
pub type c_ulong = u64;
65
pub type clock_t = u32;

src/unix/bsd/freebsdlike/freebsd/riscv64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = u8;
43
pub type c_long = i64;
54
pub type c_ulong = u64;
65
pub type clock_t = i32;

src/unix/bsd/freebsdlike/freebsd/x86.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = i8;
43
pub type c_long = i32;
54
pub type c_ulong = u32;
65
pub type clock_t = c_ulong;

src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::prelude::*;
22

3-
pub type c_char = i8;
43
pub type c_long = i64;
54
pub type c_ulong = u64;
65
pub type clock_t = i32;

src/unix/bsd/netbsdlike/netbsd/aarch64.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::PT_FIRSTMACH;
33

44
pub type c_long = i64;
55
pub type c_ulong = u64;
6-
pub type c_char = u8;
76
pub type greg_t = u64;
87
pub type __cpu_simple_lock_nv_t = c_uchar;
98

src/unix/bsd/netbsdlike/netbsd/arm.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::PT_FIRSTMACH;
33

44
pub type c_long = i32;
55
pub type c_ulong = u32;
6-
pub type c_char = u8;
76
pub type __cpu_simple_lock_nv_t = c_int;
87

98
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_longlong>() - 1;

src/unix/bsd/netbsdlike/netbsd/mips.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::PT_FIRSTMACH;
33

44
pub type c_long = i32;
55
pub type c_ulong = u32;
6-
pub type c_char = i8;
76
pub type __cpu_simple_lock_nv_t = c_int;
87

98
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_longlong>() - 1;

src/unix/bsd/netbsdlike/netbsd/powerpc.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use crate::PT_FIRSTMACH;
33

44
pub type c_long = i32;
55
pub type c_ulong = u32;
6-
pub type c_char = u8;
76
pub type __cpu_simple_lock_nv_t = c_int;
87

98
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_double>() - 1;

0 commit comments

Comments
 (0)