[Lldb-commits] [lldb] r272902 - xfail TestWithModuleDebugging.py on macOS
Author: tfiala Date: Thu Jun 16 10:22:49 2016 New Revision: 272902 URL: http://llvm.org/viewvc/llvm-project?rev=272902&view=rev Log: xfail TestWithModuleDebugging.py on macOS Tracked by: https://llvm.org/bugs/show_bug.cgi?id=28156 Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/gmodules/TestWithModuleDebugging.py Modified: lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/gmodules/TestWithModuleDebugging.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/gmodules/TestWithModuleDebugging.py?rev=272902&r1=272901&r2=272902&view=diff == --- lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/gmodules/TestWithModuleDebugging.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/lang/cpp/gmodules/TestWithModuleDebugging.py Thu Jun 16 10:22:49 2016 @@ -8,6 +8,7 @@ class TestWithGmodulesDebugInfo(TestBase mydir = TestBase.compute_mydir(__file__) @add_test_categories(["gmodules"]) +@expectedFailureAll(oslist=["macosx"], bugnumber="llvm.org/pr28156") def test_specialized_typedef_from_pch(self): self.build() cwd = os.getcwd() ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
Re: [Lldb-commits] [PATCH] D21280: Allow installing watchpoints at less than 8-byte alligned addresses for AArch64 targets
omjavaid marked 3 inline comments as done. Comment at: packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py:104 @@ +103,3 @@ +self.expect("watchpoint list -v", +substrs = ['hit_count = 2']) + labath wrote: > I guess the intention here is to test both read and write watchpoints. If so, > could you state that somewhere (in a comment at least, if it's possible to > somehow verify the watchpoint type in code, even better). We cant possibly figure out the watchpoint type read or write based on output string emitted when watchpoint is hit. I have added a comment here which tells the user about why hit count should be updated here. http://reviews.llvm.org/D21280 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] [lldb] r272916 - Allow installing watchpoints at less than 8-byte alligned addresses for AArch64 targets
Author: omjavaid Date: Thu Jun 16 11:41:22 2016 New Revision: 272916 URL: http://llvm.org/viewvc/llvm-project?rev=272916&view=rev Log: Allow installing watchpoints at less than 8-byte alligned addresses for AArch64 targets This patch allows LLDB for AArch64 to watch all bytes, words or double words individually on non 8-byte alligned addresses. This patch also adds tests to verify this functionality. Differential revision: http://reviews.llvm.org/D21280 Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/ lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/main.c Modified: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile?rev=272916&view=auto == --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile (added) +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile Thu Jun 16 11:41:22 2016 @@ -0,0 +1,5 @@ +LEVEL = ../../../make + +C_SOURCES := main.c + +include $(LEVEL)/Makefile.rules Added: lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py?rev=272916&view=auto == --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py (added) +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py Thu Jun 16 11:41:22 2016 @@ -0,0 +1,117 @@ +""" +Test watchpoint size cases (1-byte, 2-byte, 4-byte). +Make sure we can watch all bytes, words or double words individually +when they are packed in a 8-byte region. + +""" + +from __future__ import print_function + +import os, time +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + +class WatchpointSizeTestCase(TestBase): +NO_DEBUG_INFO_TESTCASE = True + +mydir = TestBase.compute_mydir(__file__) + +def setUp(self): +# Call super's setUp(). +TestBase.setUp(self) + +# Source filename. +self.source = 'main.c' + +# Output filename. +self.exe_name = 'a.out' +self.d = {'C_SOURCES': self.source, 'EXE': self.exe_name} + +@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported +@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") +@expectedFailureAll(archs=['s390x']) # Read-write watchpoints not supported on SystemZ +def test_byte_size_watchpoints_with_byte_selection(self): +"""Test to selectively watch different bytes in a 8-byte array.""" +self.run_watchpoint_size_test('byteArray', 8, '1') + +@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported +@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") +@expectedFailureAll(archs=['s390x']) # Read-write watchpoints not supported on SystemZ +def test_two_byte_watchpoints_with_word_selection(self): +"""Test to selectively watch different words in an 8-byte word array.""" +self.run_watchpoint_size_test('wordArray', 4, '2') + +@expectedFailureAndroid(archs=['arm', 'aarch64']) # Watchpoints not supported +@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24446: WINDOWS XFAIL TRIAGE - Watchpoints not supported on Windows") +@expectedFailureAll(archs=['s390x']) # Read-write watchpoints not supported on SystemZ +def test_four_byte_watchpoints_with_dword_selection(self): +"""Test to selectively watch two double words in an 8-byte dword array.""" +self.run_watchpoint_size_test('dwordArray', 2, '4') + +def run_watchpoint_size_test(self, arrayName, array_size, watchsize): +self.build(dictionary=self.d) +self.setTearDownCleanup(dictionary=self.d) + +exe = os.path.join(os.getcwd(), self.exe_name) +s
Re: [Lldb-commits] [PATCH] D21280: Allow installing watchpoints at less than 8-byte alligned addresses for AArch64 targets
This revision was automatically updated to reflect the committed changes. Closed by commit rL272916: Allow installing watchpoints at less than 8-byte alligned addresses for… (authored by omjavaid). Changed prior to commit: http://reviews.llvm.org/D21280?vs=60942&id=60987#toc Repository: rL LLVM http://reviews.llvm.org/D21280 Files: lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/Makefile lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/TestWatchpointSizes.py lldb/trunk/packages/Python/lldbsuite/test/functionalities/watchpoint/watchpoint_size/main.c lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Index: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp === --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp @@ -2059,7 +2059,8 @@ { WatchpointSP wp_sp; ArchSpec::Core core = GetTarget().GetArchitecture().GetCore(); -if (core >= ArchSpec::kCore_mips_first && core <= ArchSpec::kCore_mips_last) +if ((core >= ArchSpec::kCore_mips_first && core <= ArchSpec::kCore_mips_last) || +(core >= ArchSpec::eCore_arm_arm64 && core <= ArchSpec::eCore_arm_aarch64)) wp_sp = GetTarget().GetWatchpointList().FindByAddress(wp_hit_addr); if (!wp_sp) wp_sp = GetTarget().GetWatchpointList().FindByAddress(wp_addr); Index: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h === --- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h +++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.h @@ -74,6 +74,9 @@ GetWatchpointHitIndex(uint32_t &wp_index, lldb::addr_t trap_addr) override; lldb::addr_t +GetWatchpointHitAddress (uint32_t wp_index) override; + +lldb::addr_t GetWatchpointAddress (uint32_t wp_index) override; uint32_t @@ -161,6 +164,8 @@ struct DREG { lldb::addr_t address; // Breakpoint/watchpoint address value. +lldb::addr_t hit_addr; // Address at which last watchpoint trigger exception occurred. +lldb::addr_t real_addr; // Address value that should cause target to stop. uint32_t control; // Breakpoint/watchpoint control value. uint32_t refcount; // Serves as enable/disable and refernce counter. }; Index: lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp === --- lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp +++ lldb/trunk/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp @@ -566,6 +566,7 @@ return LLDB_INVALID_INDEX32; uint32_t control_value = 0, wp_index = 0; +lldb::addr_t real_addr = addr; // Check if we are setting watchpoint other than read/write/access // Also update watchpoint flag to match AArch64 write-read bit configuration. @@ -588,9 +589,23 @@ return LLDB_INVALID_INDEX32; // Check 8-byte alignment for hardware watchpoint target address. -// TODO: Add support for watching un-aligned addresses +// Below is a hack to recalculate address and size in order to +// make sure we can watch non 8-byte alligned addresses as well. if (addr & 0x07) -return LLDB_INVALID_INDEX32; +{ +uint8_t watch_mask = (addr & 0x07) + size; + +if (watch_mask > 0x08) +return LLDB_INVALID_INDEX32; +else if (watch_mask <= 0x02) +size = 2; +else if (watch_mask <= 0x04) +size = 4; +else +size = 8; + +addr = addr & (~0x07); +} // Setup control value control_value = watch_flags << 3; @@ -620,6 +635,7 @@ if ((m_hwp_regs[wp_index].control & 1) == 0) { // Update watchpoint in local cache +m_hwp_regs[wp_index].real_addr = real_addr; m_hwp_regs[wp_index].address = addr; m_hwp_regs[wp_index].control = control_value; m_hwp_regs[wp_index].refcount = 1; @@ -801,6 +817,7 @@ if (m_hwp_regs[wp_index].refcount >= 1 && WatchpointIsEnabled(wp_index) && trap_addr >= watch_addr && trap_addr < watch_addr + watch_size) { +m_hwp_regs[wp_index].hit_addr = trap
Re: [Lldb-commits] [PATCH] D21164: Improve watchpoint error reporting specially for arm/aarch64 targets
omjavaid added a comment. @clayborg Any comments about this change? Thanks! http://reviews.llvm.org/D21164 ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
[Lldb-commits] LLVM buildmaster will be restarted tonight
Hello everyone, LLVM buildmaster will be restarted after 8 PM Pacific time today. Thanks Galina ___ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits