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::read::Object;
|
|
|
|
use run_make_support::object::{self};
|
2024-07-17 13:31:38 +00:00
|
|
|
use run_make_support::{rfs, 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-07-17 12:42:06 +00:00
|
|
|
let binary_data = rfs::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
|
|
|
|
}
|