gdb/
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / virtbase.cc
index ae0a2c719ab5a45fb9301aedb9bb1dae3d213cbe..e23dbda813a56acbbf487b952a9f4528a1a41e0c 100644 (file)
@@ -46,12 +46,87 @@ struct D:virtual C{};
 
 class E:B,D{};
 
+// These classes are for another regression test, from
+// https://bugzilla.redhat.com/show_bug.cgi?id=560741
+
+class RHA
+{
+public:
+  RHA() : mA(0xaaaaaaaa) {}
+  virtual void a() = 0;  
+  int mA;
+};
+
+class RHB
+{
+public:
+  RHB() : mB(0xbbbbbbbb) {}
+  virtual void b() = 0;
+  int mB;
+};
+
+class RHC : public RHA,
+         public RHB
+{
+public:
+  RHC() : RHA(), RHB() {}
+  virtual void a() {}
+  virtual void b() {}
+};
+
+class RTTI_base
+{
+public:
+  virtual ~RTTI_base() {}
+};
+
+class RTTI_data
+{
+public:
+  RTTI_base base;
+  int data;
+  RTTI_data() : data(1) {}
+};
+
+/* These classes are for testing pointer adjustment when printing a
+   pointer into a virtual base, with print object on.  */
+struct VirtualBase {
+  int x;
+
+  virtual ~VirtualBase() {}
+};
+
+struct VirtualMiddleA : public virtual VirtualBase {
+  /* Make sure the vbase offset of Virtual::VirtualBaseB is larger
+     than what fits in one byte.  */
+  int y[300];
+
+  virtual ~VirtualMiddleA() {}
+};
+
+struct VirtualMiddleB : public virtual VirtualBase {
+  int y;
+
+  virtual ~VirtualMiddleB() {}
+};
+
+struct Virtual : public virtual VirtualMiddleA, public virtual VirtualMiddleB {
+  int z;
+
+  virtual ~Virtual() {}
+};
+
+Virtual virtual_o;
+VirtualMiddleB *virtual_middle_b = &virtual_o;
+
 int main() {
   ph::Derived tst;
   tst.get_y();
   tst.get_z();
 
   E *e = new E;
+  RHB *b = new RHC();
+  RTTI_data rtti_data;
 
   return 0;                    // breakpoint 3
 }
This page took 0.073404 seconds and 4 git commands to generate.