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/