Skip to content

Commit

Permalink
Migrate static-pie scripts to rmake
Browse files Browse the repository at this point in the history
  • Loading branch information
Rejyr committed Jun 20, 2024
1 parent 591bbf6 commit 4a93663
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 44 deletions.
20 changes: 0 additions & 20 deletions tests/run-make/static-pie/check_clang_version.sh

This file was deleted.

20 changes: 0 additions & 20 deletions tests/run-make/static-pie/check_gcc_version.sh

This file was deleted.

29 changes: 25 additions & 4 deletions tests/run-make/static-pie/rmake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,37 @@
//@ only-linux
//@ ignore-32bit

use std::process::Command;

use run_make_support::llvm_readobj;
use run_make_support::rustc;
use run_make_support::{cmd, target};

// Minimum major versions supporting -static-pie
const GCC_VERSION: u32 = 8;
const CLANG_VERSION: u32 = 9;

// Return `true` if the `compiler` version supports `-static-pie`.
fn ok_compiler_version(compiler: &str) -> bool {
let check_file = format!("check_{compiler}_version.sh");
let version_threshold = match compiler {
"clang" => CLANG_VERSION,
"gcc" => GCC_VERSION,
other => panic!("unexpected compiler '{other}', expected 'clang' or 'gcc'"),
};

Command::new(check_file).status().is_ok_and(|status| status.success())
let process = cmd(compiler).arg("-dumpversion").run_unchecked();
if !process.status().success() {
eprintln!("No {compiler} version detected");
return false;
}
// 'major.minor.patch', 'major.minor', or 'major'
let version: u32 = process.stdout_utf8().split(".").next().unwrap().parse().unwrap();

if version >= version_threshold {
eprintln!("{compiler} supports -static-pie");
true
} else {
eprintln!("{compiler} too old to support -static-pie, skipping test");
false
}
}

fn test(compiler: &str) {
Expand Down

0 comments on commit 4a93663

Please sign in to comment.