Skip to content

Fix debugserver reporting of deployment target #1432

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 55 additions & 15 deletions lldb/test/API/macosx/simulator/TestSimulatorPlatform.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,51 @@ def check_load_commands(self, expected_load_command):
found += 1
self.assertEquals(found, 1, "wrong load command")


def run_with(self, arch, os, env, expected_load_command):
self.build(dictionary={'TRIPLE': arch+'-apple-'+os+'-'+env})
def check_debugserver(self, log, expected_platform, expected_version):
"""scan the debugserver packet log"""
logfile = open(log, "r")
dylib_info = None
response = False
for line in logfile:
if response:
while line[0] != '$':
line = line[1:]
line = line[1:]
# Unescape '}'.
dylib_info = json.loads(line.replace('}]','}')[:-4])
response = False
if 'send packet: $jGetLoadedDynamicLibrariesInfos:{' in line:
response = True

self.assertTrue(dylib_info)
aout_info = None
for image in dylib_info['images']:
if image['pathname'].endswith('a.out'):
aout_info = image
self.assertTrue(aout_info)
self.assertEquals(aout_info['min_version_os_name'], expected_platform)
if expected_version:
self.assertEquals(aout_info['min_version_os_sdk'], expected_version)


def run_with(self, arch, os, vers, env, expected_load_command):
self.build(dictionary={'TRIPLE': arch+'-apple-'+os+vers+'-'+env})
self.check_load_commands(expected_load_command)
log = self.getBuildArtifact('packets.log')
self.expect("log enable gdb-remote packets -f "+log)
lldbutil.run_to_source_breakpoint(self, "break here",
lldb.SBFileSpec("hello.c"))
self.check_load_commands(expected_load_command)
self.expect('image list -b -t',
patterns=['a\.out '+arch+'-apple-'+os+'.*-'+env])
patterns=['a\.out '+arch+'-apple-'+os+vers+'.*-'+env])
self.check_debugserver(log, os+env, vers)

@skipUnlessDarwin
@skipIfDarwinEmbedded
@apple_simulator_test('iphone')
def test_ios(self):
"""Test running an iOS simulator binary"""
self.run_with(arch=self.getArchitecture(),
os='ios', env='simulator',
os='ios', vers='', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
Expand All @@ -47,7 +76,7 @@ def test_ios(self):
def test_tvos(self):
"""Test running an tvOS simulator binary"""
self.run_with(arch=self.getArchitecture(),
os='tvos', env='simulator',
os='tvos', vers='', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
Expand All @@ -58,7 +87,7 @@ def test_tvos(self):
def test_watchos_i386(self):
"""Test running a 32-bit watchOS simulator binary"""
self.run_with(arch='i386',
os='watchos', env='simulator',
os='watchos', vers='', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
Expand All @@ -69,7 +98,7 @@ def test_watchos_i386(self):
def test_watchos_armv7k(self):
"""Test running a 32-bit watchOS simulator binary"""
self.run_with(arch='armv7k',
os='watchos', env='simulator',
os='watchos', vers='', env='simulator',
expected_load_command='LC_BUILD_VERSION')


Expand All @@ -90,17 +119,28 @@ def test_lc_version_min_iphoneos(self):
"""Test running a back-deploying iOS simulator binary
with a legacy iOS load command"""
self.run_with(arch=self.getArchitecture(),
os='ios11.0', env='simulator',
os='ios', vers='11.0', env='simulator',
expected_load_command='LC_VERSION_MIN_IPHONEOS')

@skipUnlessDarwin
@skipIfDarwinEmbedded
@apple_simulator_test('iphone')
@skipIf(archs=['arm64','arm64e'])
def test_ios_backdeploy_x86(self):
"""Test running a back-deploying iOS simulator binary
with a legacy iOS load command"""
self.run_with(arch=self.getArchitecture(),
os='ios', vers='13.0', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
@skipIfDarwinEmbedded
@apple_simulator_test('iphone')
@skipIf(archs=['i386','x86_64'])
def test_ios_backdeploy_apple_silicon(self):
"""Test running a back-deploying iOS simulator binary"""
self.run_with(arch=self.getArchitecture(),
os='ios11.0', env='simulator',
os='ios', vers='11.0', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
Expand All @@ -111,7 +151,7 @@ def test_lc_version_min_tvos(self):
"""Test running a back-deploying tvOS simulator binary
with a legacy tvOS load command"""
self.run_with(arch=self.getArchitecture(),
os='tvos11.0', env='simulator',
os='tvos', vers='11.0', env='simulator',
expected_load_command='LC_VERSION_MIN_TVOS')

@skipUnlessDarwin
Expand All @@ -121,7 +161,7 @@ def test_lc_version_min_tvos(self):
def test_tvos_backdeploy_apple_silicon(self):
"""Test running a back-deploying tvOS simulator binary"""
self.run_with(arch=self.getArchitecture(),
os='tvos11.0', env='simulator',
os='tvos', vers='11.0', env='simulator',
expected_load_command='LC_BUILD_VERSION')

@skipUnlessDarwin
Expand All @@ -133,7 +173,7 @@ def test_lc_version_min_watchos(self):
"""Test running a back-deploying watchOS simulator binary
with a legacy watchOS load command"""
self.run_with(arch='i386',
os='watchos4.0', env='simulator',
os='watchos', vers='4.0', env='simulator',
expected_load_command='LC_VERSION_MIN_WATCHOS')

@skipUnlessDarwin
Expand All @@ -144,5 +184,5 @@ def test_lc_version_min_watchos(self):
def test_watchos_backdeploy_apple_silicon(self):
"""Test running a back-deploying watchOS simulator binary"""
self.run_with(arch='armv7k',
os='watchos4.0', env='simulator',
os='watchos', vers='4.0', env='simulator',
expected_load_command='LC_BUILD_VERSION')
12 changes: 6 additions & 6 deletions lldb/tools/debugserver/source/MacOSX/MachProcess.mm
Original file line number Diff line number Diff line change
Expand Up @@ -610,9 +610,9 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
&vers_cmd) != sizeof(struct version_min_command))
return;
info.platform = platform;
info.major_version = vers_cmd.sdk >> 16;
info.minor_version = (vers_cmd.sdk >> 8) & 0xffu;
info.patch_version = vers_cmd.sdk & 0xffu;
info.major_version = vers_cmd.version >> 16;
info.minor_version = (vers_cmd.version >> 8) & 0xffu;
info.patch_version = vers_cmd.version & 0xffu;
info.maybe_simulator = true;
};
switch (cmd) {
Expand All @@ -635,9 +635,9 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
&build_vers) != sizeof(struct build_version_command))
break;
info.platform = build_vers.platform;
info.major_version = build_vers.sdk >> 16;
info.minor_version = (build_vers.sdk >> 8) & 0xffu;
info.patch_version = build_vers.sdk & 0xffu;
info.major_version = build_vers.minos >> 16;
info.minor_version = (build_vers.minos >> 8) & 0xffu;
info.patch_version = build_vers.minos & 0xffu;
break;
}
#endif
Expand Down