Re: Dependencies for init functions

Joerg Pommnitz (pommnitz@darmstadt.gmd.de)
Wed, 11 Aug 1999 18:54:42 +0200


This is a multi-part message in MIME format.
--------------AE90492E828D9E32266F1810
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Alan Cox wrote:
>
> > Would you support such a scheme? If yes, I'm willing to do
> > the implementation (catdep already exists :-)).
>
> It sounds a good solution to me

Hi Alan,
I'm a little bit excited because I got a first rough cut of
the code working. It consists of basically 3 programs:

fiximage: this one actually manipulates the ELF image file

symaddr : resolves a list of symbol name sto their address

catdep : converts a dependency description of the form
"a b: c d" (symbol a and b depend on c and d)
into input suitable for tsort.

Additional, there is a small test program, that places a number
of functions into the .ctors section.

To test it:
1) compile all 4 programs (fiximage needs libelf).
2) create a symbol file for the demo image (i.e. nm ./demo | grep foo. > demo.sym)
3) specify a dpendency for foo1..foo7, for instance
foo1: foo3 foo4
foo4: foo2
foo2: foo5
4) to test catdep do:
pommnitz ~/fiximage>./catdep dependencies | tsort
foo1
foo4
foo3
foo2
foo5
5) to test symaddr, add another stage to the pipe:
pommnitz ~/fiximage>./catdep inp | tsort | ./symaddr -f demo.sym
0x80483d0
0x8048460
0x8048430
0x8048400
0x8048490
6) to test fiximage, you have to do a before/after comparison:
pommnitz ~/fiximage>objdump --section=.ctors --full-contents demo

demo: file format elf32-i386

Contents of section .ctors:
80495b8 ffffffff d0830408 00840408 30840408 ............0...
80495c8 60840408 90840408 c0840408 f0840408 `...............
80495d8 00000000 ....
pommnitz ~/fiximage>./catdep dependencies | tsort | ./symaddr -f demo.sym | ./fiximage -f demo -s .ctors
pommnitz ~/fiximage>objdump --section=.ctors --full-contents demo

demo: file format elf32-i386

Contents of section .ctors:
80495b8 d0830408 60840408 30840408 00840408 ....`...0.......
80495c8 90840408 ffffffff c0840408 f0840408 ................
80495d8 00000000 ....

The resulting binary still does run. However, it seems that the
.ctors section for user binaries is not just a table listing all
the constructors but uses 0xffffffff and 0x00000000 to mark the
start and the end of the table. fiximage does works around this
with a disgusting hack. Oh, and it seems that the C runtime
walks the .ctors table in the wrong direction...

-- 
Regards
       Joerg
GMD-IPSI, Dolivostr. 15, Zimmer 120, D-64293 Darmstadt
+49-6151-869-786 (Phone), -818 (FAX)
--------------AE90492E828D9E32266F1810
Content-Type: application/octet-stream;
 name="fiximage.tgz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="fiximage.tgz"

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 hhpqqKGGGvqvo38DoU9gygBQAAA= --------------AE90492E828D9E32266F1810--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/