summaryrefslogtreecommitdiffstats
path: root/lldb/test/python_api/module_section
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2015-10-28 17:43:26 +0000
committerZachary Turner <zturner@google.com>2015-10-28 17:43:26 +0000
commitc432c8f856e0bd84de980a9d9bb2d31b06fa95b1 (patch)
tree4efa528e074a6e2df782345e4cd97f5d85d038c4 /lldb/test/python_api/module_section
parenta8a3bd210086b50242903ed95048fe5e53897878 (diff)
downloadbcm5719-llvm-c432c8f856e0bd84de980a9d9bb2d31b06fa95b1.tar.gz
bcm5719-llvm-c432c8f856e0bd84de980a9d9bb2d31b06fa95b1.zip
Move lldb/test to lldb/packages/Python/lldbsuite/test.
This is the conclusion of an effort to get LLDB's Python code structured into a bona-fide Python package. This has a number of benefits, but most notably the ability to more easily share Python code between different but related pieces of LLDB's Python infrastructure (for example, `scripts` can now share code with `test`). llvm-svn: 251532
Diffstat (limited to 'lldb/test/python_api/module_section')
-rw-r--r--lldb/test/python_api/module_section/Makefile8
-rw-r--r--lldb/test/python_api/module_section/TestModuleAndSection.py127
-rw-r--r--lldb/test/python_api/module_section/b.cpp3
-rw-r--r--lldb/test/python_api/module_section/c.cpp3
-rw-r--r--lldb/test/python_api/module_section/main.cpp136
5 files changed, 0 insertions, 277 deletions
diff --git a/lldb/test/python_api/module_section/Makefile b/lldb/test/python_api/module_section/Makefile
deleted file mode 100644
index ee74ebae1f4..00000000000
--- a/lldb/test/python_api/module_section/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-LEVEL = ../../make
-
-CFLAGS_EXTRAS += -D__STDC_LIMIT_MACROS
-ENABLE_THREADS := YES
-CXX_SOURCES := main.cpp b.cpp c.cpp
-MAKE_DSYM :=NO
-
-include $(LEVEL)/Makefile.rules
diff --git a/lldb/test/python_api/module_section/TestModuleAndSection.py b/lldb/test/python_api/module_section/TestModuleAndSection.py
deleted file mode 100644
index 5af54537b26..00000000000
--- a/lldb/test/python_api/module_section/TestModuleAndSection.py
+++ /dev/null
@@ -1,127 +0,0 @@
-"""
-Test some SBModule and SBSection APIs.
-"""
-
-from __future__ import print_function
-
-import use_lldb_suite
-
-import os, time
-import re
-import lldb
-from lldbtest import *
-from lldbutil import symbol_type_to_str
-
-class ModuleAndSectionAPIsTestCase(TestBase):
-
- mydir = TestBase.compute_mydir(__file__)
-
- @add_test_categories(['pyapi'])
- def test_module_and_section(self):
- """Test module and section APIs."""
- self.build()
- exe = os.path.join(os.getcwd(), "a.out")
-
- target = self.dbg.CreateTarget(exe)
- self.assertTrue(target, VALID_TARGET)
- self.assertTrue(target.GetNumModules() > 0)
-
- # Hide stdout if not running with '-t' option.
- if not self.TraceOn():
- self.HideStdout()
-
- print("Number of modules for the target: %d" % target.GetNumModules())
- for module in target.module_iter():
- print(module)
-
- # Get the executable module at index 0.
- exe_module = target.GetModuleAtIndex(0)
-
- print("Exe module: %s" % str(exe_module))
- print("Number of sections: %d" % exe_module.GetNumSections())
- INDENT = ' ' * 4
- INDENT2 = INDENT * 2
- for sec in exe_module.section_iter():
- print(sec)
- print(INDENT + "Number of subsections: %d" % sec.GetNumSubSections())
- if sec.GetNumSubSections() == 0:
- for sym in exe_module.symbol_in_section_iter(sec):
- print(INDENT + str(sym))
- print(INDENT + "symbol type: %s" % symbol_type_to_str(sym.GetType()))
- else:
- for subsec in sec:
- print(INDENT + str(subsec))
- # Now print the symbols belonging to the subsection....
- for sym in exe_module.symbol_in_section_iter(subsec):
- print(INDENT2 + str(sym))
- print(INDENT2 + "symbol type: %s" % symbol_type_to_str(sym.GetType()))
-
- @add_test_categories(['pyapi'])
- def test_module_and_section_boundary_condition(self):
- """Test module and section APIs by passing None when it expects a Python string."""
- self.build()
- exe = os.path.join(os.getcwd(), "a.out")
-
- target = self.dbg.CreateTarget(exe)
- self.assertTrue(target, VALID_TARGET)
- self.assertTrue(target.GetNumModules() > 0)
-
- # Hide stdout if not running with '-t' option.
- if not self.TraceOn():
- self.HideStdout()
-
- print("Number of modules for the target: %d" % target.GetNumModules())
- for module in target.module_iter():
- print(module)
-
- # Get the executable module at index 0.
- exe_module = target.GetModuleAtIndex(0)
-
- print("Exe module: %s" % str(exe_module))
- print("Number of sections: %d" % exe_module.GetNumSections())
-
- # Boundary condition testings. Should not crash lldb!
- exe_module.FindFirstType(None)
- exe_module.FindTypes(None)
- exe_module.FindGlobalVariables(target, None, 1)
- exe_module.FindFunctions(None, 0)
- exe_module.FindSection(None)
-
- # Get the section at index 1.
- if exe_module.GetNumSections() > 1:
- sec1 = exe_module.GetSectionAtIndex(1)
- print(sec1)
- else:
- sec1 = None
-
- if sec1:
- sec1.FindSubSection(None)
-
- @add_test_categories(['pyapi'])
- def test_module_compile_unit_iter(self):
- """Test module's compile unit iterator APIs."""
- self.build()
- exe = os.path.join(os.getcwd(), "a.out")
-
- target = self.dbg.CreateTarget(exe)
- self.assertTrue(target, VALID_TARGET)
- self.assertTrue(target.GetNumModules() > 0)
-
- # Hide stdout if not running with '-t' option.
- if not self.TraceOn():
- self.HideStdout()
-
- print("Number of modules for the target: %d" % target.GetNumModules())
- for module in target.module_iter():
- print(module)
-
- # Get the executable module at index 0.
- exe_module = target.GetModuleAtIndex(0)
-
- print("Exe module: %s" % str(exe_module))
- print("Number of compile units: %d" % exe_module.GetNumCompileUnits())
- INDENT = ' ' * 4
- INDENT2 = INDENT * 2
- for cu in exe_module.compile_unit_iter():
- print(cu)
-
diff --git a/lldb/test/python_api/module_section/b.cpp b/lldb/test/python_api/module_section/b.cpp
deleted file mode 100644
index 4e3e54138e5..00000000000
--- a/lldb/test/python_api/module_section/b.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-int b_function(int input) {
- return input * 2;
-}
diff --git a/lldb/test/python_api/module_section/c.cpp b/lldb/test/python_api/module_section/c.cpp
deleted file mode 100644
index 3c87bfe30c6..00000000000
--- a/lldb/test/python_api/module_section/c.cpp
+++ /dev/null
@@ -1,3 +0,0 @@
-int c_function(int input) {
- return input * 3;
-}
diff --git a/lldb/test/python_api/module_section/main.cpp b/lldb/test/python_api/module_section/main.cpp
deleted file mode 100644
index 6b87c3d649e..00000000000
--- a/lldb/test/python_api/module_section/main.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//===-- main.cpp ------------------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-// C includes
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-// C++ includes
-#include <chrono>
-#include <mutex>
-#include <random>
-#include <thread>
-
-std::thread g_thread_1;
-std::thread g_thread_2;
-std::thread g_thread_3;
-std::mutex g_mask_mutex;
-
-typedef enum {
- eGet,
- eAssign,
- eClearBits
-} MaskAction;
-
-uint32_t mask_access (MaskAction action, uint32_t mask = 0);
-
-uint32_t
-mask_access (MaskAction action, uint32_t mask)
-{
- static uint32_t g_mask = 0;
-
- std::lock_guard<std::mutex> lock(g_mask_mutex);
- switch (action)
- {
- case eGet:
- break;
-
- case eAssign:
- g_mask |= mask;
- break;
-
- case eClearBits:
- g_mask &= ~mask;
- break;
- }
- return g_mask;
-}
-
-void *
-thread_func (void *arg)
-{
- uint32_t thread_index = *((uint32_t *)arg);
- uint32_t thread_mask = (1u << (thread_index));
- printf ("%s (thread index = %u) startng...\n", __FUNCTION__, thread_index);
-
- std::default_random_engine generator;
- std::uniform_int_distribution<int> distribution(0, 3000000);
-
- while (mask_access(eGet) & thread_mask)
- {
- // random micro second sleep from zero to 3 seconds
- int usec = distribution(generator);
-
- printf ("%s (thread = %u) doing a usleep (%d)...\n", __FUNCTION__, thread_index, usec);
- std::chrono::microseconds duration(usec);
- std::this_thread::sleep_for(duration);
- printf ("%s (thread = %u) after usleep ...\n", __FUNCTION__, thread_index); // Set break point at this line.
- }
- printf ("%s (thread index = %u) exiting...\n", __FUNCTION__, thread_index);
- return NULL;
-}
-
-
-int main (int argc, char const *argv[])
-{
- int err;
- void *thread_result = NULL;
- uint32_t thread_index_1 = 1;
- uint32_t thread_index_2 = 2;
- uint32_t thread_index_3 = 3;
- uint32_t thread_mask_1 = (1u << thread_index_1);
- uint32_t thread_mask_2 = (1u << thread_index_2);
- uint32_t thread_mask_3 = (1u << thread_index_3);
-
- // Make a mask that will keep all threads alive
- mask_access (eAssign, thread_mask_1 | thread_mask_2 | thread_mask_3); // And that line.
-
- // Create 3 threads
- g_thread_1 = std::thread(thread_func, (void*)&thread_index_1);
- g_thread_2 = std::thread(thread_func, (void*)&thread_index_2);
- g_thread_3 = std::thread(thread_func, (void*)&thread_index_3);
-
- char line[64];
- while (mask_access(eGet) != 0)
- {
- printf ("Enter thread index to kill or ENTER for all:\n");
- fflush (stdout);
- // Kill threads by index, or ENTER for all threads
-
- if (fgets (line, sizeof(line), stdin))
- {
- if (line[0] == '\n' || line[0] == '\r' || line[0] == '\0')
- {
- printf ("Exiting all threads...\n");
- break;
- }
- int32_t index = strtoul (line, NULL, 0);
- switch (index)
- {
- case 1: mask_access (eClearBits, thread_mask_1); break;
- case 2: mask_access (eClearBits, thread_mask_2); break;
- case 3: mask_access (eClearBits, thread_mask_3); break;
- }
- continue;
- }
-
- break;
- }
-
- // Clear all thread bits to they all exit
- mask_access (eClearBits, UINT32_MAX);
-
- // Join all of our threads
- g_thread_1.join();
- g_thread_2.join();
- g_thread_3.join();
-
- return 0;
-}
OpenPOWER on IntegriCloud