Lines Matching +full:35 +full:- +full:dynamic
14 Required tools: the NDK has an `llvm-readelf` binary that understands all the
15 architecture-specific details of all Android's supported architectures. Recent
21 Our general practice with dynamic linker behavior changes is that they
33 * On a developer preview build, dynamic linker warnings will also show up
43 on the dynamic linker's search path. This meant that apps
47 dynamic linker's caching code cached failures too, so it was necessary
64 With API level 22, load order switched from depth-first to breadth-first to
69 in that order. For API level 23 and later, for any given library, the dynamic
73 flag set (by passing “-z global” to ld(1)). The local group is
74 the breadth-first transitive closure of the library and its DT_NEEDED
75 libraries. The API level 23 dynamic linker searches the global group followed by
82 LD_PRELOAD applies to both 32- and 64-bit processes. This means that you
84 `libfoo.so` instead, letting the dynamic linker find the correct library
100 The GNU hash style available with `--hash-style=gnu` allows faster
101 symbol lookup and is supported by Android's dynamic linker in API level 23 and
102 above. Use `--hash-style=both` if you want to build code that uses this
110 The dynamic linker now understands the difference
115 and used that to search for already-loaded libraries. For example,
119 `"dir2/libx.so"` --- the dynamic linker couldn’t tell the difference
147 (on a 4096-byte boundary) in the zip file and stored uncompressed.
153 page-aligned and stored uncompressed for this to work.
159 non-NDK platform libraries. On devices running API level 24 or later,
161 non-NDK platform libraries. This was to prevent future issues similar
165 The rule is enforced by the dynamic linker, so non-public libraries
172 most-installed apps and were feasible for us to support in the
181 $ readelf --dynamic libBroken.so | grep NEEDED
194 *Potential problems*: starting from API level 24 the dynamic linker will not
205 platforms/android-API/usr/lib.
216 headers. These headers must be present now, because the dynamic linker
220 information using widely-available tools.)
223 $ readelf --headers libBroken.so | grep 'section headers'
237 only a change for 32-bit, because 64-bit never supported text relocations.
239 The usual reason for text relocations was non-position independent
240 hand-written assembler. This is not common. You can use the scanelf tool
241 from the pax-utils debian package for further diagnostics:
244 $ scanelf -qT libTextRel.so
253 TEXTREL entry is irrelevant and typically 0 --- simply the presence of
258 $ readelf --dynamic libTextRel.so | grep TEXTREL
267 because the Android dynamic linker trusts the entry/flag.
270 wastefully increase the number of dirty pages in memory. The dynamic
287 leaving the business of finding the library at runtime to the dynamic
290 Before API level 23, Android's dynamic linker ignored the full path, and
301 $ readelf --dynamic libSample.so | grep NEEDED
312 device. There are broken third-party toolchains/build systems that use
330 $ readelf --dynamic libWithSoName.so | grep SONAME
336 are not found, or you try to use an ABI-incompatible library that isn't
342 the `-soname` linker option).
370 dynamic linker what permissions to give the corresponding page in
377 $ readelf --program-headers -W libBadFlags.so | grep WE
388 In API level 26 and above the dynamic linker checks more values in
403 On devices running API level 26 or later you can enable logging of dynamic
405 to the fully-qualified name of the specific app:
414 calls of dlerror(3) but to any time the dynamic linker writes to its
415 internal error buffer, so you'll see any errors the dynamic linker would
421 app-specific one. For example, to enable logging of all dlopen(3)
428 ## dlclose interacts badly with thread local variables with non-trivial destructors
431 thread-local variables with non-trivial destructors. This leads to
435 [issue 360]: https://github.com/android-ndk/ndk/issues/360
442 | ----------------- | -------------------------- | ------- | ----- |
444 | `-Wl,-z,nodelete` | Works for static STL | Works | Works |
450 Android supports [ELF TLS](docs/elf-tls.md) starting at API level 29. Since
454 means that convenient C/C++ thread-local syntax is available at any API level;
464 functionality in the dynamic linker to choose optimized assembler routines at
468 level an app targets, so all code sees the new IFUNC-using C library.
491 Prior to API level 35, there was a bug that caused RELR relocations to
496 produced binaries affected by this bug, but third-party toolchains
499 below 35.
503 https://maskray.me/blog/2021-10-31-relative-relocations-and-relr.
515 To fix this, in Android >= API level 35 and NDK >= r27, we removed sentinels
520 For dynamic executables, we kept sentinel support in `crtbegin_dynamic.o` and