SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. Temporarily run machine-verifier once in test/CodeGen/SPARC/fp128.ll, so (details)
  2. [asan] Remove debug locations from alloca prologue instrumentation (details)
  3. [lldb] Move register info "augmentation" from gdb-remote into ABI (details)
  4. [lldb] Remove tab from TestReturnValue.py (details)
Commit 7b63e27cc0a940a67db84b8b8485dd8b81a2beeb by paulsson
Temporarily run machine-verifier once in test/CodeGen/SPARC/fp128.ll, so
that it XFAIL:s also without expensive checks.
See https://reviews.llvm.org/D63973
The file was modifiedllvm/test/CodeGen/SPARC/fp128.ll
Commit 09667bc1920463107684a566c3f2c3cef9b156e7 by aclopte
[asan] Remove debug locations from alloca prologue instrumentation
Summary: This fixes https://llvm.org/PR26673
"Wrong debugging information with -fsanitize=address" where asan
instrumentation causes the prologue end to be computed incorrectly:
findPrologueEndLoc, looks for the first instruction with a debug
location to determine the prologue end.  Since the asan instrumentation
instructions had debug locations, that prologue end was at some
instruction, where the stack frame is still being set up.
There seems to be no good reason for extra debug locations for the asan
instrumentations that set up the frame; they don't have a natural source
location.  In the debugger they are simply located at the start of the
function.
For certain other instrumentations like
-fsanitize-coverage=trace-pc-guard the same problem persists - that
might be more work to fix, since it looks like they rely on locations of
the tracee functions.
This partly reverts aaf4bb239487e0a3b20a8eaf94fc641235ba2c29
"[asan] Set debug location in ASan function prologue" whose motivation
was to give debug location info to the coverage callback. Its test only
ensures that the call to @__sanitizer_cov_trace_pc_guard is given the
correct source location; as the debug location is still set in
ModuleSanitizerCoverage::InjectCoverageAtBlock, the test does not break.
So -fsanitize-coverage is hopefully unaffected - I don't think it should
rely on the debug locations of asan-generated allocas.
Related revision: 3c6c14d14b40adfb581940859ede1ac7d8ceae7a
"ASAN: Provide reliable debug info for local variables at -O0."
Below is how the X86 assembly version of the added test case changes. We
get rid of some .loc lines and put prologue_end where the user code
starts.
```diff
--- 2.master.s 2019-12-02 12:32:38.982959053 +0100
+++ 2.patch.s 2019-12-02 12:32:41.106246674 +0100
@@ -45,8 +45,6 @@
.cfi_offset %rbx, -24
xorl %eax, %eax
movl %eax, %ecx
- .Ltmp2:
- .loc 1 3 0 prologue_end      # 2.c:3:0
cmpl $0, __asan_option_detect_stack_use_after_return
movl %edi, 92(%rbx)          # 4-byte Spill
movq %rsi, 80(%rbx)          # 8-byte Spill
@@ -57,9 +55,7 @@
callq __asan_stack_malloc_0
movq %rax, 72(%rbx)          # 8-byte Spill
.LBB1_2:
- .loc 1 0 0 is_stmt 0         # 2.c:0:0
movq 72(%rbx), %rax          # 8-byte Reload
- .loc 1 3 0                   # 2.c:3:0
cmpq $0, %rax
movq %rax, %rcx
movq %rax, 64(%rbx)          # 8-byte Spill
@@ -72,9 +68,7 @@
movq %rax, %rsp
movq %rax, 56(%rbx)          # 8-byte Spill
.LBB1_4:
- .loc 1 0 0                   # 2.c:0:0
movq 56(%rbx), %rax          # 8-byte Reload
- .loc 1 3 0                   # 2.c:3:0
movq %rax, 120(%rbx)
movq %rax, %rcx
addq $32, %rcx
@@ -99,7 +93,6 @@
movb %r8b, 31(%rbx)          # 1-byte Spill
je .LBB1_7
# %bb.5:
- .loc 1 0 0                   # 2.c:0:0
movq 40(%rbx), %rax          # 8-byte Reload
andq $7, %rax
addq $3, %rax
@@ -118,7 +111,8 @@
movl %ecx, (%rax)
movq 80(%rbx), %rdx          # 8-byte Reload
movq %rdx, 128(%rbx)
- .loc 1 4 3 is_stmt 1         # 2.c:4:3
+.Ltmp2:
+ .loc 1 4 3 prologue_end      # 2.c:4:3
movq %rax, %rdi
callq f
movq 48(%rbx), %rax          # 8-byte Reload
```
Reviewers: eugenis, aprantl
Reviewed By: eugenis
Subscribers: ormris, aprantl, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70894
The file was modifiedllvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
The file was addedllvm/test/Instrumentation/AddressSanitizer/debug-info-alloca.ll
The file was modifiedllvm/test/Instrumentation/AddressSanitizer/local_stack_base.ll
Commit 2b8db387f2a616f39a077ede18c6366f2ea9f203 by pavel
[lldb] Move register info "augmentation" from gdb-remote into ABI
Summary: Previously the ABI plugin exposed some "register infos" and the
gdb-remote code used those to fill in the missing bits. Now, the
"filling in" code is in the ABI plugin itself, and the gdb-remote code
just invokes that.
The motivation for this is two-fold: a) the "augmentation" logic is
useful outside of process gdb-remote. For
instance, it would allow us to avoid repeating the register number
definitions in minidump code. b) It gives more implementation freedom
to the ABI classes. Now that
these "register infos" are essentially implementation details, classes
can use other methods to obtain dwarf/eh_frame register numbers -- for
instance they can consult llvm MC layer.
Since the augmentation code was not currently tested anywhere, I took
the opportunity to create a simple test for it.
Reviewers: jasonmolenda, clayborg, tatyana-krasnukha
Subscribers: aprantl, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D70906
The file was addedlldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/basic_eh_frame.yaml
The file was modifiedlldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
The file was modifiedlldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestTargetXMLArch.py
The file was modifiedlldb/source/Target/ABI.cpp
The file was modifiedlldb/include/lldb/Target/ABI.h
Commit 46d0ec3a803021281c8d868b1487d2d5cd06f274 by Raphael Isemann
[lldb] Remove tab from TestReturnValue.py
Mixing tabs and spaces makes Python exit with this error:
  File
"llvm/lldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py",
line 23
   return (self.getArchitecture() == "aarch64" and self.getPlatform() ==
"linux")
                                                                       
       ^ TabError: inconsistent use of tabs and spaces in indentation
The file was modifiedlldb/packages/Python/lldbsuite/test/functionalities/return-value/TestReturnValue.py