[linux-l] Gcc Binär iHex und wo es los geht

sukapx sukapx at gspons.net
Mo Jun 10 12:21:58 CEST 2013


On 06/10/2013 08:41 AM, Oswald Buddenhagen wrote:
> On Mon, Jun 10, 2013 at 12:50:44AM +0200, sukapx wrote:
>> Was muss ich tun, um die Addresse der Main eindeutig zu erhalten, um ggf.
>> einen Jump zur Main vorweg zu setzen
>>
> das macht man, indem man ein (in assembler geschriebenes) "trampolin"
> als erstes objekt linkt. das springt dann main() an.
>
> ich würde empfehlen, gcc-avr (und die dazugehörigen bibliotheken) als
> modell zu nehmen.
> ein komplexeres "beispiel" wäre coreboot.
>
> _______________________________________________
> linux-l mailing list
> linux-l at mlists.in-berlin.de
> Die Mailingliste der BeLUG (Berliner Linux User Group)
>
> Wenn du diese Mailingliste  abbestellen willst, gehe bitte auf
> https://mlists.in-berlin.de/mailman/listinfo/linux-l-mlists.in-berlin.de
> und trage dich dort bitte aus
Danke für den Tipp!

Habe nun folgende Lösung gefunden:

Linkerscript:
----------------------------
ENTRY(main)
SECTIONS
{
/* Start on Address 0
     . = 0x00000000;
     sec1 :
         {
/* Set my_main section first */
         main.o (.my_main)
/* append other Instructions */
         *(.text)
         }

/* RAM / Data start @0x0200 */
     . = 0x00000200;
     sec2 :
         {
         *(.data)
         *(.bss)
         }
}
----------------------------

Mainfunktion:
----------------------------
/* Make sure main is first in Binary */
__attribute__ ((used,section(".my_main")))
int main(void){
----------------------------




Mehr Informationen über die Mailingliste linux-l