Support #1188
closedStatic/dynamic library linking behavior change (10.1 -> 10.2+)
100%
Description
There was some change in linking behavior, which may or may not be an issue.
I'm attaching a simple project that is able to reproduce the change:
- test app linked to shared library
- shared library linked with static library
- the shared library has a method to access static variable defined in the static library
- the test app accesses method from shared library and also directly accessing static variable from the static library (the app itself is not linked to static library, at least not explicitly).
Behavior in ndk 10.1.0 (I have also verified that it is behavior in google ndk r10e):
- calls in the test app refer to the same memory
Behavior in ndk 10.2.0 and 10.3.0:
- calls refer to different memory locations
Files
Updated by Alex A. about 9 years ago
Small addition.
The way I tested:
-
start x86 emulator
-
build
/ndk-build
- copy
adb push libs/x86 /data/local/test
- ssh to emulator and run the test
adb shell LD_LIBRARY_PATH=/data/local/test /data/local/test/test
Updated by Dmitry M. about 9 years ago
- Assignee set to Dmitry M.
- Priority changed from Normal to High
- Target version set to 10.3.1
Updated by Dmitry M. about 9 years ago
- Category set to build/core
- Status changed from In Progress to Completed
- % Done changed from 0 to 100
Alex, thank you for reporting this issue! Having your minimal example, I was able to reproduce it.
It was a bug, introduced by "this":https://github.com/crystax/android-platform-ndk/commit/bcd2d89a4c9b4853dc67d5441a591980d94c9c38 commit. I've "fixed":https://github.com/crystax/android-platform-ndk/commit/c5cc5abcf69f537bcbd0d63c535cbfa05b13d03c it and added test case, preventing its appearing in the future.
This fix will be included to the upcoming 10.3.1 release.