mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-27 07:14:10 +08:00
107fb76317
_dyld_get_all_image_infos() was only used in test code in Crashpad. This addresses two related problems. When running on 10.13 or later, _dyld_get_all_image_infos() is not available. It appears to still be implemented in dyld, but its symbol is now private. This was always known to be an “internal” interface. When it’s not available, fall back to obtaining the address of the process’ dyld_all_image_infos structure by calling task_info(…, TASK_DYLD_INFO, …). Note that this is the same thing that the code being tested does, although the tests are not rendered entirely pointless because the code being tested consumes dyld_all_image_infos through its own implementation of an out-of-process reader interface, while the dyld_all_image_infos data obtained by _dyld_get_all_image_infos() is handled strictly in-process by ordinary memory reads. This is covered by bug 187. When building with the 10.13 SDK, no _dyld_get_all_image_infos symbol is available to link against. In this case, access the symbol strictly at runtime via dlopen() if it may be available, or when expecting to only run on 10.13 and later, don’t even bother looking for this symbol. This is covered by part of bug 188. Bug: crashpad:185, crashpad:187, crashpad:188 Change-Id: Ib283e070faf5d1ec35deee420213b53ec24fb1d3 Reviewed-on: https://chromium-review.googlesource.com/534633 Reviewed-by: Robert Sesek <rsesek@chromium.org>