printf(), outbyte(), ...

Shaun Jackman sjackman@gmail.com
Sat Jun 3 20:31:00 GMT 2006


printf is probably calling _write (one underscore). Try that.

Cheers,
Shaun

On 6/2/06, Torsten Mohr <tmohr@s.netic.de> wrote:
> Hi,
>
> thanks for that hint.  Ok, i also tried that before.  I copied
> write from write.c:
>
> int _DEFUN (write, (fd, buf, nbytes), int fd _AND char *buf _AND int nbytes) {
>   int i;
>
>   outbyte('j');
>
>   for (i = 0; i < nbytes; i++) {
>     if (*(buf + i) == '\n') outbyte ('\r');
>
>     outbyte (*(buf + i));
>   }
>
>   return nbytes;
> }
>
> If i call it directly from main() i can see an output:
> write(1, "Hi world\n", 9);  // works fine
>
> But printf("Hello world\n") does not work at all.
>
> I've also generated a complete listing of my ELF file:
> v850e-unknown-elf-objdump -D file.elf >file.list
>
> In there i can see that there is a second __write.  Also when
> i overwrite this one i don't get no output.
>
> I've also overwritten some other functions and output a character
> to see if they get called.  None of them does.  Here's a list:
> close, fstat, getpid, isatty, kill, lseek, open, read, stat, unlink
> and write.
>
> I wonder if i need to initialise them somehow?
>
> Best regards,
> Torsten.



More information about the Newlib mailing list