Incremental Linking

Sarbojit Ganguly unixman.linuxboy at gmail.com
Wed May 23 12:51:14 EDT 2012


Hello Dave,

I tried to explain this feature (no doubt you have explain it
perfectly) but he is looking for _how_ kernel module gets loaded and
somehow (I wonder how!) dubs the entire process as "incremental link"
!

On 23 May 2012 21:47, Dave Hylands <dhylands at gmail.com> wrote:
> Hi Somanath,
>
> On Tue, May 22, 2012 at 2:56 AM, somanath sahoo <bapi_mvit2004 at yahoo.com> wrote:
>> Hi,
>>
>> As newbie in linux kernel, I would like to understand the concept of
>> "incremental linking " w.r.t to linux kernel module.
>
> Incremental linking is basically just taking some objects files,
> linking them together to produce a larger object file. The object file
> still has undefined references. It will also coalesce sections of the
> same name. The kernel likes to use sections for storing pointers to
> initcall functions and other things like that.
>
> Some people might also call this partial linking. The kernel uses this
> technique for the main portion of the kernel as well. If you look
> through your build directory, you will find a whole bunch of
> built-in.o files. Each one of these is a partially linked object file
> containing all of the object files from the current directory and
> built-in.o files from directories below.
>
> With kernel modules, there are some special automatically generated C
> files which also get linked in (IIRC that have a name like foo.mod.c)
>
> A kernel module is conceptually identical to a shared library (which
> is also partially linked and may contain unresolved references).
>
> You can do incremental linking  by doing:
>
> echo "int foo1(void) { return 1; }" > foo1.c
> echo "int foo2(void) { return 2; }" > foo2.c
> gcc -c foo1.c
> gcc -c foo2.c
> ld -r -o foo.o foo1.o foo2.o
>
> You'll now have foo.o which has both foo1.o and foo2.o partially
> linked together, which you can see by using:
>
> nm foo.o
>
> --
> Dave Hylands
> Shuswap, BC, Canada
> http://www.davehylands.com
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



More information about the Kernelnewbies mailing list