Skip to content

Commit 6687d45

Browse files
authored
Merge pull request rust-lang#65 from JohnTitor/explicit-abi
fix: Declare explicit "C" ABI on `extern` blocks/fns
2 parents d375f7f + 9b15a32 commit 6687d45

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/lib.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -1294,7 +1294,7 @@ impl<'a> Generator<'a> {
12941294
t!(writeln!(
12951295
self.rust,
12961296
r#"
1297-
extern {{
1297+
extern "C" {{
12981298
#[allow(non_snake_case)]
12991299
fn __test_offset_{ty}_{field}() -> u64;
13001300
#[allow(non_snake_case)]
@@ -1347,7 +1347,7 @@ impl<'a> Generator<'a> {
13471347
t!(writeln!(
13481348
self.rust,
13491349
r#"
1350-
extern {{
1350+
extern "C" {{
13511351
#[allow(non_snake_case)]
13521352
fn __test_field_type_{ty}_{field}(a: *mut {ty})
13531353
-> *mut u8;
@@ -1402,7 +1402,7 @@ impl<'a> Generator<'a> {
14021402
#[allow(non_snake_case)]
14031403
#[inline(never)]
14041404
fn size_align_{ty}() {{
1405-
extern {{
1405+
extern "C" {{
14061406
#[allow(non_snake_case)]
14071407
fn __test_size_{ty}() -> u64;
14081408
#[allow(non_snake_case)]
@@ -1467,7 +1467,7 @@ impl<'a> Generator<'a> {
14671467
#[inline(never)]
14681468
#[allow(non_snake_case)]
14691469
fn sign_{ty}() {{
1470-
extern {{
1470+
extern "C" {{
14711471
#[allow(non_snake_case)]
14721472
fn __test_signed_{ty}() -> u32;
14731473
}}
@@ -1533,7 +1533,7 @@ impl<'a> Generator<'a> {
15331533
#[inline(never)]
15341534
#[allow(non_snake_case)]
15351535
fn const_{name}() {{
1536-
extern {{
1536+
extern "C" {{
15371537
#[allow(non_snake_case)]
15381538
fn __test_const_{name}() -> *const *const u8;
15391539
}}
@@ -1554,7 +1554,7 @@ impl<'a> Generator<'a> {
15541554
r#"
15551555
#[allow(non_snake_case)]
15561556
fn const_{name}() {{
1557-
extern {{
1557+
extern "C" {{
15581558
#[allow(non_snake_case)]
15591559
fn __test_const_{name}() -> *const {ty};
15601560
}}
@@ -1661,7 +1661,7 @@ impl<'a> Generator<'a> {
16611661
#[allow(non_snake_case)]
16621662
#[inline(never)]
16631663
fn fn_{name}() {{
1664-
extern {{
1664+
extern "C" {{
16651665
#[allow(non_snake_case)]
16661666
fn __test_fn_{name}() -> *mut u32;
16671667
}}
@@ -1701,7 +1701,7 @@ impl<'a> Generator<'a> {
17011701

17021702
let c_name = c_name.unwrap_or_else(|| name.to_string());
17031703

1704-
if rust_ty.contains("extern fn") {
1704+
if rust_ty.contains("extern fn") || rust_ty.contains("extern \"C\" fn") {
17051705
let sig = c_ty.replacen("(*)", &format!("(* __test_static_{}(void))", name), 1);
17061706
t!(writeln!(
17071707
self.c,
@@ -1719,7 +1719,7 @@ impl<'a> Generator<'a> {
17191719
#[inline(never)]
17201720
#[allow(non_snake_case)]
17211721
fn static_{name}() {{
1722-
extern {{
1722+
extern "C" {{
17231723
#[allow(non_snake_case)]
17241724
fn __test_static_{name}() -> {ty};
17251725
}}
@@ -1764,7 +1764,7 @@ impl<'a> Generator<'a> {
17641764
#[inline(never)]
17651765
#[allow(non_snake_case)]
17661766
fn static_{name}() {{
1767-
extern {{
1767+
extern "C" {{
17681768
#[allow(non_snake_case)]
17691769
fn __test_static_{name}() -> *{mutbl} {ty};
17701770
}}
@@ -1809,7 +1809,7 @@ impl<'a> Generator<'a> {
18091809
#[allow(non_snake_case)]
18101810
#[inline(never)]
18111811
fn static_{name}() {{
1812-
extern {{
1812+
extern "C" {{
18131813
#[allow(non_snake_case)]
18141814
fn __test_static_{name}() -> *{mutbl} {ty};
18151815
}}
@@ -1991,7 +1991,7 @@ impl<'a> Generator<'a> {
19911991
use libc::c_int;
19921992
type U = {ty};
19931993
#[allow(improper_ctypes)]
1994-
extern {{
1994+
extern "C" {{
19951995
#[allow(non_snake_case)]
19961996
fn __test_roundtrip_{ty}(
19971997
size: i32, x: U, e: *mut c_int, pad: *const u8
@@ -2106,7 +2106,7 @@ impl<'a> Generator<'a> {
21062106
ast::FunctionRetTy::Default(..) => "()".to_string(),
21072107
ast::FunctionRetTy::Ty(ref t) => self.ty2name(t, rust),
21082108
};
2109-
format!("extern fn({}) -> {}", args, ret)
2109+
format!("extern \"C\" fn({}) -> {}", args, ret)
21102110
} else {
21112111
assert!(t.lifetimes.is_empty());
21122112
let (ret, mut args, variadic) = self.decl2rust(&t.decl);

0 commit comments

Comments
 (0)