From 9d764fc3c1607b2f5f84b73d48cbddfef33fa37e Mon Sep 17 00:00:00 2001 From: Vadzim Dambrouski Date: Mon, 12 Dec 2016 21:56:52 +0300 Subject: [PATCH] Do not generate '@' character in symbol names. MSP430 assembler does not like '@' character in symbol names, so we should only use alphanumerics when we generate a new name. Fixes #38116 --- src/librustc_data_structures/base_n.rs | 2 ++ src/librustc_trans/context.rs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/librustc_data_structures/base_n.rs b/src/librustc_data_structures/base_n.rs index bf3e682f86f69..4359581a897f5 100644 --- a/src/librustc_data_structures/base_n.rs +++ b/src/librustc_data_structures/base_n.rs @@ -14,6 +14,8 @@ use std::str; pub const MAX_BASE: u64 = 64; +pub const ALPHANUMERIC_ONLY: u64 = 62; + const BASE_64: &'static [u8; MAX_BASE as usize] = b"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@$"; diff --git a/src/librustc_trans/context.rs b/src/librustc_trans/context.rs index 8b98eb57814ac..6435b20eeaa00 100644 --- a/src/librustc_trans/context.rs +++ b/src/librustc_trans/context.rs @@ -971,7 +971,7 @@ impl<'b, 'tcx> CrateContext<'b, 'tcx> { let mut name = String::with_capacity(prefix.len() + 6); name.push_str(prefix); name.push_str("."); - base_n::push_str(idx as u64, base_n::MAX_BASE, &mut name); + base_n::push_str(idx as u64, base_n::ALPHANUMERIC_ONLY, &mut name); name } }