MCP #705: Provide the option -Csymbol-mangling-version=hashed -Z unstable-options
to shorten symbol names by replacing them with a digest.
Enrich test cases
This commit is contained in:
parent
7ffc697ce1
commit
6e53e66bd3
15 changed files with 211 additions and 49 deletions
|
@ -347,6 +347,7 @@ impl SwitchWithOptPath {
|
|||
pub enum SymbolManglingVersion {
|
||||
Legacy,
|
||||
V0,
|
||||
Hashed,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Hash)]
|
||||
|
@ -2692,6 +2693,7 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
|
|||
match cg.symbol_mangling_version {
|
||||
// Stable values:
|
||||
None | Some(SymbolManglingVersion::V0) => {}
|
||||
|
||||
// Unstable values:
|
||||
Some(SymbolManglingVersion::Legacy) => {
|
||||
if !unstable_opts.unstable_options {
|
||||
|
@ -2700,6 +2702,13 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
|
|||
);
|
||||
}
|
||||
}
|
||||
Some(SymbolManglingVersion::Hashed) => {
|
||||
if !unstable_opts.unstable_options {
|
||||
early_dcx.early_fatal(
|
||||
"`-C symbol-mangling-version=hashed` requires `-Z unstable-options`",
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check for unstable values of `-C instrument-coverage`.
|
||||
|
@ -2741,6 +2750,12 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
|
|||
);
|
||||
}
|
||||
Some(SymbolManglingVersion::V0) => {}
|
||||
Some(SymbolManglingVersion::Hashed) => {
|
||||
early_dcx.early_warn(
|
||||
"-C instrument-coverage requires symbol mangling version `v0`, \
|
||||
but `-C symbol-mangling-version=hashed` was specified",
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -407,7 +407,8 @@ mod desc {
|
|||
pub const parse_switch_with_opt_path: &str =
|
||||
"an optional path to the profiling data output directory";
|
||||
pub const parse_merge_functions: &str = "one of: `disabled`, `trampolines`, or `aliases`";
|
||||
pub const parse_symbol_mangling_version: &str = "either `legacy` or `v0` (RFC 2603)";
|
||||
pub const parse_symbol_mangling_version: &str =
|
||||
"one of: `legacy`, `v0` (RFC 2603), or `hashed`";
|
||||
pub const parse_src_file_hash: &str = "either `md5` or `sha1`";
|
||||
pub const parse_relocation_model: &str =
|
||||
"one of supported relocation models (`rustc --print relocation-models`)";
|
||||
|
@ -1180,6 +1181,7 @@ mod parse {
|
|||
*slot = match v {
|
||||
Some("legacy") => Some(SymbolManglingVersion::Legacy),
|
||||
Some("v0") => Some(SymbolManglingVersion::V0),
|
||||
Some("hashed") => Some(SymbolManglingVersion::Hashed),
|
||||
_ => return false,
|
||||
};
|
||||
true
|
||||
|
@ -1504,7 +1506,7 @@ options! {
|
|||
"tell the linker which information to strip (`none` (default), `debuginfo` or `symbols`)"),
|
||||
symbol_mangling_version: Option<SymbolManglingVersion> = (None,
|
||||
parse_symbol_mangling_version, [TRACKED],
|
||||
"which mangling version to use for symbol names ('legacy' (default) or 'v0')"),
|
||||
"which mangling version to use for symbol names ('legacy' (default), 'v0', or 'hashed')"),
|
||||
target_cpu: Option<String> = (None, parse_opt_string, [TRACKED],
|
||||
"select target processor (`rustc --print target-cpus` for details)"),
|
||||
target_feature: String = (String::new(), parse_target_feature, [TRACKED],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue