This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
This code prints GOT :F: instead of GOT :15: in case of newlib was
configured with --enable-newlib-nano-formatted-io:
bash-4.3$ cat test.c && gcc -m32 test.c -I i386-elf/include/ -nostdlib
i386-elf/lib/libc.a i386-elf/lib/libnosys.a && ./a.out
#include <stdio.h>
int main()
{
char *in = "15\n";
unsigned int a;
sscanf(in, "%X\n", &a);
fprintf(stderr, "GOT :%X:\n", a);
return 0;
}
void __attribute__((noreturn)) exit(int code) {
for (;;)
asm volatile ("int $0x80" : : "a"(1), "b"(code));
}
int write(int fd, char* buf, int size)
{
asm volatile ("int $0x80" : : "a"(4), "b"(fd), "c"(buf), "d"(size));
}
void _start()
{
exit(main());
}
GOT :F:
The reason is trivial - missing case 'X': clause.
Please find the patch in attchment.
Thanks, Igor
Attachment:
0001-newlib-libc-stdio-nano-vfscanf.c-Fix-X-specifier-pro.patch
Description: Binary data
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |