{"push_id":1415841289,"size":1,"distinct_size":1,"ref":"refs/heads/n","head":"31acd46cadb5ca0c9d416a5fb428b02561bc01f9","before":"e3d29ef426f0b3fa26398317a997cbd95970d70b","commits":[{"sha":"31acd46cadb5ca0c9d416a5fb428b02561bc01f9","author":{"name":"Christopher R. Palmer","email":"dfedd7fdae8c01bfb08ce916158286f2c0207048@gmail.com"},"message":"linker: Add support for dynamic \"shim\" libs\n\nAdd a new environment variable\n\nLD_SHIM_LIBS\n\nthat is a colon (\":\") separated list of vertical bar (\"|\") separated pairs.\nThe pairs are the name for a soinfo reference (executable or shared library)\nfollowed by the name of the shim library to load.  For example:\n\nLD_SHIM_LIBS=rmt_storage|libshim_ioprio.so:/system/lib/libicuuv.so|libshim_icu53.so\n\nwill instruct the linker to load the dynamic library libshim_ioprio.so\nwhenver rmt_storage is executed [*] and will load libshim_icu53.so whenever\nany executable or other shared library links against /system/lib/libicuuv.so.\n\nThere are no restrictions against circular references.  In this example,\nlibshim_icu53.so can link against libicuuv.so which provides a simple and\nconvenient means of adding compatibility symbols.\n\n[*] Note that the absolute path is not available to the linker and therefore\nusing the name of executables does depend on the invocation and therefore\nshould only be used if absolutely necessary.  That is, running\n/system/bin/rmt_storage would not load any shim libs in this example because\nit does not match the name of the invocation of the command.\n\nIf you have trouble determining the sonames being loaded, you can also set\nthe environment variable LD_DEBUG=1 which will cause additional information\nto be logged to help trace the detection of the shim libs.\n\nChange-Id: I0ef80fa466167f7bcb7dac90842bef1c3cf879b6\n\nlinker: Fix the fact that shim libs do not properly call constructors\n\nChange-Id: I34333e13443a154e675b853fa41442351bc4243a\n\nlinker: Don't try to walk the g_active_shim_libs when doing dlsym\n\nThis is a bug in the original shim_lib implementation which was\ndoing the shim lib resolution both when loading the libraries\nand when doing the dynamic symbol resolution.\n\nChange-Id: Ib2df0498cf551b3bbd37d7c351410b9908eb1795\n\nRevert \"Revert \"linker: Reset the active shim libs each time we do a dlopen\"\"\n\nThis reverts commit fd0140b028dedabc572f4659cc015edfeee3cd60.\n\nChange-Id: I42b3acfcdc6b84251a396b9e42604bb5685196bd\n\nMake shim lib load failure non-fatal.\n\nInstead, print an appropriate warning message. Aborting symbol\nresolution on shim lib load failure leads to weird symbol lookup\nfailures, because symbols in libraries referenced after the one loading\nthe shim won't be loaded anymore without a log message stating why that\nhappened.\n\nChange-Id: Ic3ad7095ddae7ea1039cb6a18603d5cde8a16143\n\nbionic: Do not allow LD_SHIM_LIBS for setuid executables\n\nThat's really not safe...\n\nChange-Id: If79af951830966fc21812cd0f60a8998a752a941\n\nbionic: linker: Load shim libs *before* the self-linked libs\n\nBy loading them earlier, this allows us to override a symbol in\na library that is being directly linked.\n\nI believe this explains why some people have had problems shimming\none lib but when the changet he shim to be against a different\nlib it magically works.\n\nIt also makes it possible to override some symbols that were\nnearly impossible to override before this change.  For example, it is\npretty much impossible to override a symbol in libutils without\nthis change because it's loaded almost everywhere so no matter\nwhere you try to place the shimming, it will be too late and\nthe other symbol will have priority.\n\nIn particularly, this is necessary to be able to correctly\nshim the VectorImpl symbols for dlx.\n\nChange-Id: I461ca416bc288e28035352da00fde5f34f8d9ffa","distinct":true,"url":"https://api.github.com/repos/Unicornio-Sucio/android_bionic/commits/31acd46cadb5ca0c9d416a5fb428b02561bc01f9"}]}
{"actor":{"display_login":"Mazda--"}}