From 201e18a8841a2cb341a752ca180014a3b8fe5234 Mon Sep 17 00:00:00 2001 From: Eugeniy Meshcheryakov Date: Mon, 7 Sep 2009 11:01:14 +0200 Subject: Fix build-id check for relocatable kernel Save offset of build id relative to _stext instead of absolute address for kernel and apply relocations at run-time. This fixes Debian bug #545277 (http://bugs.debian.org/545277). --- translate.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index 9a25df61..88968d45 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4928,11 +4928,12 @@ dump_unwindsyms (Dwfl_Module *m, c->output << ".build_id_len = " << build_id_len << ",\n"; /* XXX: kernel data boot-time relocation works differently from text. - This hack disables relocation altogether, but that's not necessarily + This hack assumes that offset between _stext and build id + stays constant after relocation, but that's not necessarily correct either. We may instead need a relocation basis different from _stext, such as __start_notes. */ if (modname == "kernel") - c->output << ".build_id_offset = 0x" << hex << build_id_vaddr + c->output << ".build_id_offset = 0x" << hex << build_id_vaddr - (base + extra_offset) << dec << ",\n"; else c->output << ".build_id_offset = 0x" << hex -- cgit