forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 331
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #53 from JDevlieghere/cherrypick/latest-reproducers
Cherrypick/latest reproducers
- Loading branch information
Showing
29 changed files
with
766 additions
and
361 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
//===-- GDBRemote.h ----------------------------------------------*- C++-*-===// | ||
// | ||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#ifndef liblldb_GDBRemote_h_ | ||
#define liblldb_GDBRemote_h_ | ||
|
||
#include "lldb/Utility/StreamString.h" | ||
#include "lldb/lldb-enumerations.h" | ||
#include "lldb/lldb-public.h" | ||
#include "llvm/Support/YAMLTraits.h" | ||
#include "llvm/Support/raw_ostream.h" | ||
|
||
#include <stddef.h> | ||
#include <stdint.h> | ||
#include <string> | ||
#include <vector> | ||
|
||
namespace lldb_private { | ||
|
||
class StreamGDBRemote : public StreamString { | ||
public: | ||
StreamGDBRemote(); | ||
|
||
StreamGDBRemote(uint32_t flags, uint32_t addr_size, | ||
lldb::ByteOrder byte_order); | ||
|
||
~StreamGDBRemote() override; | ||
|
||
/// Output a block of data to the stream performing GDB-remote escaping. | ||
/// | ||
/// \param[in] s | ||
/// A block of data. | ||
/// | ||
/// \param[in] src_len | ||
/// The amount of data to write. | ||
/// | ||
/// \return | ||
/// Number of bytes written. | ||
// TODO: Convert this function to take ArrayRef<uint8_t> | ||
int PutEscapedBytes(const void *s, size_t src_len); | ||
}; | ||
|
||
/// GDB remote packet as used by the reproducer and the GDB remote | ||
/// communication history. Packets can be serialized to file. | ||
struct GDBRemotePacket { | ||
|
||
friend llvm::yaml::MappingTraits<GDBRemotePacket>; | ||
|
||
enum Type { ePacketTypeInvalid = 0, ePacketTypeSend, ePacketTypeRecv }; | ||
|
||
GDBRemotePacket() | ||
: packet(), type(ePacketTypeInvalid), bytes_transmitted(0), packet_idx(0), | ||
tid(LLDB_INVALID_THREAD_ID) {} | ||
|
||
void Clear() { | ||
packet.data.clear(); | ||
type = ePacketTypeInvalid; | ||
bytes_transmitted = 0; | ||
packet_idx = 0; | ||
tid = LLDB_INVALID_THREAD_ID; | ||
} | ||
|
||
struct BinaryData { | ||
std::string data; | ||
}; | ||
|
||
void Serialize(llvm::raw_ostream &strm) const; | ||
void Dump(Stream &strm) const; | ||
|
||
BinaryData packet; | ||
Type type; | ||
uint32_t bytes_transmitted; | ||
uint32_t packet_idx; | ||
lldb::tid_t tid; | ||
|
||
private: | ||
llvm::StringRef GetTypeStr() const; | ||
}; | ||
|
||
} // namespace lldb_private | ||
|
||
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(lldb_private::GDBRemotePacket) | ||
LLVM_YAML_IS_DOCUMENT_LIST_VECTOR(std::vector<lldb_private::GDBRemotePacket>) | ||
|
||
namespace llvm { | ||
namespace yaml { | ||
|
||
template <> | ||
struct ScalarEnumerationTraits<lldb_private::GDBRemotePacket::Type> { | ||
static void enumeration(IO &io, lldb_private::GDBRemotePacket::Type &value); | ||
}; | ||
|
||
template <> struct ScalarTraits<lldb_private::GDBRemotePacket::BinaryData> { | ||
static void output(const lldb_private::GDBRemotePacket::BinaryData &, void *, | ||
raw_ostream &); | ||
|
||
static StringRef input(StringRef, void *, | ||
lldb_private::GDBRemotePacket::BinaryData &); | ||
|
||
static QuotingType mustQuote(StringRef S) { return QuotingType::None; } | ||
}; | ||
|
||
template <> struct MappingTraits<lldb_private::GDBRemotePacket> { | ||
static void mapping(IO &io, lldb_private::GDBRemotePacket &Packet); | ||
|
||
static StringRef validate(IO &io, lldb_private::GDBRemotePacket &); | ||
}; | ||
|
||
} // namespace yaml | ||
} // namespace llvm | ||
|
||
#endif // liblldb_GDBRemote_h_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
run | ||
reproducer status | ||
reproducer dump -p files | ||
reproducer generate |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
run | ||
reproducer status | ||
reproducer dump -p cwd | ||
reproducer generate |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# This tests the reproducer dump functionality. | ||
|
||
# Generate a reproducer. | ||
# RUN: mkdir -p %t | ||
# RUN: rm -rf %t.repro | ||
# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out | ||
# RUN: %lldb -x -b -s %S/Inputs/FileCapture.in -o 'reproducer dump -p files' --capture --capture-path %t.repro %t/reproducer.out | ||
|
||
# RUN: %lldb -b -o 'reproducer dump -p files -f %t.repro' | FileCheck %s --check-prefix FILES | ||
# FILES: 'reproducer.out' | ||
# FILES: 'FileCapture.in' | ||
|
||
# RUN: %lldb -b -o 'reproducer dump -p version -f %t.repro' | FileCheck %s --check-prefix VERSION | ||
# VERSION: lldb version | ||
|
||
# RUN: %lldb -b -o 'reproducer dump -p commands -f %t.repro' | FileCheck %s --check-prefix COMMANDS | ||
# COMMANDS: command source | ||
# COMMANDS: target create | ||
# COMMANDS: command source | ||
|
||
# RUN: %lldb -b -o 'reproducer dump -p gdb -f %t.repro' | FileCheck %s --check-prefix GDB | ||
# GDB: send packet: $QStartNoAckMode#b0 | ||
# GDB: read packet: $OK#9a | ||
|
||
# RUN: %lldb --replay %t.repro | FileCheck %s --check-prefix FILES |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# This tests relative capture paths. | ||
|
||
# RUN: mkdir -p %t | ||
# RUN: cd %t | ||
# RUN: rm -rf ./foo | ||
# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out | ||
# RUN: %lldb -x -b -s %S/Inputs/FileCapture.in -o 'reproducer dump -p files' --capture --capture-path ./foo %t/reproducer.out | ||
# RUN: %lldb --replay ./foo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# This tests relative capture paths. | ||
|
||
# RUN: echo "CHECK: %t" > %t.check | ||
|
||
# RUN: rm -rf %t.repro | ||
# RUN: mkdir -p %t.repro | ||
# RUN: mkdir -p %t | ||
# RUN: cd %t | ||
# RUN: %clang %S/Inputs/simple.c -g -o %t/reproducer.out | ||
# RUN: %lldb -x -b -s %S/Inputs/WorkingDir.in --capture --capture-path %t.repro %t/reproducer.out | ||
|
||
# RUN: cat %t.repro/cwd.txt | FileCheck %t.check | ||
# RUN: %lldb --replay %t.repro | FileCheck %t.check |
Oops, something went wrong.