2024-05-29 13:11:48 +00:00
|
|
|
//@ only-msvc
|
|
|
|
|
|
|
|
// Tests that WS2_32.dll is not unnecessarily linked, see issue #85441
|
|
|
|
|
|
|
|
use run_make_support::object::{self, read::Object};
|
2024-06-06 18:47:00 +00:00
|
|
|
use run_make_support::{fs_wrapper, rustc};
|
2024-05-29 13:11:48 +00:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
rustc().input("empty.rs").run();
|
|
|
|
rustc().input("tcp.rs").run();
|
|
|
|
|
|
|
|
assert!(!links_ws2_32("empty.exe"));
|
|
|
|
assert!(links_ws2_32("tcp.exe"));
|
|
|
|
}
|
|
|
|
|
|
|
|
fn links_ws2_32(exe: &str) -> bool {
|
2024-06-06 18:47:00 +00:00
|
|
|
let binary_data = fs_wrapper::read(exe);
|
2024-05-29 13:11:48 +00:00
|
|
|
let file = object::File::parse(&*binary_data).unwrap();
|
|
|
|
for import in file.imports().unwrap() {
|
|
|
|
if import.library().eq_ignore_ascii_case(b"WS2_32.dll") {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
false
|
|
|
|
}
|