Skip to content

Commit af289a5

Browse files
committed
Use the default rust mangling
1 parent e69f125 commit af289a5

File tree

6 files changed

+33
-18
lines changed

6 files changed

+33
-18
lines changed

Cargo.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build_system/src/config.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -415,8 +415,11 @@ impl ConfigInfo {
415415
if let Some(linker) = linker {
416416
rustflags.push(linker.to_string());
417417
}
418+
419+
#[cfg(not(feature="master"))]
420+
rustflags.push("-Csymbol-mangling-version=v0".to_string());
421+
418422
rustflags.extend_from_slice(&[
419-
"-Csymbol-mangling-version=v0".to_string(),
420423
"-Cdebuginfo=2".to_string(),
421424
format!("-Zcodegen-backend={}", self.cg_backend_path),
422425
]);

build_system/src/test.rs

+20-12
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,21 @@ fn asm_tests(env: &Env, args: &TestArg) -> Result<(), String> {
612612

613613
env.insert("COMPILETEST_FORCE_STAGE0".to_string(), "1".to_string());
614614

615+
let rustc_args =
616+
&format!(
617+
r#"-Zpanic-abort-tests \
618+
-Zcodegen-backend="{pwd}/target/{channel}/librustc_codegen_gcc.{dylib_ext}" \
619+
--sysroot "{pwd}/build_sysroot/sysroot" -Cpanic=abort"#,
620+
pwd = std::env::current_dir()
621+
.map_err(|error| format!("`current_dir` failed: {:?}", error))?
622+
.display(),
623+
channel = args.config_info.channel.as_str(),
624+
dylib_ext = args.config_info.dylib_ext,
625+
);
626+
627+
#[cfg(not(feature="master"))]
628+
let rustc_args = format!("{} -Csymbol-mangling-version=v0", rustc_args);
629+
615630
run_command_with_env(
616631
&[
617632
&"./x.py",
@@ -622,17 +637,7 @@ fn asm_tests(env: &Env, args: &TestArg) -> Result<(), String> {
622637
&"0",
623638
&"tests/assembly/asm",
624639
&"--rustc-args",
625-
&format!(
626-
r#"-Zpanic-abort-tests -Csymbol-mangling-version=v0 \
627-
-Zcodegen-backend="{pwd}/target/{channel}/librustc_codegen_gcc.{dylib_ext}" \
628-
--sysroot "{pwd}/build_sysroot/sysroot" -Cpanic=abort"#,
629-
pwd = std::env::current_dir()
630-
.map_err(|error| format!("`current_dir` failed: {:?}", error))?
631-
.display(),
632-
channel = args.config_info.channel.as_str(),
633-
dylib_ext = args.config_info.dylib_ext,
634-
)
635-
.as_str(),
640+
&rustc_args,
636641
],
637642
Some(&rust_dir),
638643
Some(&env),
@@ -1065,12 +1070,15 @@ where
10651070
println!("[TEST] rustc test suite");
10661071
env.insert("COMPILETEST_FORCE_STAGE0".to_string(), "1".to_string());
10671072
let rustc_args = format!(
1068-
"{} -Csymbol-mangling-version=v0 -Zcodegen-backend={} --sysroot {}",
1073+
"{} -Zcodegen-backend={} --sysroot {}",
10691074
env.get("TEST_FLAGS").unwrap_or(&String::new()),
10701075
args.config_info.cg_backend_path,
10711076
args.config_info.sysroot_path,
10721077
);
10731078

1079+
#[cfg(not(feature="master"))]
1080+
let rustc_args = format!("{} -Csymbol-mangling-version=v0", rustc_args);
1081+
10741082
env.get_mut("RUSTFLAGS").unwrap().clear();
10751083
run_command_with_output_and_env(
10761084
&[

libgccjit.version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2fc8940e1
1+
89a92e561

src/declare.rs

+5-2
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,9 @@ fn declare_raw_fn<'gcc>(cx: &CodegenCx<'gcc, '_>, name: &str, _callconv: () /*ll
125125
let params: Vec<_> = param_types.into_iter().enumerate()
126126
.map(|(index, param)| cx.context.new_parameter(None, *param, &format!("param{}", index))) // TODO(antoyo): set name.
127127
.collect();
128-
let func = cx.context.new_function(None, cx.linkage.get(), return_type, &params, mangle_name(name), variadic);
128+
#[cfg(not(feature="master"))]
129+
let name = mangle_name(name);
130+
let func = cx.context.new_function(None, cx.linkage.get(), return_type, &params, &name, variadic);
129131
cx.functions.borrow_mut().insert(name.to_string(), func);
130132

131133
#[cfg(feature="master")]
@@ -180,7 +182,8 @@ fn declare_raw_fn<'gcc>(cx: &CodegenCx<'gcc, '_>, name: &str, _callconv: () /*ll
180182

181183
// FIXME(antoyo): this is a hack because libgccjit currently only supports alpha, num and _.
182184
// Unsupported characters: `$` and `.`.
183-
pub fn mangle_name(name: &str) -> String {
185+
#[cfg(not(feature="master"))]
186+
fn mangle_name(name: &str) -> String {
184187
name.replace(|char: char| {
185188
if !char.is_alphanumeric() && char != '_' {
186189
debug_assert!("$.*".contains(char), "Unsupported char in function name {}: {}", name, char);

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ fn new_context<'gcc, 'tcx>(tcx: TyCtxt<'tcx>) -> Context<'gcc> {
255255
}
256256
#[cfg(feature="master")]
257257
{
258+
context.set_allow_special_chars_in_func_names(true);
258259
let version = Version::get();
259260
let version = format!("{}.{}.{}", version.major, version.minor, version.patch);
260261
context.set_output_ident(&format!("rustc version {} with libgccjit {}",

0 commit comments

Comments
 (0)