Skip to content

Commit 30c2e05

Browse files
committed
Merge pull request #2335 from bitjammer/swift-reflection-test-C
swift-reflection-test: Target SwiftRemoteMirror C API
2 parents 893d2b4 + bd9fd05 commit 30c2e05

File tree

10 files changed

+456
-435
lines changed

10 files changed

+456
-435
lines changed

include/swift/Remote/CMemoryReader.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class CMemoryReader final : public MemoryReader {
7272

7373
bool readBytes(RemoteAddress address, uint8_t *dest, uint64_t size) override {
7474
return Impl.readBytes(Impl.reader_context,
75-
address.getAddressData(), dest, size);
75+
address.getAddressData(), dest, size) != 0;
7676
}
7777
};
7878

include/swift/SwiftRemoteMirror/MemoryReaderInterface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ typedef uint64_t addr_t;
3030

3131
typedef uint8_t (*PointerSizeFunction)(void *reader_context);
3232
typedef uint8_t (*SizeSizeFunction)(void * reader_context);
33-
typedef bool (*ReadBytesFunction)(void * reader_context, addr_t address,
33+
typedef int (*ReadBytesFunction)(void * reader_context, addr_t address,
3434
uint8_t *dest, uint64_t size);
3535
typedef uint64_t (*GetStringLengthFunction)(void * reader_context,
3636
addr_t address);

include/swift/SwiftRemoteMirror/SwiftRemoteMirror.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#ifndef SWIFT_REFLECTION_SWIFT_REFLECTION_H
2121
#define SWIFT_REFLECTION_SWIFT_REFLECTION_H
2222

23+
#include "MemoryReaderInterface.h"
2324
#include "SwiftRemoteMirrorTypes.h"
2425

2526
/// Major version changes when there are ABI or source incompatible changes.
@@ -117,11 +118,11 @@ swift_reflection_genericArgumentOfTypeRef(swift_typeref_t OpaqueTypeRef,
117118
///
118119
/// Returns true if InstanceTypeRef and StartOfInstanceData contain valid
119120
/// valid values.
120-
bool swift_reflection_projectExistential(SwiftReflectionContextRef ContextRef,
121-
addr_t InstanceAddress,
122-
swift_typeref_t ExistentialTypeRef,
123-
swift_typeref_t *OutInstanceTypeRef,
124-
addr_t *OutStartOfInstanceData);
121+
int swift_reflection_projectExistential(SwiftReflectionContextRef ContextRef,
122+
addr_t InstanceAddress,
123+
swift_typeref_t ExistentialTypeRef,
124+
swift_typeref_t *OutInstanceTypeRef,
125+
addr_t *OutStartOfInstanceData);
125126

126127
/// Dump a brief description of the typeref as a tree to stderr.
127128
void swift_reflection_dumpTypeRef(swift_typeref_t OpaqueTypeRef);

include/swift/SwiftRemoteMirror/SwiftRemoteMirrorTypes.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
#ifndef SWIFT_REMOTE_MIRROR_TYPES_H
1919
#define SWIFT_REMOTE_MIRROR_TYPES_H
2020

21+
#include <stdint.h>
22+
2123
#ifdef __cplusplus
2224
extern "C" {
2325
#endif

stdlib/public/SwiftRemoteMirror/SwiftRemoteMirror.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
#include "swift/Remote/CMemoryReader.h"
1616
#include "swift/SwiftRemoteMirror/SwiftRemoteMirror.h"
1717

18-
#include <iostream>
19-
2018
using namespace swift;
2119
using namespace swift::reflection;
2220
using namespace swift::remote;
@@ -214,11 +212,11 @@ swift_reflection_childOfMetadata(SwiftReflectionContextRef ContextRef,
214212
return convertChild(TI, Index);
215213
}
216214

217-
bool swift_reflection_project_existential(SwiftReflectionContextRef ContextRef,
218-
addr_t InstanceAddress,
219-
swift_typeref_t ExistentialTypeRef,
220-
swift_typeref_t *InstanceTypeRef,
221-
addr_t *StartOfInstanceData) {
215+
int swift_reflection_project_existential(SwiftReflectionContextRef ContextRef,
216+
addr_t InstanceAddress,
217+
swift_typeref_t ExistentialTypeRef,
218+
swift_typeref_t *InstanceTypeRef,
219+
addr_t *StartOfInstanceData) {
222220
// TODO
223221
return false;
224222
}

test/lit.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ config.substitutions.append(
861861
(subst_target_swift_ide_test_mock_sdk,
862862
subst_target_swift_ide_test_mock_sdk_after)))
863863
config.substitutions.append(('%target-swift-ide-test', config.target_swift_ide_test))
864-
config.substitutions.append(('%target-swift-reflection-test', 'swift-reflection-test{variant_suffix} {arch}'.format(variant_suffix=config.variant_suffix, arch=run_cpu)))
864+
config.substitutions.append(('%target-swift-reflection-test', 'swift-reflection-test{variant_suffix}'.format(variant_suffix=config.variant_suffix)))
865865
config.substitutions.append(('%target-swift-reflection-dump', '{} {} {}'.format(config.swift_reflection_dump, '-arch', run_cpu)))
866866
config.substitutions.append(('%target-swiftc_driver', config.target_swiftc_driver))
867867
config.substitutions.append(('%target-swift-remoteast-test-with-sdk',
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
add_swift_target_executable(swift-reflection-test BUILD_WITH_STDLIB
2-
swift-reflection-test.cpp
3-
overrides.cpp
2+
swift-reflection-test.c
3+
overrides.c
44
LINK_FAT_LIBRARIES
5-
swiftReflection
65
swiftRemoteMirror)
76

tools/swift-reflection-test/overrides.cpp renamed to tools/swift-reflection-test/overrides.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
#include "overrides.h"
22

3-
extern "C" {
43
extern pid_t fork(void);
54
extern int execv(const char *path, char * const *argv);
6-
}
75

86
pid_t _fork(void) {
97
return fork();

0 commit comments

Comments
 (0)