Use LLVMDIBuilderCreateNameSpace
This commit is contained in:
parent
cd2af2dd9a
commit
878ab125a1
3 changed files with 18 additions and 25 deletions
|
@ -5,7 +5,7 @@ use rustc_hir::def_id::DefId;
|
||||||
use rustc_middle::ty::{self, Instance};
|
use rustc_middle::ty::{self, Instance};
|
||||||
|
|
||||||
use super::utils::{DIB, debug_context};
|
use super::utils::{DIB, debug_context};
|
||||||
use crate::common::{AsCCharPtr, CodegenCx};
|
use crate::common::CodegenCx;
|
||||||
use crate::llvm;
|
use crate::llvm;
|
||||||
use crate::llvm::debuginfo::DIScope;
|
use crate::llvm::debuginfo::DIScope;
|
||||||
|
|
||||||
|
@ -33,12 +33,12 @@ pub(crate) fn item_namespace<'ll>(cx: &CodegenCx<'ll, '_>, def_id: DefId) -> &'l
|
||||||
};
|
};
|
||||||
|
|
||||||
let scope = unsafe {
|
let scope = unsafe {
|
||||||
llvm::LLVMRustDIBuilderCreateNameSpace(
|
llvm::LLVMDIBuilderCreateNameSpace(
|
||||||
DIB(cx),
|
DIB(cx),
|
||||||
parent_scope,
|
parent_scope,
|
||||||
namespace_name_string.as_c_char_ptr(),
|
namespace_name_string.as_ptr(),
|
||||||
namespace_name_string.len(),
|
namespace_name_string.len(),
|
||||||
false, // ExportSymbols (only relevant for C++ anonymous namespaces)
|
llvm::False, // ExportSymbols (only relevant for C++ anonymous namespaces)
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,17 +5,19 @@ use std::fmt::Debug;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
use libc::{c_char, c_int, c_uint, c_ulonglong, c_void, size_t};
|
use bitflags::bitflags;
|
||||||
|
use libc::{c_char, c_int, c_uchar, c_uint, c_ulonglong, c_void, size_t};
|
||||||
use rustc_macros::TryFromU32;
|
use rustc_macros::TryFromU32;
|
||||||
use rustc_target::spec::SymbolVisibility;
|
use rustc_target::spec::SymbolVisibility;
|
||||||
|
|
||||||
use super::RustString;
|
use super::RustString;
|
||||||
use super::debuginfo::{
|
use super::debuginfo::{
|
||||||
DIArray, DIBasicType, DIBuilder, DICompositeType, DIDerivedType, DIDescriptor, DIEnumerator,
|
DIArray, DIBasicType, DIBuilder, DICompositeType, DIDerivedType, DIDescriptor, DIEnumerator,
|
||||||
DIFile, DIFlags, DIGlobalVariableExpression, DILexicalBlock, DILocation, DINameSpace,
|
DIFile, DIFlags, DIGlobalVariableExpression, DILexicalBlock, DILocation, DISPFlags, DIScope,
|
||||||
DISPFlags, DIScope, DISubprogram, DISubrange, DITemplateTypeParameter, DIType, DIVariable,
|
DISubprogram, DISubrange, DITemplateTypeParameter, DIType, DIVariable, DebugEmissionKind,
|
||||||
DebugEmissionKind, DebugNameTableKind,
|
DebugNameTableKind,
|
||||||
};
|
};
|
||||||
|
use crate::llvm;
|
||||||
|
|
||||||
/// In the LLVM-C API, boolean values are passed as `typedef int LLVMBool`,
|
/// In the LLVM-C API, boolean values are passed as `typedef int LLVMBool`,
|
||||||
/// which has a different ABI from Rust or C++ `bool`.
|
/// which has a different ABI from Rust or C++ `bool`.
|
||||||
|
@ -952,7 +954,6 @@ pub mod debuginfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
use bitflags::bitflags;
|
|
||||||
// These values **must** match with LLVMRustAllocKindFlags
|
// These values **must** match with LLVMRustAllocKindFlags
|
||||||
bitflags! {
|
bitflags! {
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
|
@ -1717,6 +1718,14 @@ unsafe extern "C" {
|
||||||
pub(crate) fn LLVMDisposeDIBuilder<'ll>(Builder: ptr::NonNull<DIBuilder<'ll>>);
|
pub(crate) fn LLVMDisposeDIBuilder<'ll>(Builder: ptr::NonNull<DIBuilder<'ll>>);
|
||||||
|
|
||||||
pub(crate) fn LLVMDIBuilderFinalize<'ll>(Builder: &DIBuilder<'ll>);
|
pub(crate) fn LLVMDIBuilderFinalize<'ll>(Builder: &DIBuilder<'ll>);
|
||||||
|
|
||||||
|
pub(crate) fn LLVMDIBuilderCreateNameSpace<'ll>(
|
||||||
|
Builder: &DIBuilder<'ll>,
|
||||||
|
ParentScope: Option<&'ll Metadata>,
|
||||||
|
Name: *const c_uchar,
|
||||||
|
NameLen: size_t,
|
||||||
|
ExportSymbols: llvm::Bool,
|
||||||
|
) -> &'ll Metadata;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[link(name = "llvm-wrapper", kind = "static")]
|
#[link(name = "llvm-wrapper", kind = "static")]
|
||||||
|
@ -2286,14 +2295,6 @@ unsafe extern "C" {
|
||||||
Ty: &'a DIType,
|
Ty: &'a DIType,
|
||||||
) -> &'a DITemplateTypeParameter;
|
) -> &'a DITemplateTypeParameter;
|
||||||
|
|
||||||
pub fn LLVMRustDIBuilderCreateNameSpace<'a>(
|
|
||||||
Builder: &DIBuilder<'a>,
|
|
||||||
Scope: Option<&'a DIScope>,
|
|
||||||
Name: *const c_char,
|
|
||||||
NameLen: size_t,
|
|
||||||
ExportSymbols: bool,
|
|
||||||
) -> &'a DINameSpace;
|
|
||||||
|
|
||||||
pub fn LLVMRustDICompositeTypeReplaceArrays<'a>(
|
pub fn LLVMRustDICompositeTypeReplaceArrays<'a>(
|
||||||
Builder: &DIBuilder<'a>,
|
Builder: &DIBuilder<'a>,
|
||||||
CompositeType: &'a DIType,
|
CompositeType: &'a DIType,
|
||||||
|
|
|
@ -1321,14 +1321,6 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateTemplateTypeParameter(
|
||||||
unwrapDI<DIType>(Ty), IsDefault));
|
unwrapDI<DIType>(Ty), IsDefault));
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" LLVMMetadataRef
|
|
||||||
LLVMRustDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder,
|
|
||||||
LLVMMetadataRef Scope, const char *Name,
|
|
||||||
size_t NameLen, bool ExportSymbols) {
|
|
||||||
return wrap(unwrap(Builder)->createNameSpace(
|
|
||||||
unwrapDI<DIDescriptor>(Scope), StringRef(Name, NameLen), ExportSymbols));
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" void LLVMRustDICompositeTypeReplaceArrays(
|
extern "C" void LLVMRustDICompositeTypeReplaceArrays(
|
||||||
LLVMDIBuilderRef Builder, LLVMMetadataRef CompositeTy,
|
LLVMDIBuilderRef Builder, LLVMMetadataRef CompositeTy,
|
||||||
LLVMMetadataRef Elements, LLVMMetadataRef Params) {
|
LLVMMetadataRef Elements, LLVMMetadataRef Params) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue