Bug in printf und codesourcery for ARM

OP #2698410
Lesenswert?

Grüß Euch,

ich habe glaub ich einen Bug beim printf() entdeckt.

Wenn ich mit
printf("Hallo\n");
diesen Text über die Serielle an den PC sende, kommt das \n-zeichen 
nicht an.

printf("%s Hallo\n", "dummyString");
Erst wenn irgendein parameter dem Formatstring im printf() übergeben 
wird, so wird auch das abschließende \n mitgesendet.

Somit funktioniert auch folgendes richtig:
printf("Hallo%c",'\n');

Hat diesen Fehler schon mal jemand entdeckt?

Ich verwende "codesourcery-codebench-lite-2011.09-69-arm-eabi".

Das problem tritt dabei unabhängig davon auf, ob das Programm auf Linux 
oder Windows kompiliert wurde.

lg, Karl
OP #2699035
Lesenswert?

wir haben das nun nochmals überdacht. ich hatte zuvor deine antwort 
nicht richtig interpretiert.
mein kollege hat nun den bug in der stdio.c von Atmel behoben.
dort wird in der puts() wird fputs() ohne hinzufügen eines \n 
aufgerufen!
Es handelt sich um die at91lib Version 1.5!

Vielen Dank für deinen Hinweis!
Moderator Persönliche Seite #2711711
Lesenswert?

Karl Zeilhofer schrieb:
> Es handelt sich um die at91lib Version 1.5!

Dann solltet ihr wohl auch noch Atmel darüber berichten.  Ist mir
allerdings unklar, warum die überhaupt an stdio rumfummeln.  Ist
das von der newlib so schlecht?

> dort wird in der puts() wird fputs() ohne hinzufügen eines \n
> aufgerufen!

In so eine Richtung ging meine Vermutung schon, nachdem ich über
die Effekte nachgedacht hatte.  Ich wusste allerdings aus der
Vergangenheit (als ich das stdio für die avr-libc entworfen habe),
dass der Compiler rigoros ein printf("...\n") durch puts("...")
ersetzt.

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