1*8d67ca89SAndroid Build Coastguard Worker# Dynamic Linker Relocation Benchmark 2*8d67ca89SAndroid Build Coastguard Worker 3*8d67ca89SAndroid Build Coastguard WorkerThis benchmark measures the time spent in the dynamic linker to load a large set 4*8d67ca89SAndroid Build Coastguard Workerof shared objects with many symbols and relocations. It mimics the work involved 5*8d67ca89SAndroid Build Coastguard Workerin loading a fixed version of `libandroid_servers.so`. 6*8d67ca89SAndroid Build Coastguard Worker 7*8d67ca89SAndroid Build Coastguard Worker## Running the benchmark 8*8d67ca89SAndroid Build Coastguard Worker 9*8d67ca89SAndroid Build Coastguard WorkerTo run the benchmark, build the `linker-reloc-bench` target, sync `data`, and 10*8d67ca89SAndroid Build Coastguard Workerrun the benchmark from `/data/benchmarktest[64]/linker-reloc-bench`. 11*8d67ca89SAndroid Build Coastguard Worker 12*8d67ca89SAndroid Build Coastguard WorkerThere is also a `run_bench_with_ninja.sh` script that uses the 13*8d67ca89SAndroid Build Coastguard Worker`gen_bench.py --ninja` mode to generate a benchmark. It's useful for 14*8d67ca89SAndroid Build Coastguard Workerexperimentation. The `--cc` and `--linker` flags allow swapping out different 15*8d67ca89SAndroid Build Coastguard Workerstatic and dynamic linkers. 16*8d67ca89SAndroid Build Coastguard Worker 17*8d67ca89SAndroid Build Coastguard Worker## Regenerating the synthetic benchmark 18*8d67ca89SAndroid Build Coastguard Worker 19*8d67ca89SAndroid Build Coastguard Worker`regen/dump_relocs.py` scans an ELF file and its dependencies, outputting a JSON 20*8d67ca89SAndroid Build Coastguard Workerdump, then `regen/gen_bench.py` processes the JSON file into benchmark code. 21*8d67ca89SAndroid Build Coastguard Worker`gen_bench.py` has two modes: 22*8d67ca89SAndroid Build Coastguard Worker 23*8d67ca89SAndroid Build Coastguard Worker - (default) generate Android.bp and source files 24*8d67ca89SAndroid Build Coastguard Worker - with `--ninja`: generate a build.ninja instead, and build a set of ELF file 25*8d67ca89SAndroid Build Coastguard Worker outputs 26