Skip to content

Commit 2e659d4

Browse files
authored
Merge pull request #1432 from adrian-prantl/65001691
Fix debugserver reporting of deployment target
2 parents 2b47c66 + 31c306b commit 2e659d4

File tree

2 files changed

+61
-21
lines changed

2 files changed

+61
-21
lines changed

lldb/test/API/macosx/simulator/TestSimulatorPlatform.py

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,51 @@ def check_load_commands(self, expected_load_command):
2323
found += 1
2424
self.assertEquals(found, 1, "wrong load command")
2525

26-
27-
def run_with(self, arch, os, env, expected_load_command):
28-
self.build(dictionary={'TRIPLE': arch+'-apple-'+os+'-'+env})
26+
def check_debugserver(self, log, expected_platform, expected_version):
27+
"""scan the debugserver packet log"""
28+
logfile = open(log, "r")
29+
dylib_info = None
30+
response = False
31+
for line in logfile:
32+
if response:
33+
while line[0] != '$':
34+
line = line[1:]
35+
line = line[1:]
36+
# Unescape '}'.
37+
dylib_info = json.loads(line.replace('}]','}')[:-4])
38+
response = False
39+
if 'send packet: $jGetLoadedDynamicLibrariesInfos:{' in line:
40+
response = True
41+
42+
self.assertTrue(dylib_info)
43+
aout_info = None
44+
for image in dylib_info['images']:
45+
if image['pathname'].endswith('a.out'):
46+
aout_info = image
47+
self.assertTrue(aout_info)
48+
self.assertEquals(aout_info['min_version_os_name'], expected_platform)
49+
if expected_version:
50+
self.assertEquals(aout_info['min_version_os_sdk'], expected_version)
51+
52+
53+
def run_with(self, arch, os, vers, env, expected_load_command):
54+
self.build(dictionary={'TRIPLE': arch+'-apple-'+os+vers+'-'+env})
55+
self.check_load_commands(expected_load_command)
56+
log = self.getBuildArtifact('packets.log')
57+
self.expect("log enable gdb-remote packets -f "+log)
2958
lldbutil.run_to_source_breakpoint(self, "break here",
3059
lldb.SBFileSpec("hello.c"))
31-
self.check_load_commands(expected_load_command)
3260
self.expect('image list -b -t',
33-
patterns=['a\.out '+arch+'-apple-'+os+'.*-'+env])
61+
patterns=['a\.out '+arch+'-apple-'+os+vers+'.*-'+env])
62+
self.check_debugserver(log, os+env, vers)
3463

3564
@skipUnlessDarwin
3665
@skipIfDarwinEmbedded
3766
@apple_simulator_test('iphone')
3867
def test_ios(self):
3968
"""Test running an iOS simulator binary"""
4069
self.run_with(arch=self.getArchitecture(),
41-
os='ios', env='simulator',
70+
os='ios', vers='', env='simulator',
4271
expected_load_command='LC_BUILD_VERSION')
4372

4473
@skipUnlessDarwin
@@ -47,7 +76,7 @@ def test_ios(self):
4776
def test_tvos(self):
4877
"""Test running an tvOS simulator binary"""
4978
self.run_with(arch=self.getArchitecture(),
50-
os='tvos', env='simulator',
79+
os='tvos', vers='', env='simulator',
5180
expected_load_command='LC_BUILD_VERSION')
5281

5382
@skipUnlessDarwin
@@ -58,7 +87,7 @@ def test_tvos(self):
5887
def test_watchos_i386(self):
5988
"""Test running a 32-bit watchOS simulator binary"""
6089
self.run_with(arch='i386',
61-
os='watchos', env='simulator',
90+
os='watchos', vers='', env='simulator',
6291
expected_load_command='LC_BUILD_VERSION')
6392

6493
@skipUnlessDarwin
@@ -69,7 +98,7 @@ def test_watchos_i386(self):
6998
def test_watchos_armv7k(self):
7099
"""Test running a 32-bit watchOS simulator binary"""
71100
self.run_with(arch='armv7k',
72-
os='watchos', env='simulator',
101+
os='watchos', vers='', env='simulator',
73102
expected_load_command='LC_BUILD_VERSION')
74103

75104

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

125+
@skipUnlessDarwin
126+
@skipIfDarwinEmbedded
127+
@apple_simulator_test('iphone')
128+
@skipIf(archs=['arm64','arm64e'])
129+
def test_ios_backdeploy_x86(self):
130+
"""Test running a back-deploying iOS simulator binary
131+
with a legacy iOS load command"""
132+
self.run_with(arch=self.getArchitecture(),
133+
os='ios', vers='13.0', env='simulator',
134+
expected_load_command='LC_BUILD_VERSION')
135+
96136
@skipUnlessDarwin
97137
@skipIfDarwinEmbedded
98138
@apple_simulator_test('iphone')
99139
@skipIf(archs=['i386','x86_64'])
100140
def test_ios_backdeploy_apple_silicon(self):
101141
"""Test running a back-deploying iOS simulator binary"""
102142
self.run_with(arch=self.getArchitecture(),
103-
os='ios11.0', env='simulator',
143+
os='ios', vers='11.0', env='simulator',
104144
expected_load_command='LC_BUILD_VERSION')
105145

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

117157
@skipUnlessDarwin
@@ -121,7 +161,7 @@ def test_lc_version_min_tvos(self):
121161
def test_tvos_backdeploy_apple_silicon(self):
122162
"""Test running a back-deploying tvOS simulator binary"""
123163
self.run_with(arch=self.getArchitecture(),
124-
os='tvos11.0', env='simulator',
164+
os='tvos', vers='11.0', env='simulator',
125165
expected_load_command='LC_BUILD_VERSION')
126166

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

139179
@skipUnlessDarwin
@@ -144,5 +184,5 @@ def test_lc_version_min_watchos(self):
144184
def test_watchos_backdeploy_apple_silicon(self):
145185
"""Test running a back-deploying watchOS simulator binary"""
146186
self.run_with(arch='armv7k',
147-
os='watchos4.0', env='simulator',
187+
os='watchos', vers='4.0', env='simulator',
148188
expected_load_command='LC_BUILD_VERSION')

lldb/tools/debugserver/source/MacOSX/MachProcess.mm

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -610,9 +610,9 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
610610
&vers_cmd) != sizeof(struct version_min_command))
611611
return;
612612
info.platform = platform;
613-
info.major_version = vers_cmd.sdk >> 16;
614-
info.minor_version = (vers_cmd.sdk >> 8) & 0xffu;
615-
info.patch_version = vers_cmd.sdk & 0xffu;
613+
info.major_version = vers_cmd.version >> 16;
614+
info.minor_version = (vers_cmd.version >> 8) & 0xffu;
615+
info.patch_version = vers_cmd.version & 0xffu;
616616
info.maybe_simulator = true;
617617
};
618618
switch (cmd) {
@@ -635,9 +635,9 @@ static bool FBSAddEventDataToOptions(NSMutableDictionary *options,
635635
&build_vers) != sizeof(struct build_version_command))
636636
break;
637637
info.platform = build_vers.platform;
638-
info.major_version = build_vers.sdk >> 16;
639-
info.minor_version = (build_vers.sdk >> 8) & 0xffu;
640-
info.patch_version = build_vers.sdk & 0xffu;
638+
info.major_version = build_vers.minos >> 16;
639+
info.minor_version = (build_vers.minos >> 8) & 0xffu;
640+
info.patch_version = build_vers.minos & 0xffu;
641641
break;
642642
}
643643
#endif

0 commit comments

Comments
 (0)