teemperor created this revision.
teemperor added a reviewer: labath.
Herald added subscribers: lldb-commits, JDevlieghere.
Herald added a project: LLDB.
Yet another step on the long road towards getting rid of lldb's Stream class.
We probably should just make this some kind of member of Address/AddressRange,
but it seems quite often we just push
in random integers in there and this is just about getting rid of Stream and
not improving arbitrary APIs.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D71052
Files:
lldb/include/lldb/Utility/Stream.h
lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py
lldb/source/Core/Address.cpp
lldb/source/Core/AddressRange.cpp
lldb/source/Core/DumpDataExtractor.cpp
lldb/source/Expression/DWARFExpression.cpp
lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
lldb/source/Symbol/Block.cpp
lldb/source/Target/ThreadPlanRunToAddress.cpp
lldb/source/Target/ThreadPlanStepInRange.cpp
lldb/source/Target/ThreadPlanStepInstruction.cpp
lldb/source/Target/ThreadPlanStepOverRange.cpp
lldb/source/Target/ThreadPlanStepThrough.cpp
lldb/source/Utility/Stream.cpp
lldb/source/Utility/VMRange.cpp
lldb/unittests/Utility/StreamTest.cpp
Index: lldb/unittests/Utility/StreamTest.cpp
===================================================================
--- lldb/unittests/Utility/StreamTest.cpp
+++ lldb/unittests/Utility/StreamTest.cpp
@@ -37,94 +37,94 @@
}
TEST_F(StreamTest, AddressPrefix) {
- s.Address(0x1, 1, "foo");
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, "foo");
EXPECT_EQ("foo0x01", TakeValue());
}
TEST_F(StreamTest, AddressEmptyPrefix) {
- s.Address(0x1, 1, nullptr);
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, nullptr);
EXPECT_EQ("0x01", TakeValue());
- s.Address(0x1, 1, "");
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, "");
EXPECT_EQ("0x01", TakeValue());
}
TEST_F(StreamTest, AddressSuffix) {
- s.Address(0x1, 1, nullptr, "foo");
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, nullptr, "foo");
EXPECT_EQ("0x01foo", TakeValue());
}
TEST_F(StreamTest, AddressNoSuffix) {
- s.Address(0x1, 1, nullptr, nullptr);
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, nullptr, nullptr);
EXPECT_EQ("0x01", TakeValue());
- s.Address(0x1, 1, nullptr, "");
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, nullptr, "");
EXPECT_EQ("0x01", TakeValue());
}
TEST_F(StreamTest, AddressPrefixAndSuffix) {
- s.Address(0x1, 1, "foo", "bar");
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1, "foo", "bar");
EXPECT_EQ("foo0x01bar", TakeValue());
}
TEST_F(StreamTest, AddressSize) {
- s.Address(0x0, 0);
+ StreamUtils::Address(s.AsRawOstream(), 0x0, 0);
EXPECT_EQ("0x0", TakeValue());
- s.Address(0x1, 0);
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 0);
EXPECT_EQ("0x1", TakeValue());
- s.Address(0x1, 1);
+ StreamUtils::Address(s.AsRawOstream(), 0x1, 1);
EXPECT_EQ("0x01", TakeValue());
- s.Address(0xf1, 1);
+ StreamUtils::Address(s.AsRawOstream(), 0xf1, 1);
EXPECT_EQ("0xf1", TakeValue());
- s.Address(0xff, 1);
+ StreamUtils::Address(s.AsRawOstream(), 0xff, 1);
EXPECT_EQ("0xff", TakeValue());
- s.Address(0x100, 1);
+ StreamUtils::Address(s.AsRawOstream(), 0x100, 1);
EXPECT_EQ("0x100", TakeValue());
- s.Address(0xf00, 4);
+ StreamUtils::Address(s.AsRawOstream(), 0xf00, 4);
EXPECT_EQ("0x00000f00", TakeValue());
- s.Address(0x100, 8);
+ StreamUtils::Address(s.AsRawOstream(), 0x100, 8);
EXPECT_EQ("0x0000000000000100", TakeValue());
- s.Address(0x100, 10);
+ StreamUtils::Address(s.AsRawOstream(), 0x100, 10);
EXPECT_EQ("0x00000000000000000100", TakeValue());
- s.Address(0x1234, 10);
+ StreamUtils::Address(s.AsRawOstream(), 0x1234, 10);
EXPECT_EQ("0x00000000000000001234", TakeValue());
}
TEST_F(StreamTest, AddressRange) {
- s.AddressRange(0x100, 0x101, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x101, 2);
EXPECT_EQ("[0x0100-0x0101)", TakeValue());
}
TEST_F(StreamTest, AddressRangeEmptyRange) {
- s.AddressRange(0x100, 0x100, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x100, 2);
EXPECT_EQ("[0x0100-0x0100)", TakeValue());
- s.AddressRange(0x0, 0x0, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x0, 0x0, 2);
EXPECT_EQ("[0x0000-0x0000)", TakeValue());
}
TEST_F(StreamTest, AddressRangeInvalidRange) {
- s.AddressRange(0x100, 0x0FF, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x0FF, 2);
EXPECT_EQ("[0x0100-0x00ff)", TakeValue());
- s.AddressRange(0x100, 0x0, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x0, 2);
EXPECT_EQ("[0x0100-0x0000)", TakeValue());
}
TEST_F(StreamTest, AddressRangeSize) {
- s.AddressRange(0x100, 0x101, 0);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x101, 0);
EXPECT_EQ("[0x100-0x101)", TakeValue());
- s.AddressRange(0x100, 0x101, 2);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x101, 2);
EXPECT_EQ("[0x0100-0x0101)", TakeValue());
- s.AddressRange(0x100, 0x101, 4);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x101, 4);
EXPECT_EQ("[0x00000100-0x00000101)", TakeValue());
- s.AddressRange(0x100, 0x101, 4);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x100, 0x101, 4);
EXPECT_EQ("[0x00000100-0x00000101)", TakeValue());
- s.AddressRange(0x1, 0x101, 4);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x1, 0x101, 4);
EXPECT_EQ("[0x00000001-0x00000101)", TakeValue());
- s.AddressRange(0x101, 0x1, 4);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x101, 0x1, 4);
EXPECT_EQ("[0x00000101-0x00000001)", TakeValue());
- s.AddressRange(0x1, 0x101, 1);
+ StreamUtils::AddressRange(s.AsRawOstream(), 0x1, 0x101, 1);
EXPECT_EQ("[0x01-0x101)", TakeValue());
}
Index: lldb/source/Utility/VMRange.cpp
===================================================================
--- lldb/source/Utility/VMRange.cpp
+++ lldb/source/Utility/VMRange.cpp
@@ -36,8 +36,8 @@
}
void VMRange::Dump(Stream *s, lldb::addr_t offset, uint32_t addr_width) const {
- s->AddressRange(offset + GetBaseAddress(), offset + GetEndAddress(),
- addr_width);
+ StreamUtils::AddressRange(s->AsRawOstream(), offset + GetBaseAddress(),
+ offset + GetEndAddress(), addr_width);
}
bool lldb_private::operator==(const VMRange &lhs, const VMRange &rhs) {
Index: lldb/source/Utility/Stream.cpp
===================================================================
--- lldb/source/Utility/Stream.cpp
+++ lldb/source/Utility/Stream.cpp
@@ -76,28 +76,29 @@
// Put an address "addr" out to the stream with optional prefix and suffix
// strings.
-void Stream::Address(uint64_t addr, uint32_t addr_size, const char *prefix,
- const char *suffix) {
+void StreamUtils::Address(llvm::raw_ostream &s, uint64_t addr,
+ uint32_t addr_size, const char *prefix,
+ const char *suffix) {
if (prefix == nullptr)
prefix = "";
if (suffix == nullptr)
suffix = "";
- // int addr_width = m_addr_size << 1;
- // Printf ("%s0x%0*" PRIx64 "%s", prefix, addr_width, addr, suffix);
- Printf("%s0x%0*" PRIx64 "%s", prefix, addr_size * 2, addr, suffix);
+ std::string size = std::to_string(addr_size * 2);
+ std::string f = "{0}0x{2,0+" + size + ":x-}{3}";
+ s << llvm::formatv(f.c_str(), prefix, addr_size * 2, addr, suffix);
}
// Put an address range out to the stream with optional prefix and suffix
// strings.
-void Stream::AddressRange(uint64_t lo_addr, uint64_t hi_addr,
- uint32_t addr_size, const char *prefix,
- const char *suffix) {
+void StreamUtils::AddressRange(llvm::raw_ostream &s, uint64_t lo_addr,
+ uint64_t hi_addr, uint32_t addr_size,
+ const char *prefix, const char *suffix) {
if (prefix && prefix[0])
- PutCString(prefix);
- Address(lo_addr, addr_size, "[");
- Address(hi_addr, addr_size, "-", ")");
+ s << prefix;
+ Address(s, lo_addr, addr_size, "[");
+ Address(s, hi_addr, addr_size, "-", ")");
if (suffix && suffix[0])
- PutCString(suffix);
+ s << suffix;
}
size_t Stream::PutChar(char ch) { return Write(&ch, 1); }
Index: lldb/source/Target/ThreadPlanStepThrough.cpp
===================================================================
--- lldb/source/Target/ThreadPlanStepThrough.cpp
+++ lldb/source/Target/ThreadPlanStepThrough.cpp
@@ -119,11 +119,11 @@
s->Printf("Step through");
else {
s->PutCString("Stepping through trampoline code from: ");
- s->Address(m_start_address, sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(), m_start_address, sizeof(addr_t));
if (m_backstop_bkpt_id != LLDB_INVALID_BREAK_ID) {
s->Printf(" with backstop breakpoint ID: %d at address: ",
m_backstop_bkpt_id);
- s->Address(m_backstop_addr, sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(), m_backstop_addr, sizeof(addr_t));
} else
s->PutCString(" unable to set a backstop breakpoint.");
}
Index: lldb/source/Target/ThreadPlanStepOverRange.cpp
===================================================================
--- lldb/source/Target/ThreadPlanStepOverRange.cpp
+++ lldb/source/Target/ThreadPlanStepOverRange.cpp
@@ -128,8 +128,8 @@
if (log) {
StreamString s;
- s.Address(
- m_thread.GetRegisterContext()->GetPC(),
+ StreamUtils::Address(
+ s.AsRawOstream(), m_thread.GetRegisterContext()->GetPC(),
m_thread.CalculateTarget()->GetArchitecture().GetAddressByteSize());
LLDB_LOGF(log, "ThreadPlanStepOverRange reached %s.", s.GetData());
}
Index: lldb/source/Target/ThreadPlanStepInstruction.cpp
===================================================================
--- lldb/source/Target/ThreadPlanStepInstruction.cpp
+++ lldb/source/Target/ThreadPlanStepInstruction.cpp
@@ -65,7 +65,7 @@
PrintFailureIfAny();
} else {
s->Printf("Stepping one instruction past ");
- s->Address(m_instruction_addr, sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(), m_instruction_addr, sizeof(addr_t));
if (!m_start_has_symbol)
s->Printf(" which has no symbol");
@@ -182,14 +182,16 @@
s.PutCString("Stepped in to: ");
addr_t stop_addr =
m_thread.GetStackFrameAtIndex(0)->GetRegisterContext()->GetPC();
- s.Address(stop_addr, m_thread.CalculateTarget()
+ StreamUtils::Address(s.AsRawOstream(), stop_addr,
+ m_thread.CalculateTarget()
->GetArchitecture()
.GetAddressByteSize());
s.PutCString(" stepping out to: ");
addr_t return_addr = return_frame->GetRegisterContext()->GetPC();
- s.Address(return_addr, m_thread.CalculateTarget()
- ->GetArchitecture()
- .GetAddressByteSize());
+ StreamUtils::Address(s.AsRawOstream(), return_addr,
+ m_thread.CalculateTarget()
+ ->GetArchitecture()
+ .GetAddressByteSize());
LLDB_LOGF(log, "%s.", s.GetData());
}
Index: lldb/source/Target/ThreadPlanStepInRange.cpp
===================================================================
--- lldb/source/Target/ThreadPlanStepInRange.cpp
+++ lldb/source/Target/ThreadPlanStepInRange.cpp
@@ -145,8 +145,8 @@
if (log) {
StreamString s;
- s.Address(
- m_thread.GetRegisterContext()->GetPC(),
+ StreamUtils::Address(
+ s.AsRawOstream(), m_thread.GetRegisterContext()->GetPC(),
m_thread.CalculateTarget()->GetArchitecture().GetAddressByteSize());
LLDB_LOGF(log, "ThreadPlanStepInRange reached %s.", s.GetData());
}
Index: lldb/source/Target/ThreadPlanRunToAddress.cpp
===================================================================
--- lldb/source/Target/ThreadPlanRunToAddress.cpp
+++ lldb/source/Target/ThreadPlanRunToAddress.cpp
@@ -97,7 +97,7 @@
s->Printf("run to addresses: ");
for (size_t i = 0; i < num_addresses; i++) {
- s->Address(m_addresses[i], sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(), m_addresses[i], sizeof(addr_t));
s->Printf(" ");
}
} else {
@@ -116,7 +116,7 @@
s->Indent();
}
- s->Address(m_addresses[i], sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(), m_addresses[i], sizeof(addr_t));
s->Printf(" using breakpoint: %d - ", m_break_ids[i]);
Breakpoint *breakpoint =
m_thread.CalculateTarget()->GetBreakpointByID(m_break_ids[i]).get();
@@ -143,7 +143,8 @@
all_bps_good = false;
if (error) {
error->Printf("Could not set breakpoint for address: ");
- error->Address(m_addresses[i], sizeof(addr_t));
+ StreamUtils::Address(error->AsRawOstream(), m_addresses[i],
+ sizeof(addr_t));
error->Printf("\n");
}
}
Index: lldb/source/Symbol/Block.cpp
===================================================================
--- lldb/source/Symbol/Block.cpp
+++ lldb/source/Symbol/Block.cpp
@@ -44,8 +44,9 @@
s->Printf(", range%s = ", num_ranges > 1 ? "s" : "");
for (size_t i = 0; i < num_ranges; ++i) {
const Range &range = m_ranges.GetEntryRef(i);
- s->AddressRange(base_addr + range.GetRangeBase(),
- base_addr + range.GetRangeEnd(), 4);
+ StreamUtils::AddressRange(s->AsRawOstream(),
+ base_addr + range.GetRangeBase(),
+ base_addr + range.GetRangeEnd(), 4);
}
}
@@ -87,8 +88,9 @@
*s << '!';
else
*s << ' ';
- s->AddressRange(base_addr + range.GetRangeBase(),
- base_addr + range.GetRangeEnd(), 4);
+ StreamUtils::AddressRange(s->AsRawOstream(),
+ base_addr + range.GetRangeBase(),
+ base_addr + range.GetRangeEnd(), 4);
}
}
s->EOL();
@@ -160,8 +162,9 @@
size_t num_ranges = m_ranges.GetSize();
for (size_t i = 0; i < num_ranges; ++i) {
const Range &range = m_ranges.GetEntryRef(i);
- s->AddressRange(base_addr + range.GetRangeBase(),
- base_addr + range.GetRangeEnd(), 4);
+ StreamUtils::AddressRange(s->AsRawOstream(),
+ base_addr + range.GetRangeBase(),
+ base_addr + range.GetRangeEnd(), 4);
}
}
}
Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
@@ -333,7 +333,7 @@
switch (m_form) {
case DW_FORM_addr:
- s.Address(uvalue, sizeof(uint64_t));
+ StreamUtils::Address(s.AsRawOstream(), uvalue, sizeof(uint64_t));
break;
case DW_FORM_flag:
case DW_FORM_data1:
@@ -409,10 +409,11 @@
assert(m_unit); // Unit must be valid for DW_FORM_ref_addr objects or we
// will get this wrong
if (m_unit->GetVersion() <= 2)
- s.Address(uvalue, sizeof(uint64_t) * 2);
+ StreamUtils::Address(s.AsRawOstream(), uvalue, sizeof(uint64_t) * 2);
else
- s.Address(uvalue, 4 * 2); // 4 for DWARF32, 8 for DWARF64, but we don't
- // support DWARF64 yet
+ StreamUtils::Address(s.AsRawOstream(), uvalue,
+ 4 * 2); // 4 for DWARF32, 8 for DWARF64, but we don't
+ // support DWARF64 yet
break;
}
case DW_FORM_ref1:
Index: lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugRanges.cpp
@@ -95,13 +95,15 @@
} else if (begin == LLDB_INVALID_ADDRESS) {
// A base address selection entry
base_addr = end;
- s.Address(base_addr, sizeof(dw_addr_t), " Base address = ");
+ StreamUtils::Address(s.AsRawOstream(), base_addr, sizeof(dw_addr_t),
+ " Base address = ");
} else {
// Convert from offset to an address
dw_addr_t begin_addr = begin + base_addr;
dw_addr_t end_addr = end + base_addr;
- s.AddressRange(begin_addr, end_addr, sizeof(dw_addr_t), nullptr);
+ StreamUtils::AddressRange(s.AsRawOstream(), begin_addr, end_addr,
+ sizeof(dw_addr_t), nullptr);
}
}
}
Index: lldb/source/Expression/DWARFExpression.cpp
===================================================================
--- lldb/source/Expression/DWARFExpression.cpp
+++ lldb/source/Expression/DWARFExpression.cpp
@@ -2929,8 +2929,9 @@
s.PutCString("\n ");
s.Indent();
if (cu)
- s.AddressRange(start_addr + base_addr, end_addr + base_addr,
- cu->GetAddressByteSize(), nullptr, ": ");
+ StreamUtils::AddressRange(s.AsRawOstream(), start_addr + base_addr,
+ end_addr + base_addr, cu->GetAddressByteSize(),
+ nullptr, ": ");
uint32_t loc_length = debug_loc_data.GetU16(&offset);
DataExtractor locationData(debug_loc_data, offset, loc_length);
Index: lldb/source/Core/DumpDataExtractor.cpp
===================================================================
--- lldb/source/Core/DumpDataExtractor.cpp
+++ lldb/source/Core/DumpDataExtractor.cpp
@@ -467,9 +467,10 @@
} break;
case eFormatPointer:
- s->Address(DE.GetMaxU64Bitfield(&offset, item_byte_size, item_bit_size,
- item_bit_offset),
- sizeof(addr_t));
+ StreamUtils::Address(s->AsRawOstream(),
+ DE.GetMaxU64Bitfield(&offset, item_byte_size,
+ item_bit_size, item_bit_offset),
+ sizeof(addr_t));
break;
case eFormatComplexInteger: {
Index: lldb/source/Core/AddressRange.cpp
===================================================================
--- lldb/source/Core/AddressRange.cpp
+++ lldb/source/Core/AddressRange.cpp
@@ -161,7 +161,8 @@
s->PutChar('[');
m_base_addr.Dump(s, target, style, fallback_style);
s->PutChar('-');
- s->Address(m_base_addr.GetOffset() + GetByteSize(), addr_size);
+ StreamUtils::Address(s->AsRawOstream(),
+ m_base_addr.GetOffset() + GetByteSize(), addr_size);
s->PutChar(')');
return true;
break;
@@ -185,7 +186,8 @@
s->Printf("%s", module_sp->GetFileSpec().GetFilename().AsCString(
"<Unknown>"));
}
- s->AddressRange(vmaddr, vmaddr + GetByteSize(), addr_size);
+ StreamUtils::AddressRange(s->AsRawOstream(), vmaddr, vmaddr + GetByteSize(),
+ addr_size);
return true;
} else if (fallback_style != Address::DumpStyleInvalid) {
return Dump(s, target, fallback_style, Address::DumpStyleInvalid);
Index: lldb/source/Core/Address.cpp
===================================================================
--- lldb/source/Core/Address.cpp
+++ lldb/source/Core/Address.cpp
@@ -418,13 +418,13 @@
section_sp->DumpName(s);
s->Printf(" + %" PRIu64, m_offset);
} else {
- s->Address(m_offset, addr_size);
+ StreamUtils::Address(s->AsRawOstream(), m_offset, addr_size);
}
break;
case DumpStyleSectionPointerOffset:
s->Printf("(Section *)%p + ", static_cast<void *>(section_sp.get()));
- s->Address(m_offset, addr_size);
+ StreamUtils::Address(s->AsRawOstream(), m_offset, addr_size);
break;
case DumpStyleModuleWithFileAddress:
@@ -444,7 +444,7 @@
return Dump(s, exe_scope, fallback_style, DumpStyleInvalid, addr_size);
return false;
}
- s->Address(file_addr, addr_size);
+ StreamUtils::Address(s->AsRawOstream(), file_addr, addr_size);
if (style == DumpStyleModuleWithFileAddress && section_sp)
s->PutChar(']');
} break;
@@ -472,7 +472,7 @@
return Dump(s, exe_scope, fallback_style, DumpStyleInvalid, addr_size);
return false;
}
- s->Address(load_addr, addr_size);
+ StreamUtils::Address(s->AsRawOstream(), load_addr, addr_size);
} break;
case DumpStyleResolvedDescription:
@@ -754,7 +754,8 @@
if (dereferenced_addr.Dump(&strm, exe_scope,
DumpStyleResolvedDescription,
DumpStyleInvalid, addr_size)) {
- s->Address(dereferenced_load_addr, addr_size, " -> ", " ");
+ StreamUtils::Address(s->AsRawOstream(), dereferenced_load_addr,
+ addr_size, " -> ", " ");
s->Write(strm.GetString().data(), strm.GetSize());
return true;
}
Index: lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py
===================================================================
--- lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py
+++ lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/vector-basic/TestBasicVector.py
@@ -20,34 +20,34 @@
self.runCmd("settings set target.import-std-module true")
- self.expect("expr (size_t)a.size()", substrs=['(size_t) $0 = 3'])
- self.expect("expr (int)a.front()", substrs=['(int) $1 = 3'])
- self.expect("expr (int)a[1]", substrs=['(int) $2 = 1'])
- self.expect("expr (int)a.back()", substrs=['(int) $3 = 2'])
+ self.expect("expr a.size()", substrs=[' $0 = 3'])
+ self.expect("expr a.front()", substrs=[' $1 = 3'])
+ self.expect("expr a[1]", substrs=[' $2 = 1'])
+ self.expect("expr a.back()", substrs=[' $3 = 2'])
self.expect("expr std::sort(a.begin(), a.end())")
- self.expect("expr (int)a.front()", substrs=['(int) $4 = 1'])
- self.expect("expr (int)a[1]", substrs=['(int) $5 = 2'])
- self.expect("expr (int)a.back()", substrs=['(int) $6 = 3'])
+ self.expect("expr a.front()", substrs=[' $4 = 1'])
+ self.expect("expr a[1]", substrs=[' $5 = 2'])
+ self.expect("expr a.back()", substrs=[' $6 = 3'])
self.expect("expr std::reverse(a.begin(), a.end())")
- self.expect("expr (int)a.front()", substrs=['(int) $7 = 3'])
- self.expect("expr (int)a[1]", substrs=['(int) $8 = 2'])
- self.expect("expr (int)a.back()", substrs=['(int) $9 = 1'])
+ self.expect("expr a.front()", substrs=[' $7 = 3'])
+ self.expect("expr a[1]", substrs=[' $8 = 2'])
+ self.expect("expr a.back()", substrs=[' $9 = 1'])
- self.expect("expr (int)(*a.begin())", substrs=['(int) $10 = 3'])
- self.expect("expr (int)(*a.rbegin())", substrs=['(int) $11 = 1'])
+ self.expect("expr (*a.begin())", substrs=[' $10 = 3'])
+ self.expect("expr (*a.rbegin())", substrs=[' $11 = 1'])
self.expect("expr a.pop_back()")
- self.expect("expr (int)a.back()", substrs=['(int) $12 = 2'])
- self.expect("expr (size_t)a.size()", substrs=['(size_t) $13 = 2'])
+ self.expect("expr a.back()", substrs=[' $12 = 2'])
+ self.expect("expr a.size()", substrs=[' $13 = 2'])
- self.expect("expr (int)a.at(0)", substrs=['(int) $14 = 3'])
+ self.expect("expr a.at(0)", substrs=[' $14 = 3'])
self.expect("expr a.push_back(4)")
- self.expect("expr (int)a.back()", substrs=['(int) $15 = 4'])
- self.expect("expr (size_t)a.size()", substrs=['(size_t) $16 = 3'])
+ self.expect("expr a.back()", substrs=[' $15 = 4'])
+ self.expect("expr a.size()", substrs=[' $16 = 3'])
self.expect("expr a.emplace_back(5)")
- self.expect("expr (int)a.back()", substrs=['(int) $17 = 5'])
- self.expect("expr (size_t)a.size()", substrs=['(size_t) $18 = 4'])
+ self.expect("expr a.back()", substrs=[' $17 = 5'])
+ self.expect("expr a.size()", substrs=[' $18 = 4'])
Index: lldb/include/lldb/Utility/Stream.h
===================================================================
--- lldb/include/lldb/Utility/Stream.h
+++ lldb/include/lldb/Utility/Stream.h
@@ -222,47 +222,6 @@
Stream &operator<<(int32_t sval) = delete;
Stream &operator<<(int64_t sval) = delete;
- /// Output an address value to this stream.
- ///
- /// Put an address \a addr out to the stream with optional \a prefix and \a
- /// suffix strings.
- ///
- /// \param[in] addr
- /// An address value.
- ///
- /// \param[in] addr_size
- /// Size in bytes of the address, used for formatting.
- ///
- /// \param[in] prefix
- /// A prefix C string. If nullptr, no prefix will be output.
- ///
- /// \param[in] suffix
- /// A suffix C string. If nullptr, no suffix will be output.
- void Address(uint64_t addr, uint32_t addr_size, const char *prefix = nullptr,
- const char *suffix = nullptr);
-
- /// Output an address range to this stream.
- ///
- /// Put an address range \a lo_addr - \a hi_addr out to the stream with
- /// optional \a prefix and \a suffix strings.
- ///
- /// \param[in] lo_addr
- /// The start address of the address range.
- ///
- /// \param[in] hi_addr
- /// The end address of the address range.
- ///
- /// \param[in] addr_size
- /// Size in bytes of the address, used for formatting.
- ///
- /// \param[in] prefix
- /// A prefix C string. If nullptr, no prefix will be output.
- ///
- /// \param[in] suffix
- /// A suffix C string. If nullptr, no suffix will be output.
- void AddressRange(uint64_t lo_addr, uint64_t hi_addr, uint32_t addr_size,
- const char *prefix = nullptr, const char *suffix = nullptr);
-
/// Output a C string to the stream.
///
/// Print a C string \a cstr to the stream.
@@ -452,6 +411,56 @@
RawOstreamForward m_forwarder;
};
+namespace StreamUtils {
+/// Output an address value to this stream.
+///
+/// Put an address \a addr out to the stream with optional \a prefix and \a
+/// suffix strings.
+///
+/// \param[in] s
+/// The output stream.
+///
+/// \param[in] addr
+/// An address value.
+///
+/// \param[in] addr_size
+/// Size in bytes of the address, used for formatting.
+///
+/// \param[in] prefix
+/// A prefix C string. If nullptr, no prefix will be output.
+///
+/// \param[in] suffix
+/// A suffix C string. If nullptr, no suffix will be output.
+void Address(llvm::raw_ostream &s, uint64_t addr, uint32_t addr_size,
+ const char *prefix = nullptr, const char *suffix = nullptr);
+
+/// Output an address range to this stream.
+///
+/// Put an address range \a lo_addr - \a hi_addr out to the stream with
+/// optional \a prefix and \a suffix strings.
+///
+/// \param[in] s
+/// The output stream.
+///
+/// \param[in] lo_addr
+/// The start address of the address range.
+///
+/// \param[in] hi_addr
+/// The end address of the address range.
+///
+/// \param[in] addr_size
+/// Size in bytes of the address, used for formatting.
+///
+/// \param[in] prefix
+/// A prefix C string. If nullptr, no prefix will be output.
+///
+/// \param[in] suffix
+/// A suffix C string. If nullptr, no suffix will be output.
+void AddressRange(llvm::raw_ostream &s, uint64_t lo_addr, uint64_t hi_addr,
+ uint32_t addr_size, const char *prefix = nullptr,
+ const char *suffix = nullptr);
+} // namespace StreamUtils
+
} // namespace lldb_private
#endif // liblldb_Stream_h_
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits