summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2012-01-31 23:19:33 +0000
committerGreg Clayton <gclayton@apple.com>2012-01-31 23:19:33 +0000
commitfbf1b6417314553d44ae16ab2d9eb1200d17316d (patch)
tree080d2d0d1bde031f8d77a29652ed331e463abb1e
parent8c159b87a0c99b02b1d143560a973c13c779643e (diff)
downloadbcm5719-llvm-fbf1b6417314553d44ae16ab2d9eb1200d17316d.tar.gz
bcm5719-llvm-fbf1b6417314553d44ae16ab2d9eb1200d17316d.zip
Added fuzz testing for when we call API calls with an invalid object.
We previously weren't catching that SBValue::Cast(...) would crash if we had an invalid (empty) SBValue object. Cleaned up the SBType API a bit. llvm-svn: 149447
-rw-r--r--lldb/include/lldb/API/SBType.h8
-rw-r--r--lldb/scripts/Python/interface/SBType.i2
-rw-r--r--lldb/source/API/SBType.cpp4
-rw-r--r--lldb/test/python_api/default-constructor/sb_module.py4
-rw-r--r--lldb/test/python_api/default-constructor/sb_target.py3
-rw-r--r--lldb/test/python_api/default-constructor/sb_value.py27
6 files changed, 42 insertions, 6 deletions
diff --git a/lldb/include/lldb/API/SBType.h b/lldb/include/lldb/API/SBType.h
index ff41d37aa4d..b668fa39192 100644
--- a/lldb/include/lldb/API/SBType.h
+++ b/lldb/include/lldb/API/SBType.h
@@ -138,8 +138,6 @@ public:
GetDescription (lldb::SBStream &description,
lldb::DescriptionLevel description_level);
-protected:
-
#ifndef SWIG
lldb::SBType &
operator = (const lldb::SBType &rhs);
@@ -149,7 +147,11 @@ protected:
bool
operator != (lldb::SBType &rhs);
+#endif
+protected:
+
+#ifndef SWIG
lldb_private::TypeImpl &
ref ();
@@ -157,7 +159,7 @@ protected:
ref () const;
void
- reset(const lldb::TypeImplSP &type_impl_sp);
+ SetSP (const lldb::TypeImplSP &type_impl_sp);
#endif
diff --git a/lldb/scripts/Python/interface/SBType.i b/lldb/scripts/Python/interface/SBType.i
index f072da87183..64a957486c5 100644
--- a/lldb/scripts/Python/interface/SBType.i
+++ b/lldb/scripts/Python/interface/SBType.i
@@ -131,6 +131,8 @@ find_type.py:
class SBType
{
public:
+ SBType ();
+
SBType (const lldb::SBType &rhs);
~SBType ();
diff --git a/lldb/source/API/SBType.cpp b/lldb/source/API/SBType.cpp
index 36fcfa7792f..63c6c0a46cf 100644
--- a/lldb/source/API/SBType.cpp
+++ b/lldb/source/API/SBType.cpp
@@ -84,7 +84,7 @@ SBType::operator != (SBType &rhs)
}
void
-SBType::reset(const lldb::TypeImplSP &type_impl_sp)
+SBType::SetSP (const lldb::TypeImplSP &type_impl_sp)
{
m_opaque_sp = type_impl_sp;
}
@@ -556,7 +556,7 @@ SBTypeMember::GetType ()
SBType sb_type;
if (m_opaque_ap.get())
{
- sb_type.reset (m_opaque_ap->GetTypeImpl());
+ sb_type.SetSP (m_opaque_ap->GetTypeImpl());
}
return sb_type;
diff --git a/lldb/test/python_api/default-constructor/sb_module.py b/lldb/test/python_api/default-constructor/sb_module.py
index 990337a9f9a..d026be15506 100644
--- a/lldb/test/python_api/default-constructor/sb_module.py
+++ b/lldb/test/python_api/default-constructor/sb_module.py
@@ -23,4 +23,6 @@ def fuzz_obj(obj):
print symbol
for symbol in obj:
print symbol
-
+ obj.GetAddressByteSize()
+ obj.GetByteOrder()
+ obj.GetTriple()
diff --git a/lldb/test/python_api/default-constructor/sb_target.py b/lldb/test/python_api/default-constructor/sb_target.py
index 7e4f191e493..19f453768b2 100644
--- a/lldb/test/python_api/default-constructor/sb_target.py
+++ b/lldb/test/python_api/default-constructor/sb_target.py
@@ -49,6 +49,9 @@ def fuzz_obj(obj):
obj.EnableAllWatchpoints()
obj.DisableAllWatchpoints()
obj.DeleteAllWatchpoints()
+ obj.GetAddressByteSize()
+ obj.GetByteOrder()
+ obj.GetTriple()
obj.WatchAddress(123, 8, True, True)
obj.GetBroadcaster()
obj.GetDescription(lldb.SBStream(), lldb.eDescriptionLevelBrief)
diff --git a/lldb/test/python_api/default-constructor/sb_value.py b/lldb/test/python_api/default-constructor/sb_value.py
index b3a26def772..a82a3e38f78 100644
--- a/lldb/test/python_api/default-constructor/sb_value.py
+++ b/lldb/test/python_api/default-constructor/sb_value.py
@@ -7,6 +7,7 @@ import lldb
def fuzz_obj(obj):
obj.GetError()
+ obj.GetID()
obj.GetName()
obj.GetTypeName()
obj.GetByteSize()
@@ -37,3 +38,29 @@ def fuzz_obj(obj):
obj.WatchPointee(True, False, True)
for child_val in obj:
print child_val
+ error = lldb.SBError()
+ obj.GetValueAsSigned (error, 0)
+ obj.GetValueAsUnsigned (error, 0)
+ obj.GetValueAsSigned(0)
+ obj.GetValueAsUnsigned(0)
+ obj.GetDynamicValue (lldb.eNoDynamicValues)
+ obj.GetStaticValue ()
+ obj.IsDynamic()
+ invalid_type = lldb.SBType()
+ obj.CreateChildAtOffset ("a", 12, invalid_type)
+ obj.Cast (invalid_type)
+ obj.CreateValueFromExpression ("pt->x", "pt->x")
+ obj.CreateValueFromAddress ("x", 0x123, invalid_type)
+ invalid_data = lldb.SBData()
+ obj.CreateValueFromData ("x", invalid_data, invalid_type)
+ obj.GetValueForExpressionPath("[0]")
+ obj.AddressOf()
+ obj.GetLoadAddress()
+ obj.GetAddress()
+ obj.GetPointeeData (0, 1)
+ obj.GetData ()
+ obj.GetTarget()
+ obj.GetProcess()
+ obj.GetThread()
+ obj.GetFrame()
+ obj.GetType()
OpenPOWER on IntegriCloud