This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
>>>>> "pmi" == Peer Moeller Ilsoe <ilsoe@kom.auc.dk> writes: pmi> I want thank everyone who responded to my double <-> string pmi> conversion problem. It seems that sscanf() and sprintf() do the pmi> job just fine -at least on our unix machines. Now when I try to pmi> cross-compile with the newlib 1.8 libraries (libm, libc, and pmi> libgcc) the linker goes: pmi> makebuf.c:93: undefined reference to `isatty' pmi> sbrkr.c:61: undefined reference to `sbrk' pmi> fstatr.c:61: undefined reference to `fstat' pmi> readr.c:58: undefined reference to `read' pmi> lseekr.c:58: undefined reference to `lseek' pmi> writer.c:58: undefined reference to `write' pmi> closer.c:53: undefined reference to `close' pmi> Can anybody tell me weather I have to write these functions pmi> myself or are they already implemented somewhere? Can they be pmi> stubbed out if I'm not going to use any kind of std I/O? What pmi> should the functions do if they can't be stubbed out? I just pmi> need a minimal system, which will make the conversion work. Using the stdio functionality will bring in references to those components that it relies on -- the underlying OS interface. You have to attach it to those functions, or stub them out with something like:- /* typedef long off_t; */ /* typedef long ptrdiff_t; */ /* Most things return failure. */ int isatty(int fd) { return 0; } int fstat(int fd, struct stat *p) { return -1; } int read(int fd, void *p, size_t n) { return 0; } int write(int fd, void *p, size_t n) { return 0; } off_t lseek(int fd, off_t offset, int whence) { return -1; } /* close() will succeed for std{in,out,err} */ int close(int fd) { return (fd < 3) ? 0 : -1; } /* Memory allocation: this you really DO have to write, I think. */ void *sbrk(ptrdiff_t increment) { #error WRITE ME }