From f2e3760ad84b4346fd309f792a7c474b09bc9da4 Mon Sep 17 00:00:00 2001 From: Vince Harron Date: Mon, 4 May 2015 02:56:32 +0000 Subject: [PATCH] Enabled libc++ formatter tests on Linux Refactored TestInitializerList to not be an inline test. Refactored Makefiles to use USE_LIBCPP instead of adding FLAGS directly Fixed copy/paste error in TestDataFormatterUnordered class name Differenttial Revision: http://reviews.llvm.org/D9426 llvm-svn: 236401 --- .../libcxx/initializerlist/TestInitializerList.py | 59 ++++++++++++++++++++-- .../libcxx/initializerlist/main.cpp | 4 +- .../data-formatter-stl/libcxx/iterator/Makefile | 5 +- .../iterator/TestDataFormatterLibccIterator.py | 2 +- .../data-formatter-stl/libcxx/list/Makefile | 5 +- .../libcxx/list/TestDataFormatterLibcxxList.py | 2 +- .../data-formatter-stl/libcxx/map/Makefile | 2 + .../libcxx/map/TestDataFormatterLibccMap.py | 2 +- .../data-formatter-stl/libcxx/multimap/Makefile | 2 + .../multimap/TestDataFormatterLibccMultiMap.py | 2 +- .../data-formatter-stl/libcxx/multiset/Makefile | 5 +- .../multiset/TestDataFormatterLibcxxMultiSet.py | 2 +- .../data-formatter-stl/libcxx/set/Makefile | 5 +- .../libcxx/set/TestDataFormatterLibcxxSet.py | 2 +- .../data-formatter-stl/libcxx/string/Makefile | 5 +- .../libcxx/string/TestDataFormatterLibcxxString.py | 2 +- .../data-formatter-stl/libcxx/unordered/Makefile | 5 +- .../libcxx/unordered/TestDataFormatterUnordered.py | 4 +- .../data-formatter-stl/libcxx/vbool/Makefile | 5 +- .../libcxx/vbool/TestDataFormatterLibcxxVBool.py | 2 +- .../data-formatter-stl/libcxx/vector/Makefile | 5 +- .../libcxx/vector/TestDataFormatterLibcxxVector.py | 2 +- lldb/test/lldbtest.py | 2 +- lldb/test/make/Makefile.rules | 4 ++ 24 files changed, 93 insertions(+), 42 deletions(-) diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py index a099be0..8d31bdf 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/TestInitializerList.py @@ -1,6 +1,57 @@ -import lldbinline +""" +Test lldb data formatter subsystem. +""" + +import os, time +import unittest2 +import lldb from lldbtest import * +import lldbutil + +class InitializerListTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipUnlessDarwin + @dsym_test + def test_with_dsym(self): + """Test data formatter commands.""" + self.buildDsym() + self.data_formatter_commands() + + @skipIfWindows # libc++ not ported to Windows yet + @skipIfGcc + @expectedFailureLinux # fails on clang 3.5 and tot + @dwarf_test + def test_with_dwarf(self): + """Test data formatter commands.""" + self.buildDwarf() + self.data_formatter_commands() + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + + def data_formatter_commands(self): + """Test that that file and class static variables display correctly.""" + self.runCmd("file a.out", CURRENT_EXECUTABLE_SET) + + bkpt = self.target().FindBreakpointByID(lldbutil.run_break_set_by_source_regexp (self, "Set break point at this line.")) + + self.runCmd("run", RUN_SUCCEEDED) + + # The stop reason of the thread should be breakpoint. + self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, + substrs = ['stopped', + 'stop reason = breakpoint']) + + self.expect("frame variable ili", substrs = ['[1] = 2','[4] = 5']) + self.expect("frame variable ils", substrs = ['[4] = "surprise it is a long string!! yay!!"']) + + self.expect('image list', substrs = self.getLibcPlusPlusLibs()) -# added decorator to mark as XFAIL for Linux -# non-core functionality, need to reenable and fix later (DES 2014.11.07) -lldbinline.MakeInlineTest(__file__, globals(),expectedFailureLinux) +if __name__ == '__main__': + import atexit + lldb.SBDebugger.Initialize() + atexit.register(lambda: lldb.SBDebugger.Terminate()) + unittest2.main() diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/main.cpp b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/main.cpp index f89bb2c..9109a20 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/main.cpp +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/initializerlist/main.cpp @@ -16,6 +16,6 @@ int main () std::initializer_list ili{1,2,3,4,5}; std::initializer_list ils{"1","2","3","4","surprise it is a long string!! yay!!"}; - return 0; //% self.expect("frame variable ili", substrs = ['[1] = 2','[4] = 5']) - //% self.expect("frame variable ils", substrs = ['[4] = "surprise it is a long string!! yay!!"']) + return 0; // Set break point at this line. } + diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py index b396f38..0fbcc3a 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/iterator/TestDataFormatterLibccIterator.py @@ -19,7 +19,7 @@ class LibcxxIteratorDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py index ca1fd94..ee743b9 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py @@ -19,7 +19,7 @@ class LibcxxListDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile index d473b14..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/Makefile @@ -2,4 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py index 2e45441..8881ea0 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/map/TestDataFormatterLibccMap.py @@ -19,7 +19,7 @@ class LibcxxMapDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile index d473b14..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/Makefile @@ -2,4 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py index ec2eb06..2c3b72a 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multimap/TestDataFormatterLibccMultiMap.py @@ -19,8 +19,8 @@ class LibcxxMultiMapDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now @skipIfWindows # libc++ not ported to Windows yet + @skipIfGcc @dwarf_test def test_with_dwarf_and_run_command(self): """Test data formatter commands.""" diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py index 24e73bb..f51f050 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/multiset/TestDataFormatterLibcxxMultiSet.py @@ -19,7 +19,7 @@ class LibcxxMultiSetDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py index 37792a5..d855399 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/set/TestDataFormatterLibcxxSet.py @@ -19,7 +19,7 @@ class LibcxxSetDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py index 7acee81..fd3ecfe 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/string/TestDataFormatterLibcxxString.py @@ -20,7 +20,7 @@ class LibcxxStringDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile index e681e09..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -std=c++11 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py index 7f2a7dd..dfcd0f0 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/unordered/TestDataFormatterUnordered.py @@ -8,7 +8,7 @@ import lldb from lldbtest import * import lldbutil -class LibcxxMultiMapDataFormatterTestCase(TestBase): +class LibcxxUnorderedDataFormatterTestCase(TestBase): mydir = TestBase.compute_mydir(__file__) @@ -19,8 +19,8 @@ class LibcxxMultiMapDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now @dwarf_test + @skipIfGcc def test_with_dwarf_and_run_command(self): """Test data formatter commands.""" self.buildDwarf() diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile index f2f2b3f2..637fa7e 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/Makefile @@ -1,8 +1,7 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp - +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules +CXXFLAGS += -O0 -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py index 8dba1ff..e5abcd6 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vbool/TestDataFormatterLibcxxVBool.py @@ -19,7 +19,7 @@ class LibcxxVBoolDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # http://llvm.org/pr21800 @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile index f2f2b3f2..1f609a4 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/Makefile @@ -2,7 +2,6 @@ LEVEL = ../../../../../make CXX_SOURCES := main.cpp +USE_LIBCPP := 1 include $(LEVEL)/Makefile.rules - -CXXFLAGS += -stdlib=libc++ -O0 -LDFLAGS += -stdlib=libc++ \ No newline at end of file +CXXFLAGS += -O0 diff --git a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py index 08546a5..b7c9618 100644 --- a/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py +++ b/lldb/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py @@ -19,7 +19,7 @@ class LibcxxVectorDataFormatterTestCase(TestBase): self.buildDsym() self.data_formatter_commands() - @skipIfLinux # No standard locations for libc++ on Linux, so skip for now + @skipIfGcc @skipIfWindows # libc++ not ported to Windows yet @dwarf_test def test_with_dwarf_and_run_command(self): diff --git a/lldb/test/lldbtest.py b/lldb/test/lldbtest.py index 1f5a294..a67e64c 100644 --- a/lldb/test/lldbtest.py +++ b/lldb/test/lldbtest.py @@ -1737,7 +1737,7 @@ class Base(unittest2.TestCase): return self.lib_dir def getLibcPlusPlusLibs(self): - if sys.platform.startswith('freebsd'): + if sys.platform.startswith('freebsd') or sys.platform.startswith('linux'): return ['libc++.so.1'] else: return ['libc++.1.dylib','libc++abi.dylib'] diff --git a/lldb/test/make/Makefile.rules b/lldb/test/make/Makefile.rules index 2d146a5..3d17d24 100644 --- a/lldb/test/make/Makefile.rules +++ b/lldb/test/make/Makefile.rules @@ -237,6 +237,10 @@ ifeq (1,$(USE_LIBCPP)) ifneq (,$(findstring clang,$(CC))) CXXFLAGS += -stdlib=libc++ LDFLAGS += -stdlib=libc++ + ifeq "$(OS)" "Linux" + # This is the default install location on Ubuntu 14.04 + CXXFLAGS += -I/usr/include/c++/v1 + endif endif endif -- 2.7.4