Forum: Compiler & IDEs Exceptions(arm-elf-gcc)


von Mark .. (mork)


Lesenswert?

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

von mthomas (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

Sollte die libnewlib-lpc nicht am Schluß stehen?

von Mark .. (mork)


Angehängte Dateien:

Lesenswert?

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

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.