- Jun 16, 2022
-
-
Okwan Kwon authored
This was missed by the previous commit in OpStats.cpp.
-
Peter Klausler authored
When an I/O data transfer statement uses an ASSIGN'ed FORMAT that has not been ASSIGN'ed to a FORMAT statement, the runtime receives a zero-length format string. Distinguish this case from the general error message about missing parentheses. Differential Revision: https://reviews.llvm.org/D127797
-
Nico Weber authored
See revision b8b7a9dc for prior art.
-
Peter Klausler authored
The predicate that determines image control statements needs to distinguish STOP (which is) from ERROR STOP (which isn't). Differential Revision: https://reviews.llvm.org/D127796
-
Chelsea Cassanova authored
This reverts commit b10579d0. Make sure that the lldb-target-fuzzer exists before adding the custom fuzz-lldb-target.
-
Min-Yih Hsu authored
If any of the operands for ICmpOp is a vector, returns a vector<Nxi1> , rather than an i1 type result. Differential Revision: https://reviews.llvm.org/D127536
-
Min-Yih Hsu authored
Instead of casting the incoming operand into VectorType to check if it's scalable or not. This is the place I missed to fix in f088b99e. Differential Revision: https://reviews.llvm.org/D127535
-
Min-Yih Hsu authored
When translating from a llvm::ConstantAggregate with vector type, we should lower to insertelement operations (if needed) rather than using insertvalue. Differential Revision: https://reviews.llvm.org/D127534
-
Peter Klausler authored
NCOPIES= is currently a std::size_t in the API. If a negative value is used, the memory allocation will fail. Change it to be a signed integer, and crash with a message instead if it be negative. Differential Revision: https://reviews.llvm.org/D127795
-
Peter Klausler authored
I'm emitting "x'y" because the space-separated apostrophes are misinterpreted as being adjacent repeated quotation marks. Fix to ensure no space skipping is applied when checking for repeated quotation marks. Differential Revision: https://reviews.llvm.org/D127792
-
Peter Klausler authored
When generic resolution finds its specific procedure in a module, and that specific procedure is not use-associated into the local scope (perhaps because it was PRIVATE, perhaps because the generic was use-associated with ONLY:), we create a new use-association with a renaming. The name constructed for this renaming needs to be additionally qualified with the module name of the specific procedure in order to avoid clashing with another specific of the same name that may have previously been use-associated in the same way from a distinct module. Differential Revision: https://reviews.llvm.org/D127790
-
Peter Klausler authored
Position inquiries need to account for offsets in records to be accurate in the case of non-advancing I/O. Differential Revision: https://reviews.llvm.org/D127789
-
Peter Klausler authored
There's code in EditCharacterInput() that causes that template function to silently return false if it is invoked at the end of the input file. This overrides other checks that properly call SignalEnd() later. Differential Revision: https://reviews.llvm.org/D127786
-
Sam Clegg authored
Remove the `hasPrototype()` restriction so that old style K&R declarations of main work too. For example the following has 2 params but no prototype. ``` int main(argc, argv) int argc; char *argv[]; { return 0; } ``` Also, use `getNumParams()` over `param_size()` which seems to be a more direct way to get at the same information. Also, add missing tests for this mangling. Differential Revision: https://reviews.llvm.org/D127888 -
Walter Erquinigo authored
https://lab.llvm.org/buildbot/#/builders/17/builds/23269 breaks because we are doing some asm calls that only work on x86 https://lab.llvm.org/buildbot/#/builders/68/builds/34092/steps/6/logs/stdio breaks because some comparators where being done incorrectly.
-
Peter Klausler authored
A REWIND of a unit that's in the middle of a record due to a READ or WRITE statement with ADVANCE='NO' needs to reset the left tab limit so that the next transfer takes place at the beginning of the first record. Differential Revision: https://reviews.llvm.org/D127783
-
Fangrui Song authored
-
Ben Langmuir authored
Disable or canonicalize compiler options that are not relevant in explicit module builds, similar to what we already did for the modules cache path. This reduces uninteresting differences between command-lines, which is particularly useful if there is a tool that can cache the compilations. Differential Revision: https://reviews.llvm.org/D127883
-
Nikolas Klauser authored
Reviewed By: var-const, Mordante, #libc Spies: H-G-Hristov, sstefan1, libcxx-commits, mgorny Differential Revision: https://reviews.llvm.org/D127130
-
Walter Erquinigo authored
:q! This diff is massive, but it's because it connects the client with lldb-server and also ensures that the postmortem case works. - Flatten the postmortem trace schema. The reason is that the schema has become quite complex due to the new multicore case, which defeats the original purpose of having a schema that could work for every trace plug-in. At this point, it's better that each trace plug-in defines it's own full schema. This means that the only common field is "type". -- Because of this new approach, I merged the "common" trace load and saving functionalities into the IntelPT one. This simplified the code quite a bit. If we eventually implement another trace plug-in, we can see then what we could reuse. -- The new schema, which is flattened, has now better comments and is parsed better. A change I did was to disallow hex addresses, because they are a bit error prone. I'm asking now to print the address in decimal. -- Renamed "intel" to "GenuineIntel" in the schema because that's what you see in /proc/cpuinfo. - Implemented reading the context switch trace data buffer. I had to do some refactors to do that cleanly. -- A major change that I did here was to simplify the perf_event circular buffer reading logic. It was too complex. Maybe the original Intel author had something different in mind. - Implemented all the necessary bits to read trace.json files with per-core data. - Implemented all the necessary bits to save to disk per-core trace session. - Added a test that ensures that parsing and saving to disk works. Differential Revision: https://reviews.llvm.org/D126015
-
Arthur Eubanks authored
-
Peter Klausler authored
When an unconnected unit number is used in a BACKSPACE statement with ERR=, IOSTAT=, &/or IOMSG= control specifiers, don't crash, but let the program deal with the error. Differential Revision: https://reviews.llvm.org/D127782
-
owenca authored
Differential Revision: https://reviews.llvm.org/D127827
-
Stella Stamenova authored
This reverts commit f3250da1. This broke the windows lldb bot: https://lab.llvm.org/buildbot/#/builders/83/builds/19988 and likely others.
-
Aaron Ballman authored
Several build bots are failing with surprising behavior, so it's less clear whether we do or don't implement this DR properly. https://lab.llvm.org/buildbot/#/builders/91/builds/10454 https://lab.llvm.org/buildbot/#/builders/109/builds/40668 https://lab.llvm.org/buildbot/#/builders/139/builds/23334
-
Aaron Ballman authored
This adds information for DRs 126 through 146.
-
Amy Kwan authored
[PowerPC] Skip combine for vector_shuffles when two scalar_to_vector nodes are different vector types. Currently in `combineVectorShuffle()`, we update the shuffle mask if either input vector comes from a scalar_to_vector, and we keep the respective input vectors in its permuted form by producing PPCISD::SCALAR_TO_VECTOR_PERMUTED. However, it is possible that we end up in a situation where both input vectors to the vector_shuffle are scalar_to_vector, and are different vector types. In situations like this, the shuffle mask is updated incorrectly as the current code assumes both scalar_to_vector inputs are the same vector type. This patch skips the combines for vector_shuffle if both input vectors are scalar_to_vector, and if they are of different vector types. A follow up patch will focus on fixing this issue afterwards, in order to correctly update the shuffle mask. Differential Revision: https://reviews.llvm.org/D127818
-
Okwan Kwon authored
This allows to set printAsJSON through the create function. Differential Revision: https://reviews.llvm.org/D127891
-
Walter Erquinigo authored
- Add logging for when the live state of the process is refreshed - Move error handling of the live state refreshing to Trace from TraceIntelPT. This allows refreshing to fail either at the plug-in level or at the base class level. The error is cached and it can be gotten every time RefreshLiveProcessState is invoked. - Allow DoRefreshLiveProcessState to handle plugin-specific parameters. - Add some encapsulation to prevent TraceIntelPT from accessing variables belonging to Trace. Test done via logging: ``` (lldb) b main Breakpoint 1: where = a.out`main + 20 at main.cpp:27:20, address = 0x00000000004023d9 (lldb) r Process 2359706 launched: '/home/wallace/a.out' (x86_64) Process 2359706 stopped * thread #1, name = 'a.out', stop reason = breakpoint 1.1 frame #0: 0x00000000004023d9 a.out`main at main.cpp:27:20 24 }; 25 26 int main() { -> 27 std::vector<int> vvv; 28 for (int i = 0; i < 100000; i++) 29 vvv.push_back(i); 30 (lldb) process trace start (lldb) log enable lldb target -F(lldb) n Process 2359706 stopped * thread #1, name = 'a.out', stop reason = step over frame #0: 0x00000000004023e8 a.out`main at main.cpp:28:12 25 26 int main() { 27 std::vector<int> vvv; -> 28 for (int i = 0; i < 100000; i++) 29 vvv.push_back(i); 30 31 std::deque<int> dq1 = {1, 2, 3}; (lldb) thread trace dump instructions -c 2 -t Trace.cpp:RefreshLiveProcessState Trace::RefreshLiveProcessState invoked TraceIntelPT.cpp:DoRefreshLiveProcessState TraceIntelPT found tsc conversion information thread #1: tid = 2359706 a.out`std::vector<int, std::allocator<int>>::vector() + 26 at stl_vector.h:395:19 54: [tsc=unavailable] 0x0000000000403a7c retq ``` See the logging lines at the end of the dump. They indicate that refreshing happened and that perf conversion information was found. Differential Revision: https://reviews.llvm.org/D125943 -
Walter Erquinigo authored
[trace][intelpt] Support system-wide tracing [10] - Return warnings and tsc information from lldb-server. - Add a warnings field in the jLLDBGetState response, for warnings to be delivered to the client for troubleshooting. This removes the need to silently log lldb-server's llvm::Errors and not expose them easily to the user - Simplify the tscPerfZeroConversion struct and schema. It used to extend a base abstract class, but I'm doubting that we'll ever add other conversion mechanisms because all modern kernels support perf zero. It is also the one who is supposed to work with the timestamps produced by the context switch trace, so expecting it is imperative. - Force tsc collection for cpu tracing. - Add a test checking that tscPerfZeroConversion is returned by the GetState request - Add a pre-check for cpu tracing that makes sure that perf zero values are available. Differential Revision: https://reviews.llvm.org/D125932
-
Walter Erquinigo authored
- Add collection of context switches per cpu grouped with the per-cpu intel pt traces. - Move the state handling from the interl pt trace class to the PerfEvent one. - Add support for stopping and enabling perf event groups. - Return context switch entries as part of the jLLDBTraceGetState response. - Move the triggers of whenever the process stopped or resumed. Now the will-resume notification is in a better location, which will ensure that we'll capture the instructions that will be executed. - Remove IntelPTSingleBufferTraceUP. The unique pointer was useless. - Add unit tests Differential Revision: https://reviews.llvm.org/D125897
-
Walter Erquinigo authored
[trace][intelpt] Support system-wide tracing [8] - Improve the single buffer perf_event configuration We were setting some events to be written in the data buffer of the perf_event, but we don't need that. Besides that, we don't need the data buffer to be larger than 1, so we can reduce its size. Differential Revision: https://reviews.llvm.org/D125850
-
Walter Erquinigo authored
We have two different "process trace" implementations: per thread and per core. As a way to simplify the collector who uses both, I'm creating a base abstract class that is used by these implementations. This effectively simplify a good chunk of code. Differential Revision: https://reviews.llvm.org/D125503
-
David Goldman authored
When querying the index during an ObjC protocol name lookup for code completion, we should only suggest ObjC protocols. Differential Revision: https://reviews.llvm.org/D127125
-
Chelsea Cassanova authored
Create a ninja target for running the LLDB target fuzzer. Currently the ninja target for the fuzzer will build the fuzzer without running it. This allows the fuzzer to be built and run. Differential revision: https://reviews.llvm.org/D127882
-
Michael Jones authored
This patch adds the entrypoint for printf. With this, building a "hello world" program with just LLVM-libc is possible. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D126831
-
Michael Jones authored
Add return values to converter functions to allow for better error handling when writing files. Also move the file writing code around to be easier to read. Reviewed By: sivachandra Differential Revision: https://reviews.llvm.org/D127773
-
Jacques Pienaar authored
-
Petr Hosek authored
We shouldn't assume that libunwind.so is available. Rather can defer the decision to the linker which defaults to libunwind.so, but if .so isn't available, it'd pick libunwind.a. Users can use -static-libgcc and -shared-libgcc to override this behavior and explicitly choose the version they want. Differential Revision: https://reviews.llvm.org/D127528
-
Benjamin Kramer authored
-