Skip to content

Commit 215d287

Browse files
debuginfo: Add test case for extern "C" functions.
1 parent e316c66 commit 215d287

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

src/test/debuginfo/extern-c-fn.rs

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// min-lldb-version: 310
12+
13+
// compile-flags:-g
14+
15+
// === GDB TESTS ===================================================================================
16+
// gdb-command:run
17+
18+
// gdb-command:print s
19+
// gdb-check:$1 = [...]"abcd"
20+
// gdb-command:print len
21+
// gdb-check:$2 = 20
22+
// gdb-command:print local0
23+
// gdb-check:$3 = 19
24+
// gdb-command:print local1
25+
// gdb-check:$4 = true
26+
// gdb-command:print local2
27+
// gdb-check:$5 = 20.5
28+
29+
// gdb-command:continue
30+
31+
// === LLDB TESTS ==================================================================================
32+
// lldb-command:run
33+
34+
// lldb-command:print len
35+
// lldb-check:[...]$0 = 20
36+
// lldb-command:print local0
37+
// lldb-check:[...]$1 = 19
38+
// lldb-command:print local1
39+
// lldb-check:[...]$2 = true
40+
// lldb-command:print local2
41+
// lldb-check:[...]$3 = 20.5
42+
43+
// lldb-command:continue
44+
45+
#![allow(unused_variables)]
46+
#![allow(dead_code)]
47+
#![omit_gdb_pretty_printer_section]
48+
49+
50+
#[no_mangle]
51+
pub unsafe extern "C" fn fn_with_c_abi(s: *const u8, len: i32) -> i32 {
52+
let local0 = len - 1;
53+
let local1 = len > 2;
54+
let local2 = (len as f64) + 0.5;
55+
56+
zzz(); // #break
57+
58+
return 0;
59+
}
60+
61+
fn main() {
62+
unsafe {
63+
fn_with_c_abi(b"abcd\0".as_ptr(), 20);
64+
}
65+
}
66+
67+
#[inline(never)]
68+
fn zzz() {()}

0 commit comments

Comments
 (0)