Skip to content

Fix JNI symbols not exposed in release mode#650

Merged
ktoso merged 2 commits intoswiftlang:mainfrom
gmondada:gab/fix-public-symbols
Mar 29, 2026
Merged

Fix JNI symbols not exposed in release mode#650
ktoso merged 2 commits intoswiftlang:mainfrom
gmondada:gab/fix-public-symbols

Conversation

@gmondada
Copy link
Copy Markdown
Contributor

When compiling swift-java in release mode, libSwiftJava.so does not expose JNI functions like Java_org_swift_swiftkit_core_SwiftObjects_getRawDiscriminator.
This PR makes public all methods generated with macro JavaImplementation.

@gmondada gmondada requested a review from ktoso as a code owner March 27, 2026 19:32
@gmondada
Copy link
Copy Markdown
Contributor Author

I've seen this problem compiling for Android with command:

swiftly run +6.3 swift build --swift-sdk aarch64-unknown-linux-android28 --product SwiftJava --disable-sandbox -c release

Then, command

nm ./.build/aarch64-unknown-linux-android28/release/libSwiftJava.so | grep Java_org_swift_swiftkit_core_SwiftObjects_getRawDiscriminator 

reveals that symbols have the small t flag:

00000000001bde9c t Java_org_swift_swiftkit_core_SwiftObjects_getRawDiscriminator

corresponding to internal symbols.

@gmondada
Copy link
Copy Markdown
Contributor Author

gmondada commented Mar 27, 2026

This probably also solves issues #492

Copy link
Copy Markdown
Collaborator

@ktoso ktoso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice catch, thank you!

@ktoso
Copy link
Copy Markdown
Collaborator

ktoso commented Mar 29, 2026

I'll fixup the tests, funnily enough I've hit the same issue just now

@ktoso ktoso merged commit 5fb0cd5 into swiftlang:main Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants