diff options
| author | Tom Tromey <tom@tromey.com> | 2016-11-30 14:59:45 -0700 |
|---|---|---|
| committer | Tom Tromey <tom@tromey.com> | 2017-02-04 23:19:39 -0700 |
| commit | b037c5211b9ba496252af5a0369b48649f91ccc8 (patch) | |
| tree | 3b122667001176acbd1a922a9befbb771a5dcd1b /src/rustllvm/RustWrapper.cpp | |
| parent | d7777ae682d498ff43e3d6b65a7a8d0b2361fa0b (diff) | |
| download | rust-b037c5211b9ba496252af5a0369b48649f91ccc8.tar.gz rust-b037c5211b9ba496252af5a0369b48649f91ccc8.zip | |
Emit DW_AT_main_subprogram
This changes rustc to emit DW_AT_main_subprogram on the "main" program. This lets gdb suitably stop at the user's main in response to "start" (rather than the library's main, which is what happens currently). Fixes #32620 r? michaelwoerister
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 34ee7d552f3..798febcbcd6 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -346,6 +346,7 @@ enum class LLVMRustDIFlags : uint32_t { FlagStaticMember = (1 << 12), FlagLValueReference = (1 << 13), FlagRValueReference = (1 << 14), + FlagMainSubprogram = (1 << 21), // Do not add values that are not supported by the minimum LLVM // version we support! }; @@ -432,6 +433,11 @@ static unsigned fromRust(LLVMRustDIFlags Flags) { if (isSet(Flags & LLVMRustDIFlags::FlagRValueReference)) { Result |= DINode::DIFlags::FlagRValueReference; } +#if LLVM_RUSTLLVM || LLVM_VERSION_GE(4, 0) + if (isSet(Flags & LLVMRustDIFlags::FlagMainSubprogram)) { + Result |= DINode::DIFlags::FlagMainSubprogram; + } +#endif return Result; } |
