Rollup merge of #56341 - frewsxcv:frewsxcv-util-cstr, r=Mark-Simulacrum
Rename conversion util; remove duplicate util in librustc_codegen_llvm.
This commit is contained in:
commit
540f4cfa71
@ -23,7 +23,7 @@ use llvm_util;
|
|||||||
use ModuleLlvm;
|
use ModuleLlvm;
|
||||||
use rustc_codegen_ssa::{ModuleCodegen, CompiledModule};
|
use rustc_codegen_ssa::{ModuleCodegen, CompiledModule};
|
||||||
use rustc::util::common::time_ext;
|
use rustc::util::common::time_ext;
|
||||||
use rustc_fs_util::{path2cstr, link_or_copy};
|
use rustc_fs_util::{path_to_c_string, link_or_copy};
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
use errors::{self, Handler, FatalError};
|
use errors::{self, Handler, FatalError};
|
||||||
use type_::Type;
|
use type_::Type;
|
||||||
@ -80,7 +80,7 @@ pub fn write_output_file(
|
|||||||
output: &Path,
|
output: &Path,
|
||||||
file_type: llvm::FileType) -> Result<(), FatalError> {
|
file_type: llvm::FileType) -> Result<(), FatalError> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let output_c = path2cstr(output);
|
let output_c = path_to_c_string(output);
|
||||||
let result = llvm::LLVMRustWriteOutputFile(target, pm, m, output_c.as_ptr(), file_type);
|
let result = llvm::LLVMRustWriteOutputFile(target, pm, m, output_c.as_ptr(), file_type);
|
||||||
if result.into_result().is_err() {
|
if result.into_result().is_err() {
|
||||||
let msg = format!("could not write output to {}", output.display());
|
let msg = format!("could not write output to {}", output.display());
|
||||||
@ -211,7 +211,7 @@ pub(crate) fn save_temp_bitcode(
|
|||||||
let ext = format!("{}.bc", name);
|
let ext = format!("{}.bc", name);
|
||||||
let cgu = Some(&module.name[..]);
|
let cgu = Some(&module.name[..]);
|
||||||
let path = cgcx.output_filenames.temp_path_ext(&ext, cgu);
|
let path = cgcx.output_filenames.temp_path_ext(&ext, cgu);
|
||||||
let cstr = path2cstr(&path);
|
let cstr = path_to_c_string(&path);
|
||||||
let llmod = module.module_llvm.llmod();
|
let llmod = module.module_llvm.llmod();
|
||||||
llvm::LLVMWriteBitcodeToFile(llmod, cstr.as_ptr());
|
llvm::LLVMWriteBitcodeToFile(llmod, cstr.as_ptr());
|
||||||
}
|
}
|
||||||
@ -324,7 +324,7 @@ pub(crate) unsafe fn optimize(cgcx: &CodegenContext<LlvmCodegenBackend>,
|
|||||||
|
|
||||||
if config.emit_no_opt_bc {
|
if config.emit_no_opt_bc {
|
||||||
let out = cgcx.output_filenames.temp_path_ext("no-opt.bc", module_name);
|
let out = cgcx.output_filenames.temp_path_ext("no-opt.bc", module_name);
|
||||||
let out = path2cstr(&out);
|
let out = path_to_c_string(&out);
|
||||||
llvm::LLVMWriteBitcodeToFile(llmod, out.as_ptr());
|
llvm::LLVMWriteBitcodeToFile(llmod, out.as_ptr());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -530,7 +530,7 @@ pub(crate) unsafe fn codegen(cgcx: &CodegenContext<LlvmCodegenBackend>,
|
|||||||
|| -> Result<(), FatalError> {
|
|| -> Result<(), FatalError> {
|
||||||
if config.emit_ir {
|
if config.emit_ir {
|
||||||
let out = cgcx.output_filenames.temp_path(OutputType::LlvmAssembly, module_name);
|
let out = cgcx.output_filenames.temp_path(OutputType::LlvmAssembly, module_name);
|
||||||
let out = path2cstr(&out);
|
let out = path_to_c_string(&out);
|
||||||
|
|
||||||
extern "C" fn demangle_callback(input_ptr: *const c_char,
|
extern "C" fn demangle_callback(input_ptr: *const c_char,
|
||||||
input_len: size_t,
|
input_len: size_t,
|
||||||
|
@ -39,7 +39,7 @@ use rustc::ty::layout::{self, Align, HasDataLayout, Integer, IntegerExt, LayoutO
|
|||||||
PrimitiveExt, Size, TyLayout};
|
PrimitiveExt, Size, TyLayout};
|
||||||
use rustc::session::config;
|
use rustc::session::config;
|
||||||
use rustc::util::nodemap::FxHashMap;
|
use rustc::util::nodemap::FxHashMap;
|
||||||
use rustc_fs_util::path2cstr;
|
use rustc_fs_util::path_to_c_string;
|
||||||
use rustc_data_structures::small_c_str::SmallCStr;
|
use rustc_data_structures::small_c_str::SmallCStr;
|
||||||
|
|
||||||
use libc::{c_uint, c_longlong};
|
use libc::{c_uint, c_longlong};
|
||||||
@ -892,7 +892,7 @@ pub fn compile_unit_metadata(tcx: TyCtxt,
|
|||||||
};
|
};
|
||||||
|
|
||||||
fn path_to_mdstring(llcx: &'ll llvm::Context, path: &Path) -> &'ll Value {
|
fn path_to_mdstring(llcx: &'ll llvm::Context, path: &Path) -> &'ll Value {
|
||||||
let path_str = path2cstr(path);
|
let path_str = path_to_c_string(path);
|
||||||
unsafe {
|
unsafe {
|
||||||
llvm::LLVMMDStringInContext(llcx,
|
llvm::LLVMMDStringInContext(llcx,
|
||||||
path_str.as_ptr(),
|
path_str.as_ptr(),
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
|
|
||||||
//! A wrapper around LLVM's archive (.a) code
|
//! A wrapper around LLVM's archive (.a) code
|
||||||
|
|
||||||
use std::ffi::CString;
|
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use std::str;
|
use std::str;
|
||||||
|
use rustc_fs_util::path_to_c_string;
|
||||||
|
|
||||||
pub struct ArchiveRO {
|
pub struct ArchiveRO {
|
||||||
pub raw: &'static mut super::Archive,
|
pub raw: &'static mut super::Archive,
|
||||||
@ -38,24 +38,12 @@ impl ArchiveRO {
|
|||||||
/// raised.
|
/// raised.
|
||||||
pub fn open(dst: &Path) -> Result<ArchiveRO, String> {
|
pub fn open(dst: &Path) -> Result<ArchiveRO, String> {
|
||||||
return unsafe {
|
return unsafe {
|
||||||
let s = path2cstr(dst);
|
let s = path_to_c_string(dst);
|
||||||
let ar = super::LLVMRustOpenArchive(s.as_ptr()).ok_or_else(|| {
|
let ar = super::LLVMRustOpenArchive(s.as_ptr()).ok_or_else(|| {
|
||||||
super::last_error().unwrap_or_else(|| "failed to open archive".to_owned())
|
super::last_error().unwrap_or_else(|| "failed to open archive".to_owned())
|
||||||
})?;
|
})?;
|
||||||
Ok(ArchiveRO { raw: ar })
|
Ok(ArchiveRO { raw: ar })
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(unix)]
|
|
||||||
fn path2cstr(p: &Path) -> CString {
|
|
||||||
use std::os::unix::prelude::*;
|
|
||||||
use std::ffi::OsStr;
|
|
||||||
let p: &OsStr = p.as_ref();
|
|
||||||
CString::new(p.as_bytes()).unwrap()
|
|
||||||
}
|
|
||||||
#[cfg(windows)]
|
|
||||||
fn path2cstr(p: &Path) -> CString {
|
|
||||||
CString::new(p.to_str().unwrap()).unwrap()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn iter(&self) -> Iter {
|
pub fn iter(&self) -> Iter {
|
||||||
|
@ -18,7 +18,7 @@ use rustc_data_structures::owning_ref::OwningRef;
|
|||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use rustc_fs_util::path2cstr;
|
use rustc_fs_util::path_to_c_string;
|
||||||
|
|
||||||
pub use rustc_data_structures::sync::MetadataRef;
|
pub use rustc_data_structures::sync::MetadataRef;
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ impl MetadataLoader for LlvmMetadataLoader {
|
|||||||
filename: &Path)
|
filename: &Path)
|
||||||
-> Result<MetadataRef, String> {
|
-> Result<MetadataRef, String> {
|
||||||
unsafe {
|
unsafe {
|
||||||
let buf = path2cstr(filename);
|
let buf = path_to_c_string(filename);
|
||||||
let mb = llvm::LLVMRustCreateMemoryBufferWithContentsOfFile(buf.as_ptr())
|
let mb = llvm::LLVMRustCreateMemoryBufferWithContentsOfFile(buf.as_ptr())
|
||||||
.ok_or_else(|| format!("error reading library: '{}'", filename.display()))?;
|
.ok_or_else(|| format!("error reading library: '{}'", filename.display()))?;
|
||||||
let of = ObjectFile::new(mb)
|
let of = ObjectFile::new(mb)
|
||||||
|
@ -116,13 +116,13 @@ pub fn rename_or_copy_remove<P: AsRef<Path>, Q: AsRef<Path>>(p: P,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
pub fn path2cstr(p: &Path) -> CString {
|
pub fn path_to_c_string(p: &Path) -> CString {
|
||||||
use std::os::unix::prelude::*;
|
use std::os::unix::ffi::OsStrExt;
|
||||||
use std::ffi::OsStr;
|
use std::ffi::OsStr;
|
||||||
let p: &OsStr = p.as_ref();
|
let p: &OsStr = p.as_ref();
|
||||||
CString::new(p.as_bytes()).unwrap()
|
CString::new(p.as_bytes()).unwrap()
|
||||||
}
|
}
|
||||||
#[cfg(windows)]
|
#[cfg(windows)]
|
||||||
pub fn path2cstr(p: &Path) -> CString {
|
pub fn path_to_c_string(p: &Path) -> CString {
|
||||||
CString::new(p.to_str().unwrap()).unwrap()
|
CString::new(p.to_str().unwrap()).unwrap()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user