[PATCH] D70696: [DebugInfo] Support to emit debugInfo for extern variables
Yonghong Song via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 25 14:10:41 PST 2019
yonghong-song created this revision.
yonghong-song added reviewers: dblaikie, aprantl, RKSimon.
yonghong-song added a project: debug-info.
Herald added subscribers: llvm-commits, cfe-commits, hiraditya.
Herald added projects: clang, LLVM.
Extern variable usage in BPF is different from traditional
pure user space application. Recent discussion in linux bpf
mailing list has two use cases where debug info types are
required to use extern variables:
- extern types are required to have a suitable interface in libbpf (bpf loader) to provide kernel config parameters to bpf programs. https://lore.kernel.org/bpf/CAEf4BzYCNo5GeVGMhp3fhysQ=_axAf=23PtwaZs-yAyafmXC9g@mail.gmail.com/T/#t
- extern types are required so kernel bpf verifier can verify program which uses external functions more precisely. This will make later link with actual external function no need to reverify. https://lore.kernel.org/bpf/87eez4odqp.fsf@toke.dk/T/#m8d5c3e87ffe7f2764e02d722cb0d8cbc136880ed
This patch added clang support to emit debuginfo for extern variables
with a TargetInfo hook to enable it. Currently, only BPF target enables
to generate debug info for extern variables. The emission of
such debuginfo is disabled for C++ at this moment since BPF only
supports a subset of C language. Emission with C++ can be enabled
later if an appropriate use case is identified.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D70696
Files:
clang/include/clang/AST/ASTConsumer.h
clang/include/clang/Basic/TargetInfo.h
clang/include/clang/Sema/Sema.h
clang/lib/Basic/Targets/BPF.h
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
clang/lib/CodeGen/CodeGenAction.cpp
clang/lib/CodeGen/CodeGenModule.cpp
clang/lib/CodeGen/CodeGenModule.h
clang/lib/CodeGen/ModuleBuilder.cpp
clang/lib/Sema/Sema.cpp
clang/lib/Sema/SemaDecl.cpp
clang/test/CodeGenCXX/debug-info-extern-duplicate-2.c
clang/test/CodeGenCXX/debug-info-extern-duplicate.c
clang/test/CodeGenCXX/debug-info-extern-unused.c
clang/test/CodeGenCXX/debug-info-extern-var-char-2.c
clang/test/CodeGenCXX/debug-info-extern-var-char.c
clang/test/CodeGenCXX/debug-info-extern-var-func.c
clang/test/CodeGenCXX/debug-info-extern-var-multi.c
llvm/include/llvm/IR/DIBuilder.h
llvm/lib/IR/DIBuilder.cpp
llvm/lib/IR/DebugInfo.cpp
llvm/unittests/Transforms/Utils/CloningTest.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70696.230967.patch
Type: text/x-patch
Size: 16182 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191125/47130573/attachment-0001.bin>
More information about the cfe-commits
mailing list