Dynamic linker, links shared libraries together to be able to run, has been a fundamental mechanism in modern operating system and rich software ecosystem over the past decades. Dynamic linker is always highly platform-customized since it's coupled with binary format of a system. This article introduces the basic conception of dynamic linker and takes Android (Marshmallow) dynamic linker as example to discuss the implementation. We will see that dynamic link is a engineering-purpose mechanism rather than a theory-born one.
Breakpad 是一套用于抓取应用崩溃数据的工具。Breakpad 可以在移除编译器调试信息后，抓取、压缩 minidump 信息，将其发送回你的服务器，然后为 C/C++ 生成调用栈。
DBT directly translates and executes binary programs, enabling a compatible system by virtualizing one machine (guest) on another (host). However, the memory virtualization of guest brings in a great overhead, due to effort it takes to translate GVA into HPA (Host Physical Address). For QEMU, a DBT with efficient memory virtualization mechanism, more than 60% of the translated code is used to virtualize memory, thus leading to a low performance of guest. In this paper, we employ the Co-Design methodology to optimize memory access performance of guest. This optimization is primarily focused on two aspects. First, hardware extensions are designed and implemented to conduct GVA to HPA translation directly. Second, we modify QEMU to cooperate with hardware to reduce translated code. By this means, the cost of memory virtualization is completely eliminated, resulting in a significant enhancement of the performance of the Loongson binary translation system. The experimental data implies that the performance of guest has been dramatically improved by 100 times for peak performance and 19.12% for average performance over the previous system.
QEMU可以在多种主机（x86, PowerPC, ARM, Sparc Alpha and MIPS）上仿真多种客户机（x86, PowerPC, ARM and Sparc）。通过完备的系统仿真，QEMU支持在虚拟机中运行未经修改的操作系统；通过Linux用户模式仿真，还支持在不同CPU上运行Linux软件。