Thread (8 messages) 8 messages, 6 authors, 2012-05-28

Incremental Linking

From: Sarbojit Ganguly <hidden>
Date: 2012-05-23 16:51:14

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 [off-list ref] wrote:
Hi Somanath,

On Tue, May 22, 2012 at 2:56 AM, somanath sahoo [off-list ref] wrote:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help