From 4f25e0ab4afa594dcc11ee7d90dfd1a054e66b9d Mon Sep 17 00:00:00 2001 From: Ernestas Kulik Date: Sun, 26 Jul 2020 15:55:41 +0200 Subject: [PATCH] debuginfo: Emit DW_AT_accessibility attributes Currently, the DWARF attributes for struct member accessibility are not emitted, even though ty::FieldDef contains the information about the visibility. This commit adds a mapping between ty::Visibility and debuginfo::DIFlags for that when creating member descriptions. Closes https://github.com/rust-lang/rust/issues/9228 --- src/librustc_codegen_llvm/debuginfo/metadata.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs index 6ae7c7efaee62..36826bb6ff94d 100644 --- a/src/librustc_codegen_llvm/debuginfo/metadata.rs +++ b/src/librustc_codegen_llvm/debuginfo/metadata.rs @@ -34,7 +34,7 @@ use rustc_middle::mir::interpret::truncate; use rustc_middle::mir::{self, Field, GeneratorLayout}; use rustc_middle::ty::layout::{self, IntegerExt, PrimitiveExt, TyAndLayout}; use rustc_middle::ty::subst::GenericArgKind; -use rustc_middle::ty::Instance; +use rustc_middle::ty::{Instance, Visibility}; use rustc_middle::ty::{self, AdtKind, GeneratorSubsts, ParamEnv, Ty, TyCtxt}; use rustc_middle::{bug, span_bug}; use rustc_session::config::{self, DebugInfo}; @@ -1222,7 +1222,11 @@ impl<'tcx> StructMemberDescriptionFactory<'tcx> { offset: layout.fields.offset(i), size: field.size, align: field.align.abi, - flags: DIFlags::FlagZero, + flags: match f.vis { + Visibility::Public => DIFlags::FlagPublic, + Visibility::Restricted(..) => DIFlags::FlagProtected, + Visibility::Invisible => DIFlags::FlagPrivate, + }, discriminant: None, source_info: None, }