Re: Incremental Linking

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx> wrote:
> Hi Somanath,
>
> On Tue, May 22, 2012 at 2:56 AM, somanath sahoo <bapi_mvit2004@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxx
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux