Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Jun 2010 11:43:26 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        freebsd-hackers@freebsd.org, freebsd-amd64@freebsd.org
Subject:   Re: amd64 kernel modules: mapping sections to addresses
Message-ID:  <201006211143.26459.jhb@freebsd.org>
In-Reply-To: <4C1F798C.7010204@freebsd.org>
References:  <4C1F798C.7010204@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 21 June 2010 10:39:08 am Andriy Gapon wrote:
> 
> I've noticed that on amd64 addresses (sh_addr) of all sections in a kernel 
module
> are zeros.
> This is unlike kernel itself and i386 modules.
> 
> Kernel linker maps SHT_PROGBITS and SHT_NOBITS sections sequentially 
starting at a
> certain base address and taking into account their sizes and alignment 
requirements.
> 
> On the other hand, kgdb calculates section address as module base address 
plus
> sh_addr of the section.  Which puts all sections, e.g. .text, .data, .bss, 
at the
> same address.  This is correct only for .text which is normally the first 
section
> described in a header.
> 
> DTrace situation is even worse, because don't even take into account module 
base
> address, not speaking of section relative addresses.
> 
> Perhaps we should put some sh_addr values into amd64 kernel modules that 
would
> match calculations done in link_elf_load_file.
> Or should we replicate logic from link_elf_load_file in all places that need 
to
> map loaded module's sections to load addresses?
> 
> What do you think?
> Thanks!
> 
> P.S.
> As I understand CTF data includes a symbol table.
> What kind of symbol addresses is used there?  Are they relative within a
> corresponding section?  Or something else?

np@ has a patch to gdb to fix this for kgdb.  I haven't committed it as it 
patched gdb internals and wasn't in a kgdb-specific place, but I'm not sure of 
a better way to fix kgdb.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006211143.26459.jhb>