objcopy produziert riesiges binary

OP #6298252
Lesenswert?

Grüß euch

Im Anhang befinden sich 2x ELF Datein für einen Cortex-M4. Die beiden 
Datein wurden mit unterschiedlichen Compilern erzeugt, einmal mit GCC10, 
einmal mit Clang10.

gcc.elf sollte ein 344B großes Binary erzeugen
clang.elf sollte ein 868B großes Binary erzeugen

Letzteres funktioniert allerdings leider nicht. Versuche ich mit objcopy 
(egal ob von binutils oder llvm-objcopy) ein Binary zu erstellen, so ist 
das Resultat 256MB(!) groß.

Hat irgendwer eine Idee woran das liegen könnte?

tia
Angehängte Dateien:
Gast #6298256
Lesenswert?

Ja an den Sections, wenn der Flash-Speicher bei einer höheren Adresse 
anfängt, wird der Bereich zwischen 0 und der Adresse mit 0en aufgefüllt. 
Bei dir wird wohl der Flash-Speicher bei 256MByte anfangen.
OP #6298261
Lesenswert?

Ah verstehe. In den beiden ELF Datein findet sich auch ein Eintrag 
namens "Section to Segment mapping" und während im GCC lediglich
1
 Section to Segment mapping:
2
  Segment Sections...
3
   00     .vector_table .version .text 
4
   01     .bss ._user_heap_stack

zu finden ist, listet Clang
1
 Section to Segment mapping:
2
  Segment Sections...
3
   00     .vector_table .version .text .rodata .ARM.exidx 
4
   01     .preinit_array .init_array .fini_array 
5
   02     .data .bss .bss2 ._user_heap_stack 
6
   03     .preinit_array .init_array .fini_array 
7
   04     
8
   05     .rodata .ARM.exidx


Die Frage ist nur... wie bekomm ich das weg. :)
OP #6298275
Lesenswert?

Gerald K. schrieb:
> Achtung : ein ELF File enthält auch einen Header und kann zusätzlich
> durch Debug-Informationen "aufgeblasen" werden. Erklärt aber nicht die
> *256MB*
>
> Versuche einmal den ELF File in ein Binärfile umzuwandeln.
>
> arm-elf-objcopy -O binary [elf-input-file] [binary-output-file]
>
> 
https://stackoverflow.com/questions/2427011/what-is-the-difference-between-elf-files-and-bin-files

Bitte den letzten Absatz nochmal lesen. Es geht um erzeugte Binaries. ;)


/edit
Interessant, mit (NOLOAD) bei .data, .bss, .bss2 und ._user_heap_stack 
wird das Binary noch größer...?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren