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
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.
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. :)
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
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...?
:
Bearbeitet durch User
Mit etwas mehr Infos nun auch auf stackoverflow, da doch sehr spezielles Thema: https://stackoverflow.com/questions/62320128/differences-between-gcc-clang-when-linking
War ein lld Bug, behoben ab 10.0.1 https://bugs.llvm.org/show_bug.cgi?id=46299 https://bugs.llvm.org/show_bug.cgi?id=46225
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.