objcopy produziert riesiges binary

OP #6298252
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.