
This fixes most references to the paths: llvm.org/svn/ llvm.org/git/ llvm.org/viewvc/ github.com/llvm-mirror/ github.com/llvm-project/ reviews.llvm.org/diffusion/ to instead point to https://github.com/llvm/llvm-project. This is *not* a trivial substitution, because additionally, all the checkout instructions had to be migrated to instruct users on how to use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of checking out various projects into various subdirectories. I've attempted to not change any scripts here, only documentation. The scripts will have to be addressed separately. Additionally, I've deleted one document which appeared to be outdated and unneeded: lldb/docs/building-with-debug-llvm.txt Differential Revision: https://reviews.llvm.org/D57330 llvm-svn: 352514
76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
"""
|
|
Test that objective-c expression parser continues to work for optimized build.
|
|
|
|
Fixed a bug in the expression parser where the 'this'
|
|
or 'self' variable was not properly read if the compiler
|
|
optimized it into a register.
|
|
"""
|
|
|
|
from __future__ import print_function
|
|
|
|
|
|
import os
|
|
import time
|
|
import lldb
|
|
import re
|
|
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
# rdar://problem/9087739
|
|
# test failure: objc_optimized does not work for "-C clang -A i386"
|
|
|
|
|
|
@skipUnlessDarwin
|
|
class ObjcOptimizedTestCase(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
myclass = "MyClass"
|
|
mymethod = "description"
|
|
method_spec = "-[%s %s]" % (myclass, mymethod)
|
|
|
|
def test_break(self):
|
|
"""Test 'expr member' continues to work for optimized build."""
|
|
self.build()
|
|
exe = self.getBuildArtifact("a.out")
|
|
self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
|
|
|
|
lldbutil.run_break_set_by_symbol(
|
|
self,
|
|
self.method_spec,
|
|
num_expected_locations=1,
|
|
sym_exact=True)
|
|
|
|
self.runCmd("run", RUN_SUCCEEDED)
|
|
self.expect(
|
|
"thread backtrace",
|
|
STOPPED_DUE_TO_BREAKPOINT,
|
|
substrs=["stop reason = breakpoint"],
|
|
patterns=[
|
|
"frame.*0:.*%s %s" %
|
|
(self.myclass,
|
|
self.mymethod)])
|
|
|
|
self.expect('expression member',
|
|
startstr="(int) $0 = 5")
|
|
|
|
# <rdar://problem/12693963>
|
|
interp = self.dbg.GetCommandInterpreter()
|
|
result = lldb.SBCommandReturnObject()
|
|
interp.HandleCommand('frame variable self', result)
|
|
output = result.GetOutput()
|
|
|
|
desired_pointer = "0x0"
|
|
|
|
mo = re.search("0x[0-9a-f]+", output)
|
|
|
|
if mo:
|
|
desired_pointer = mo.group(0)
|
|
|
|
self.expect('expression (self)',
|
|
substrs=[("(%s *) $1 = " % self.myclass), desired_pointer])
|
|
|
|
self.expect('expression self->non_member', error=True,
|
|
substrs=["does not have a member named 'non_member'"])
|