Rollup merge of #146635 - Zalathar:llvm-cov, r=SparrowLii
cg_llvm: Stop using `as_c_char_ptr` for coverage-related bindings
[As explained by a note in `ffi.rs`](8a1b39995e/compiler/rustc_codegen_llvm/src/llvm/ffi.rs (L4-L11)), passing strings and byte slices through FFI is more convenient if we take advantage of the fact that `*const c_uchar` and `*const c_char` have the same ABI.
Doing so avoids having to rely on a special helper function, since we can just call `as_ptr` instead.
(The same logic applies to every other binding that currently uses the `as_c_char_ptr` helper; I just haven't adjusted all of them yet.)
---
As a drive-by change, this PR also marks some coverage-related FFI bindings as `safe`.
This commit is contained in:
@@ -2256,8 +2256,11 @@ unsafe extern "C" {
|
||||
ConstraintsLen: size_t,
|
||||
) -> bool;
|
||||
|
||||
/// A list of pointer-length strings is passed as two pointer-length slices,
|
||||
/// one slice containing pointers and one slice containing their corresponding
|
||||
/// lengths. The implementation will check that both slices have the same length.
|
||||
pub(crate) fn LLVMRustCoverageWriteFilenamesToBuffer(
|
||||
Filenames: *const *const c_char,
|
||||
Filenames: *const *const c_uchar, // See "PTR_LEN_STR".
|
||||
FilenamesLen: size_t,
|
||||
Lengths: *const size_t,
|
||||
LengthsLen: size_t,
|
||||
@@ -2280,18 +2283,25 @@ unsafe extern "C" {
|
||||
|
||||
pub(crate) fn LLVMRustCoverageCreatePGOFuncNameVar(
|
||||
F: &Value,
|
||||
FuncName: *const c_char,
|
||||
FuncName: *const c_uchar, // See "PTR_LEN_STR".
|
||||
FuncNameLen: size_t,
|
||||
) -> &Value;
|
||||
pub(crate) fn LLVMRustCoverageHashBytes(Bytes: *const c_char, NumBytes: size_t) -> u64;
|
||||
pub(crate) fn LLVMRustCoverageHashBytes(
|
||||
Bytes: *const c_uchar, // See "PTR_LEN_STR".
|
||||
NumBytes: size_t,
|
||||
) -> u64;
|
||||
|
||||
pub(crate) fn LLVMRustCoverageWriteCovmapSectionNameToString(M: &Module, OutStr: &RustString);
|
||||
pub(crate) safe fn LLVMRustCoverageWriteCovmapSectionNameToString(
|
||||
M: &Module,
|
||||
OutStr: &RustString,
|
||||
);
|
||||
pub(crate) safe fn LLVMRustCoverageWriteCovfunSectionNameToString(
|
||||
M: &Module,
|
||||
OutStr: &RustString,
|
||||
);
|
||||
pub(crate) safe fn LLVMRustCoverageWriteCovmapVarNameToString(OutStr: &RustString);
|
||||
|
||||
pub(crate) fn LLVMRustCoverageWriteCovfunSectionNameToString(M: &Module, OutStr: &RustString);
|
||||
|
||||
pub(crate) fn LLVMRustCoverageWriteCovmapVarNameToString(OutStr: &RustString);
|
||||
|
||||
pub(crate) fn LLVMRustCoverageMappingVersion() -> u32;
|
||||
pub(crate) safe fn LLVMRustCoverageMappingVersion() -> u32;
|
||||
pub(crate) fn LLVMRustDebugMetadataVersion() -> u32;
|
||||
pub(crate) fn LLVMRustVersionMajor() -> u32;
|
||||
pub(crate) fn LLVMRustVersionMinor() -> u32;
|
||||
|
||||
Reference in New Issue
Block a user