Avoid using to_string() on ExternalName to create strings for symbol names.

ExternalName's `to_string()` prepends a '%' for Cretonne's text syntax,
but for creating symbol names we just want the raw bytes.
This commit is contained in:
Dan Gohman
2017-11-04 15:29:16 -07:00
parent be9e3e88e4
commit 114da83ad6

View File

@@ -2,6 +2,8 @@ use cretonne::settings;
use cretonne::settings::Configurable; use cretonne::settings::Configurable;
use faerie::Artifact; use faerie::Artifact;
use wasmstandalone_runtime; use wasmstandalone_runtime;
use std::error::Error;
use std::str;
/// Emits a module that has been emitted with the `WasmRuntime` runtime /// Emits a module that has been emitted with the `WasmRuntime` runtime
/// implementation to a native object file. /// implementation to a native object file.
@@ -24,11 +26,13 @@ pub fn emit_module<'module>(
for (i, function_relocs) in relocations.iter().enumerate() { for (i, function_relocs) in relocations.iter().enumerate() {
assert!(function_relocs.is_empty(), "relocations not supported yet"); assert!(function_relocs.is_empty(), "relocations not supported yet");
let body = &compilation.functions[i]; let body = &compilation.functions[i];
let external_name =
wasmstandalone_runtime::get_func_name(compilation.module.imported_funcs.len() + i);
let string_name = str::from_utf8(x.as_ref()).map_err(|err| {
err.description().to_string()
})?;
obj.add_code( obj.add_code(string_name, body.clone());
wasmstandalone_runtime::get_func_name(compilation.module.imported_funcs.len() + i),
body.clone(),
);
} }
Ok(()) Ok(())