drgn/libdrgn
Omar Sandoval 1d4854a5bc libdrgn: implement optimized x86-64 ELF relocations
After the libdwfl conversion, we apply ELF relocations with libdwfl
instead of our homegrown implementation. However, libdwfl is much slower
at it than the previous implementation. We can work around this by
(again) applying ELF relocations ourselves for architectures that we
care about (x86-64, to start). For other architectures, we can fall back
to libdwfl.

This new implementation of ELF relocation reworks the parallelization to
be per-file rather than per-relocation. The latter was done originally
because before commit 6f16ab09d6 ("libdrgn: only apply ELF relocations
to relocatable files"), we applied relocations to vmlinux, which is much
larger than most kernel modules. Now that we don't do that, it seems to
be slightly faster to parallelize by file.
2019-07-15 12:27:48 -07:00
..
build-aux libdrgn: make program components pluggable 2019-05-10 12:41:07 -07:00
m4 Build Python bindings with automake 2019-04-03 17:00:53 -07:00
python libdrgn: generalize IS_RUNNING_KERNEL flag to IS_LIVE 2019-07-08 16:55:54 -07:00
.gitignore Document with Sphinx 2019-04-11 12:48:15 -07:00
binary_search_tree.h libdrgn: add splay tree implementation 2019-05-24 17:48:08 -07:00
cityhash.h Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
configure.ac libdrgn: check for Python development headers at configure time 2019-05-03 14:10:48 -07:00
Doxyfile Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
drgn.h libdrgn: add drgn_error_format_os() 2019-07-11 16:19:18 -07:00
dwarf_index.c libdrgn: implement optimized x86-64 ELF relocations 2019-07-15 12:27:48 -07:00
dwarf_index.h libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
dwarf_info_cache.c libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
dwarf_info_cache.h libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
elf_relocator.c libdrgn: implement optimized x86-64 ELF relocations 2019-07-15 12:27:48 -07:00
elf_relocator.h libdrgn: implement optimized x86-64 ELF relocations 2019-07-15 12:27:48 -07:00
error.c libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
error.h libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
hash_table.c Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
hash_table.h libdrgn: add splay tree implementation 2019-05-24 17:48:08 -07:00
internal.c libdrgn: get rid of unnecessary gelf_getshdr() in read_elf_section() 2019-07-11 09:53:56 -07:00
internal.h libdrgn: use next_power_of_two() for string_builder 2019-05-09 16:01:07 -07:00
language_c.c libdrgn: revamp hash table API 2019-05-24 17:48:05 -07:00
language.h libdrgn: make type index pluggable with callbacks 2019-05-06 14:55:34 -07:00
lexer.c libdrgn: use common vector where applicable 2019-07-15 12:27:16 -07:00
lexer.h libdrgn: use common vector where applicable 2019-07-15 12:27:16 -07:00
linux_kernel.c libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
linux_kernel.h libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
Makefile.am libdrgn: implement optimized x86-64 ELF relocations 2019-07-15 12:27:48 -07:00
memory_reader.c libdrgn: reorder drgn_error_create_os() arguments 2019-07-11 16:12:56 -07:00
memory_reader.h libdrgn: use splay tree for memory reader 2019-05-24 17:48:08 -07:00
object.c libdrgn: make program components pluggable 2019-05-10 12:41:07 -07:00
object.h libdrgn: fix C array and function casting 2019-04-12 16:40:12 -07:00
path.c libdrgn: make program components pluggable 2019-05-10 12:41:07 -07:00
program.c libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
program.h libdrgn: use libdwfl 2019-07-15 12:27:48 -07:00
read.h libdrgn: only load debug information from loaded kernel modules 2019-05-14 11:55:39 -07:00
serialize.c Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
serialize.h Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
siphash.h Rewrite drgn core in C 2019-04-02 14:12:07 -07:00
splay_tree.c libdrgn: add splay tree implementation 2019-05-24 17:48:08 -07:00
string_builder.c libdrgn: move string_builder_line_break() to string_builder.c 2019-07-11 15:33:10 -07:00
string_builder.h libdrgn: move string_builder_line_break() to string_builder.c 2019-07-11 15:33:10 -07:00
symbol_index.c libdrgn: embed memory reader, type index, and symbol index in program 2019-05-06 14:55:34 -07:00
symbol_index.h libdrgn: make program components pluggable 2019-05-10 12:41:07 -07:00
type_index.c libdrgn: revamp hash table API 2019-05-24 17:48:05 -07:00
type_index.h libdrgn: revamp hash table API 2019-05-24 17:48:05 -07:00
type.c libdrgn: revamp hash table API 2019-05-24 17:48:05 -07:00
type.h libdrgn: make type index pluggable with callbacks 2019-05-06 14:55:34 -07:00
vector.c libdrgn: add common vector implementation 2019-07-15 12:27:15 -07:00
vector.h libdrgn: add common vector implementation 2019-07-15 12:27:15 -07:00