Date: Fri, 7 Dec 2012 01:11:22 +0200 From: Konstantin Belousov <kostikbel@gmail.com> To: Shrikanth Kamath <shrikanth07@gmail.com> Cc: freebsd-hackers@freebsd.org Subject: Re: ELF symtab and ddbsymtab difference Message-ID: <20121206231122.GE3013@kib.kiev.ua> In-Reply-To: <CAEOAkMU0osWoUensNaqBH%2BPWP9bcTLZffwLVh3WeppzqKMmT0g@mail.gmail.com> References: <CAEOAkMU0osWoUensNaqBH%2BPWP9bcTLZffwLVh3WeppzqKMmT0g@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Wed, Dec 05, 2012 at 12:13:24PM +0530, Shrikanth Kamath wrote:
> This is regarding the fields in the structure "elf_file_t" in link_elf.c.
> For some kernel modules the symtab field is different from the ddbsymtab
> field for some it is the same, would like to know what is the difference
> between the two and how to enable ddbsymtab?
Assuming we are talking about the link_elf.c and not about link_elf_obj.c.
The symtab and ddbsymtab are first initialized from the dynamic symbol
table in the module, and later, in the process of loading the module, if
the non-dynamic symbol table is present, ddbsymtab is rewritten to point
to the table.
>
> Does enabling "-g" in CFLAGS make the binary build the ddbsymtab different
> from symtab?
No. It is strip done on the module which could result in the removal of the
non-dynamic symtab.
>
> The problem is lookup for some symbols in the kernel module that I built
> returns with undefined, on inspecting it was getting a ENOENT from the
> function
> link_elf_lookup_symbol()
> {
> ...
> /* If we have not found it, look at the full table (if loaded) */
> if (ef->symtab == ef->ddbsymtab)
> return (ENOENT);
> ...
> }
It is not the problem. It just means that you dynamic symbol table does
not contain the needed symbol, which is the problem. As a coincident,
you also stripped your module, making the problem to be exposed.
I guess that you should look at the EXPORT_SYMS feature of the module
Makefiles. But I also remember there were some bugs.
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)
iQIcBAEBAgAGBQJQwSYZAAoJEJDCuSvBvK1B5bQP+gOsuyPIj4GrcOUt70uVDysS
dRWogfQmrBS1CMxflHvEmeR7xvkPwdbYBlPyWcJ4sIKsjQ9GayELHJ+Hm2eD4F4J
reuiG6uvBUBRbVaPMalGkjbZ1xgyJL5LAvc8avxlnFl9Hrw39c8gzse/+AZAB+O/
N3bJQ5YxNTXWrp5PZaSOMAuNpYxPLrfjuQxEkCjmDKZ9gbtUgSLrCsadQizrjQlt
PojTy3kzTKdt9PM67ZMLI1ahLtOxpghuzZ96M5yJOwqFadpvg9XS5HHTDSu/0XoI
gq2wdPEO4HYLoXnUszvgEZ1x3xzoLPD4V1Z6XG5PYKeei2BBK3cujYml3qz6LQ5L
SVDjszyiUgi7j33+djaPZZHKiB1Jiti63Kw2t17G1miYlS2Q/LWS3H9ZXd1JuEm/
xcMr1jslMKFCfDa+W9dwYN3hGW4z3ypDmV31N/ZjHp0i982FXdA1BAQcZMBuyb5B
2xAJfvXomrzBXLXaGGsRMYjL+VMXnjkDb3rXSJOyWJP4FiFpVD++xPQehfFfKHtw
eKD7mUXtQD0k1PsIHqZ3veHKrnLmW6RyhlCA7WkJ4dTS4bJiK5lW93vbaC/ikrTO
RClUdHsjmOJcxu4buzOMYraOozuz56Z6ClbzbaqagqCrj/kP8h7F59g+en9uGnTJ
jGeuWqCR8O3Y/YT3TOOE
=bkzM
-----END PGP SIGNATURE-----
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121206231122.GE3013>
