From 8aa1deb96cf16f451207be5fbacd172a0b557021 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 13 Apr 2023 14:45:00 +0000 Subject: [PATCH] Clarify what part of the NDK sets the soname. It's the build systems, not the toolchain itself. Bug: https://github.com/android/ndk/issues/1865 Test: treehugger Change-Id: I74b35498e32c798683fd39e7369f87ff6cc2de38 --- android-changes-for-ndk-developers.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/android-changes-for-ndk-developers.md b/android-changes-for-ndk-developers.md index c5a6ac37d..8ffd96f5e 100644 --- a/android-changes-for-ndk-developers.md +++ b/android-changes-for-ndk-developers.md @@ -107,7 +107,7 @@ feature >= Android M but still works on older releases.) ## Correct soname/path handling (Available in API level >= 23) The dynamic linker now understands the difference -between a library’s soname and its path (public bug +between a library’s soname and its path (public bug https://code.google.com/p/android/issues/detail?id=6670). API level 23 is the first release where search by soname is implemented. Earlier releases would assume that the basename of the library was the soname, @@ -326,12 +326,12 @@ libraries as the location may change from device to device. ## Missing SONAME (Enforced for API level >= 23) -Each ELF shared object (“native library”) must have a SONAME (Shared -Object Name) attribute. The NDK toolchain adds this attribute by default, -so its absence indicates either a misconfigured alternative toolchain -or a misconfiguration in your build system. A missing SONAME may lead -to runtime issues such as the wrong library being loaded: the filename -is used instead when this attribute is missing. +Each ELF shared object (“native library”) must have a SONAME +(Shared Object Name) attribute. The NDK build systems add this +attribute by default, so its absence (or an incorrect soname) indicates +a misconfiguration in your build system. A missing SONAME may lead to +runtime issues such as the wrong library being loaded: the filename is +used instead when this attribute is missing. ``` $ readelf --dynamic libWithSoName.so | grep SONAME @@ -346,7 +346,7 @@ the library you were expecting. *Resolution*: the current NDK generates the correct SONAME by default. Ensure you're using the current NDK and that you haven't configured your build system to generate incorrect SONAME entries (using -the -soname linker option). +the `-soname` linker option). ## `__register_atfork` (Available in API level >= 23)