I reproduced the reported behavior. An solib built with r15c matches the ES/sh_info behavior on the left, whereas one built with r16 matches the one on the right. If I use r16 ndk-build's PREBUILT_SHARED_LIBRARY on an r15c solib, then ndk-build invokes the binutils strip tool, which converts the section headers to match that on the right.
Questions:
* What build system are you using? e.g. ndk-build, CMake, Gradle, etc.
* Is there a particular problem this change is causing?
I would guess that both CMake and Gradle also strip prebuilts using the binutils strip tool packaged in the NDK.
FWIW: In general, I think the section header changes were intentional:
* ES: For .init_array / .fini_array, an sh_entsize of sizeof(void*) makes more sense than 0. Those sections are tables of pointers.
-Ryan