I'd like to learn how you are doing this... perhaps I can have a peek at your program?
It's just a test case, a Linux usermode program, to be using brk()? Have you also considered using segment registers on Intel? Jeremy ----- Original Message ----- From: "Eric W. Biederman" <[EMAIL PROTECTED]> To: "LinuxBIOS" <[EMAIL PROTECTED]>; "Etherboot Developers" <[EMAIL PROTECTED]> Sent: Saturday, April 13, 2002 1:41 AM Subject: Dynamic relocation.... > > In removing address conflicts in the process of booting, I keep > wanting to copy the bootloader around, or relocate it in other ways. > > So today I sat down and played with the techniques ld.so uses > to make itself position indpendent. I took the necessary bits > out of ld.so stripped them down and came up with a binary with a 2308 > byte footprint (bss included). > > All the 2308 byte binary does is call brk to get some more memory > and then copy itself there, and then it restarts itself. > > And the code isn't to painful to write or maintain. For another 300 > bytes I can add in printf so I can see what I'm doing. > > Holler if you want my test program, but generating a shared object > that can relocate it self definitely works. > > I will probably figure out how to deploy this first in memtest86 > as it will cut the program size in half (because it won't have to > double compile it's code), and make it more flexible. > > Oh yeah, and the active code size is for the relocate is just under > 300 lines of code. So this is small stuff that is fairly easy to deal > with. > > A linker that does symbol lookup is still spooky but for relocation > I'm pretty much convinced this is the way to go. > > Eric >
