Skip to main content.

14.2.20. My standalone program does not work

Question:
I tried adding some new code to the hellow_world.c demo program. This works well as soon as I only add code to the existing hello_world() function, but as soon as I add some functions of my own, things go all haywire: the code of the hello_world() function does not get executed correctly, and my new function gets called with unexpected arguments. What's wrong?

Answer:
You probably failed to notice that any code you add to the example program may shift the entry point address. You should check this using the nm program:
$ ${CROSS_COMPILE}nm -n examples/hello_world
0000000000040004 T testfunc
0000000000040058 T hello_world
000000000004016c t dummy
...
As you can see, the entry point (function hello_world()) is no longer at 0x40004 as it was before and as it's documented. Instead, it is now at 0x40058. So you have to start your standalone program at this address, and everything should work well.
14.2.19. How can I create an uImage from a ELF file 1. Abstract 14.2.21. Linux hangs after uncompressing the kernel
Prev Home Next