Exceptions(arm-elf-gcc)

OP #599540
Hallo,

wie kann man mit exceptions in arm-alf-gcc arbeiten? Beim Linken kommen 
nämlich lauter Meldungen über undefinierte Referenzen wie z.b.
1
arm-elf-gcc  -mcpu=arm7tdmi  -I. -gdwarf-2 -DROM_RUN  -O2 -Wall  -Wa,-adhlns=crt0.lst   -MD -MP -MF .dep/main.elf.d crt0.o     main.o uart.o LCD.o System.o Robot.o   --output main.elf -nostartfiles -Wl,-Map=main.map,--cref -lc -lnewlib-lpc -lm -lc -lgcc  -lstdc++ -TLPC2138-ROM.ld
2
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(makebuf.o): In function `__smakebuf':
3
makebuf.c:(.text+0x3c): undefined reference to `_fstat_r'
4
makebuf.c:(.text+0x110): undefined reference to `isatty'
5
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sclose':
6
stdio.c:(.text+0xc): undefined reference to `_close_r'
7
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sseek':
8
stdio.c:(.text+0x30): undefined reference to `_lseek_r'
9
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__swrite':
10
stdio.c:(.text+0x84): undefined reference to `_lseek_r'
11
stdio.c:(.text+0xac): undefined reference to `_write_r'
12
c:/winarm/bin/../lib/gcc/arm-elf/4.1.1/../../../../arm-elf/lib\libg.a(stdio.o): In function `__sread':
13
stdio.c:(.text+0xd0): undefined reference to `_read_r'
14
collect2: ld returned 1 exit status
15
make.exe: *** [main.elf] Error 1

Was machen die einzelnen Funktionen? Kann man sie auch selbst schreiben?

MfG Mark
Gast
Es sind Linker-Fehler, da Funktionen fehlen. Diese sollten aber von 
newlib-lpc bereitgestellt werden, es könnte ein Problem zwischen 
newlib-lpc und C++ sein.  Da wohl WinARM genutzt wird, würde ich mir das 
gerne genauer anschauen. Bitte den gesammten Code oder zumindest ein 
Minimalbeispiel, an dem man as Fehlerverhalten nachvollziehen kann 
(Quellen, Makefile, Linker-Script) zusammenpacken und an 
mthomas(at)rhrk(dot)uni-kl(dot)de schicken.
OP
Hallo,

danke für die Antwort.

Da ich auch anderen die Möglichkeit geben möchte, sich den Code 
anzuschauen werde ich ihn hier anhängen. Es ist nur ein Beispielcode, 
das einfach nur das Problem demonstriert. Den ganzen Code zu schicken 
wäre etwas unsinnig, weil sich eh keiner die 2500 Zeilen ansehen würde. 
Das Linkerscript sowie die Startup habe ich aus einem der Beispiele von 
WinARM genommen.

MfG Mark
Angehängte Dateien:
Moderator Persönliche Seite
Grade erstmal oberflächlich den Code angeschaut. Da passt einiges nicht 
zusammen. Am Besten erstmal mit dem Beispiel lpc2129_newlib_cpp in 
WinARM\examples anfangen. Darin sollten zumindest linker-script und 
newlib-headers richtig organisiert sein. Erforderliche Anpassungen für 
LPC2138 sind minimal. Dann damit C++ exceptions ausprobieren um das 
Problem einzugrenzen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.