[Lldb-commits] [lldb] r113730 - in /lldb/trunk/test/class_static: ./ Makefile main.cpp
Greg Clayton
gclayton at apple.com
Sun Sep 12 17:50:27 PDT 2010
Author: gclayton
Date: Sun Sep 12 19:50:27 2010
New Revision: 113730
URL: http://llvm.org/viewvc/llvm-project?rev=113730&view=rev
Log:
I made this example after noting that I was unable to display an unsized
static class array. It turns out that gcc 4.2 will emit DWARF that correctly
describes the PointType, but it will incorrectly emit debug info for the
"g_points" array where the following things are wrong:
- the DW_TAG_array_type won't have a subrange info
- the DW_TAG_variable for "g_points" won't have a valid byte size, so even
though we know the size of PointType, we can't infer the actual size
of the array by dividing the size of the variable by the number of
elements.
We want to make sure clang and llvm-gcc handle this correctly.
Added:
lldb/trunk/test/class_static/
lldb/trunk/test/class_static/Makefile
lldb/trunk/test/class_static/main.cpp
Added: lldb/trunk/test/class_static/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/class_static/Makefile?rev=113730&view=auto
==============================================================================
--- lldb/trunk/test/class_static/Makefile (added)
+++ lldb/trunk/test/class_static/Makefile Sun Sep 12 19:50:27 2010
@@ -0,0 +1,5 @@
+LEVEL = ../make
+
+CXX_SOURCES := main.cpp
+
+include $(LEVEL)/Makefile.rules
Added: lldb/trunk/test/class_static/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/test/class_static/main.cpp?rev=113730&view=auto
==============================================================================
--- lldb/trunk/test/class_static/main.cpp (added)
+++ lldb/trunk/test/class_static/main.cpp Sun Sep 12 19:50:27 2010
@@ -0,0 +1,44 @@
+//===-- main.cpp ------------------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// I made this example after noting that I was unable to display an unsized
+// static class array. It turns out that gcc 4.2 will emit DWARF that correctly
+// describes the PointType, but it will incorrectly emit debug info for the
+// "g_points" array where the following things are wrong:
+// - the DW_TAG_array_type won't have a subrange info
+// - the DW_TAG_variable for "g_points" won't have a valid byte size, so even
+// though we know the size of PointType, we can't infer the actual size
+// of the array by dividing the size of the variable by the number of
+// elements.
+
+#include <stdio.h>
+
+typedef struct PointType
+{
+ int x, y;
+} PointType;
+
+class A
+{
+public:
+ static PointType g_points[];
+};
+
+PointType A::g_points[] =
+{
+ { 1, 2 },
+ { 11, 22 }
+};
+
+int
+main ()
+{
+ printf ("A::g_points[2].x = %i\n", A::g_points[2].x);
+ return 0;
+}
More information about the lldb-commits
mailing list