xref: /aosp_15_r20/external/bazelbuild-rules_rust/test/versioned_dylib/src/main.rs (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1 // Copyright 2020 The Bazel Authors. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //    http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 extern crate libc;
16 
17 extern "C" {
return_zero() -> libc::c_int18     pub fn return_zero() -> libc::c_int;
19 }
20 
main()21 fn main() {
22     let zero = unsafe { return_zero() };
23     println!("Got {zero} from our shared lib");
24 }
25 
26 #[cfg(test)]
27 mod test {
28     extern "C" {
return_zero() -> libc::c_int29         pub fn return_zero() -> libc::c_int;
30     }
31 
32     #[test]
test_return_zero()33     fn test_return_zero() {
34         assert_eq!(0, unsafe { return_zero() });
35         // If we make it past this call, it linked correctly, so the test passes.
36     }
37 }
38