[OpenBIOS] Q: How to "squeeze" C functions in between two symbols?

Andreas Färber andreas.faerber at web.de
Mon Oct 11 21:18:13 CEST 2010


Am 08.10.2010 um 19:22 schrieb Alexander Graf:

> On 08.10.2010, at 19:11, Andreas Färber wrote:
>
>> Am 08.10.2010 um 15:30 schrieb Alexander Graf:
>>
>>> Why don't you just create a separate binary for RTAS which can  
>>> then use relative branching inside of itself? You could then copy  
>>> the whole blob somewhere and be sure that everything's there.
>>
>> How? :) Assuming I managed to fork arch/ppc/qemu/{start.S,ldscript}  
>> for a separate ELF binary, what would we do with it? Would QEMU  
>> need to load it separately as a ROM with known location, like  
>> openbios-ppc? Or would you embed such a binary into OpenBIOS somehow?
>
> You'd embed in into OpenBIOS. Just create a .c file keeping the blob  
> as variable from the .elf binary.

Sorry to bug... I have a very simple rtas.S now, linked into an rtas- 
qemu.elf. What now?

i) Is there an existing way to get my binary file into a .c file  
variable, or do I need to write my own generator in C? (or worse, Forth)

ii) To do anything with the blob I need to load it properly as an ELF  
image, and libopenbios/elf_load.c:elf_load() requires an ihandle. How  
would I get an ihandle from a variable in a .c file? It doesn't let me  
specify the (client-supplied) memory address either.

iii) Once I've loaded the ELF image, how do I get the function's entry  
point? OpenBIOS itself just uses the CPU's reset vector and branches  
to _entry from there - anything I need to add/change in the ldscript?

Thanks,
Andreas

-------------- next part --------------
A non-text attachment was scrubbed...
Name: rtas.diff
Type: application/octet-stream
Size: 2140 bytes
Desc: not available
URL: <http://lists.openbios.org/pipermail/openbios/attachments/20101011/89f6bd02/attachment.obj>
-------------- next part --------------



More information about the OpenBIOS mailing list