It turns out relocating the symbol table itself can cause issues, like fbt crashing because it applies the offsets to the kernel twice. This had been previously brought up in rS333447 when the stoffs hack was added, but I had been unaware of this and reimplemented symtab relocation. Instead of relocating the symbol table, keep track of the relocation base in ddb, so the ddb symbols behave like the kernel linker-provided symbols. This is intended to be NFC on platforms other than PowerPC, which do not use fully relocatable kernels. (The relbase will always be 0) * Remove the rest of the stoffs hack. * Remove my half-baked displace_symbol_table() function. * Extend ddb initialization to cope with having a relocation offset on the kernel symbol table. * Fix my kernel-as-initrd hack to work with booke64 by using a temporary mapping to access the data. * Fix another instance of __powerpc__ that is actually RELOCATABLE_KERNEL. * Change the behavior or X_db_symbol_values to apply the relocation base when updating valp, to match link_elf_symbol_values() behavior. Reviewed by: jhibbits Sponsored by: Tag1 Consulting, Inc. Differential Revision: https://reviews.freebsd.org/D25223 |
||
---|---|---|
.. | ||
db_access.c | ||
db_access.h | ||
db_break.c | ||
db_break.h | ||
db_capture.c | ||
db_command.c | ||
db_command.h | ||
db_examine.c | ||
db_expr.c | ||
db_input.c | ||
db_lex.c | ||
db_lex.h | ||
db_main.c | ||
db_output.c | ||
db_output.h | ||
db_print.c | ||
db_ps.c | ||
db_run.c | ||
db_script.c | ||
db_sym.c | ||
db_sym.h | ||
db_textdump.c | ||
db_thread.c | ||
db_variables.c | ||
db_variables.h | ||
db_watch.c | ||
db_watch.h | ||
db_write_cmd.c | ||
ddb.h |