diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-09-25 12:40:53 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-09-25 12:40:53 -0700 |
commit | 0d423cd35b930cbc70806e90a4583ad70d552a11 (patch) | |
tree | 5f03e253cd82bf5dbc540f01f0b51940485fa96b | |
parent | 2c342b0b0a937d537811f71047441c3f6e0b74f2 (diff) |
fix stdin/out/err for newlib; fixes files
-rw-r--r-- | src/library.js | 13 | ||||
-rw-r--r-- | src/settings.js | 8 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/library.js b/src/library.js index 8a14d63d..227015be 100644 --- a/src/library.js +++ b/src/library.js @@ -21,8 +21,9 @@ LibraryManager.library = { stdin: 0, stdout: 0, stderr: 0, + _impure_ptr: 0, - $FS__deps: ['$ERRNO_CODES', '__setErrNo', 'stdin', 'stdout', 'stderr'], + $FS__deps: ['$ERRNO_CODES', '__setErrNo', 'stdin', 'stdout', 'stderr', '_impure_ptr'], $FS__postset: 'FS.init();', $FS: { // The path to the current folder. @@ -392,6 +393,16 @@ LibraryManager.library = { _stdout = allocate([2], 'void*', ALLOC_STATIC); _stderr = allocate([3], 'void*', ALLOC_STATIC); + // Newlib initialization + FS.streams[_stdin] = FS.streams[1]; + FS.streams[_stdout] = FS.streams[2]; + FS.streams[_stderr] = FS.streams[3]; + __impure_ptr = allocate(5, "void*", ALLOC_STATIC); + var impure = getValue(__impure_ptr, "void*"); + setValue(impure + {{{ QUANTUM_SIZE }}}, _stdin, "void*"); + setValue(impure + {{{ QUANTUM_SIZE }}}*2, _stdout, "void*"); + setValue(impure + {{{ QUANTUM_SIZE }}}*3, _stderr, "void*"); + // Once initialized, permissions start having effect. FS.ignorePermissions = false; } diff --git a/src/settings.js b/src/settings.js index 392263df..0832dae1 100644 --- a/src/settings.js +++ b/src/settings.js @@ -123,8 +123,12 @@ INCLUDE_FULL_LIBRARY = 0; // Whether to include the whole library rather than ju // dynamically loading modules that make use of runtime // library functions that are not used in the main module. -C_DEFINES = {}; // A set of defines, for example generated from your header files. - // This lets the emscripten libc see the right values +// A set of defines, for example generated from your header files. This +// lets the emscripten libc (library.js) see the right values. +// The default value here has been generated from system/include. If you +// modify those files, or use different headers, you will need to override +// this. +C_DEFINES = {"S_IWRITE":"0000200", "_POSIX_CPUTIME":"1", "O_RDONLY":"0", "_POSIX_C_SOURCE":"2", "__FILENAME_MAX__":"255", "DEFFILEMODE":"0000400", "PTHREAD_PRIO_NONE":"0", "_S_IFMT":"0170000", "_O_TEXT":"131072", "_FNOINHERIT":"262144", "F_WRLCK":"2", "_POSIX_JOB_CONTROL":"1", "_FASYNC":"64", "__BUFSIZ__":"16", "S_IRUSR":"0000400", "F_UNLCK":"3", "_FDEFER":"32", "_O_EXCL":"2048", "AT_SYMLINK_NOFOLLOW":"2", "S_IFDIR":"0040000", "_POSIX_THREAD_ATTR_STACKSIZE":"200112", "_IFDIR":"0040000", "_POSIX_TIMERS":"1", "_IFLNK":"0120000", "FNDELAY":"16384", "_POSIX2_C_DEV":"200112", "_FCREAT":"512", "_POSIX_THREAD_CPUTIME":"1", "FAPPEND":"8", "O_CREAT":"512", "_POSIX_ADVISORY_INFO":"200112", "_MB_EXTENDED_CHARSETS_WINDOWS":"1", "_POSIX_V6_LPBIG_OFFBIG":"-1", "PTHREAD_MUTEX_ERRORCHECK":"2", "_XBS5_ILP32_OFF32":"-1", "_POSIX_THREAD_SPORADIC_SERVER":"1", "FD_CLOEXEC":"1", "F_DUPFD_CLOEXEC":"14", "_XBS5_LP64_OFF64":"-1", "_POSIX_SHARED_MEMORY_OBJECTS":"200112", "_POSIX_MEMORY_PROTECTION":"200112", "_POSIX_DEVCTL_DIRECTION":"1", "S_IRGRP":"0000040", "FDEFER":"32", "S_IFCHR":"0020000", "F_SETOWN":"6", "_POSIX_THREAD_PRIO_PROTECT":"1", "___int_least16_t_defined":"1", "PTHREAD_SCOPE_SYSTEM":"1", "S_ISGID":"0002000", "_POSIX_INTERRUPT_CONTROL":"1", "FEXCL":"2048", "PTHREAD_SCOPE_PROCESS":"0", "_S_IFDIR":"0040000", "F_RSETLK":"11", "_POSIX_READER_WRITER_LOCKS":"200112", "F_UNLKSYS":"4", "__RAND_MAX":"2147483647", "PTHREAD_CREATE_JOINABLE":"1", "_S_IFIFO":"0010000", "FEXLOCK":"256", "_FNDELAY":"16384", "_POSIX_SPORADIC_SERVER":"1", "_MB_EXTENDED_CHARSETS_ISO":"1", "PTHREAD_STACK_MIN":"200", "O_APPEND":"8", "_POSIX_DEVICE_CONTROL":"1", "_POSIX_V6_ILP32_OFF32":"-1", "_POSIX_SPIN_LOCKS":"200112", "O_NOCTTY":"32768", "UTIME_NOW":"-2", "O_ACCMODE":"3", "_FSHLOCK":"128", "_POSIX_REGEXP":"1", "___int_least32_t_defined":"1", "_UNIX98_THREAD_MUTEX_ATTRIBUTES":"1", "_FTRUNC":"1024", "_POSIX_BARRIERS":"200112", "_POSIX_FSYNC":"200112", "F_SETLKW":"9", "_POSIX_RAW_SOCKETS":"200112", "O_RDWR":"2", "FOPEN":"-1", "F_RGETLK":"10", "F_DUPFD":"0", "__LARGE64_FILES":"1", "_S_IFCHR":"0020000", "_XOPEN_SHM":"1", "AT_SYMLINK_FOLLOW":"4", "_S_IWRITE":"0000200", "FSYNC":"8192", "_POSIX_CHOWN_RESTRICTED":"1", "FNOCTTY":"32768", "__USE_XOPEN2K":"1", "PTHREAD_MUTEX_DEFAULT":"3", "_IFSOCK":"0140000", "_FNOCTTY":"32768", "_IFIFO":"0010000", "PTHREAD_PROCESS_PRIVATE":"0", "_IFREG":"0100000", "S_BLKSIZE":"1024", "_POSIX_VERSION":"200112", "O_TRUNC":"1024", "_O_CREAT":"512", "___int64_t_defined":"1", "S_IFREG":"0100000", "O_TEXT":"131072", "_POSIX_THREAD_PRIO_INHERIT":"1", "F_GETLK":"7", "S_IWOTH":"0000002", "F_GETFD":"1", "_XBS5_ILP32_OFFBIG":"1", "S_IFMT":"0170000", "_O_RDWR":"2", "_FREAD":"1", "F_GETFL":"3", "_FWRITE":"2", "F_RDLCK":"1", "S_IRWXO":"0000004", "SCHED_SPORADIC":"4", "S_IRWXU":"0000400", "_O_NOINHERIT":"262144", "_POSIX_THREAD_SAFE_FUNCTIONS":"200112", "_IFMT":"0170000", "_POSIX2_CHAR_TERM":"200112", "F_SETLK":"8", "S_IWUSR":"0000200", "FNBIO":"4096", "ALLPERMS":"0004000", "_POSIX_V6_LP64_OFF64":"-1", "_POSIX_MEMLOCK_RANGE":"200112", "PTHREAD_INHERIT_SCHED":"1", "F_RSETLKW":"13", "F_SETFD":"2", "S_IFLNK":"0120000", "___int16_t_defined":"1", "_S_IREAD":"0000400", "_FNONBLOCK":"16384", "F_SETFL":"4", "_POSIX_SHELL":"1", "FMARK":"16", "___int8_t_defined":"1", "_POSIX2_UPE":"200112", "MALLOC_ALIGNMENT":"16", "PTHREAD_MUTEX_RECURSIVE":"1", "PTHREAD_CREATE_DETACHED":"0", "_POSIX2_VERSION":"200112", "FWRITE":"2", "FREAD":"1", "O_CLOEXEC":"262144", "H8300":"1", "ITIMER_PROF":"2", "FNONBIO":"16384", "_FNBIO":"4096", "O_WRONLY":"1", "_POSIX_MONOTONIC_CLOCK":"200112", "O_NOINHERIT":"262144", "ACCESSPERMS":"0000400", "PTHREAD_EXPLICIT_SCHED":"2", "_POSIX_PRIORITIZED_IO":"1", "PATH_MAX":"4096", "F_CNVT":"12", "_POSIX_THREAD_PROCESS_SHARED":"200112", "_POSIX2_C_BIND":"200112", "SCHED_OTHER":"0", "FCREAT":"512", "_POSIX_SPAWN":"1", "S_IFIFO":"0010000", "_POSIX_MEMLOCK":"1", "S_ISVTX":"0001000", "SCHED_FIFO":"1", "S_IXUSR":"0000100", "UTIME_OMIT":"-1", "S_ENFMT":"0002000", "O_SYNC":"8192", "S_IRWXG":"0000040", "PTHREAD_PROCESS_SHARED":"1", "_IFBLK":"0060000", "_FEXLOCK":"256", "_XOPEN_VERSION":"600", "_POSIX_SYNCHRONIZED_IO":"200112", "S_IROTH":"0000004", "_POSIX_MAPPED_FILES":"200112", "FASYNC":"64", "ARG_MAX":"4096", "_POSIX_NO_TRUNC":"1", "_XOPEN_ENH_I18N":"1", "AT_EACCESS":"1", "F_GETOWN":"5", "PTHREAD_MUTEX_NORMAL":"0", "_FEXCL":"2048", "_O_TRUNC":"1024", "ITIMER_REAL":"0", "_S_IEXEC":"0000100", "_POSIX_ASYNCHRONOUS_IO":"1", "PTHREAD_PRIO_INHERIT":"1", "FTRUNC":"1024", "S_IXOTH":"0000001", "O_NONBLOCK":"16384", "FSHLOCK":"128", "___int32_t_defined":"1", "_POSIX2_RE_DUP_MAX":"255", "_O_APPEND":"8", "_FLOAT_ARG":"<type 'float'>", "_POSIX_MESSAGE_PASSING":"200112", "S_ISUID":"0004000", "_READ_WRITE_RETURN_TYPE":"<type 'int'>", "_O_WRONLY":"1", "_POSIX_THREAD_PRIORITY_SCHEDULING":"200112", "_S_IFREG":"0100000", "_O_BINARY":"65536", "_XOPEN_CRYPT":"1", "_O_RAW":"65536", "_FTEXT":"131072", "_POSIX2_SW_DEV":"200112", "_POSIX_PRIORITY_SCHEDULING":"200112", "_LARGEFILE64_SOURCE":"1", "_POINTER_INT":"<type 'long'>", "_POSIX_SEMAPHORES":"200112", "_IFCHR":"0020000", "_FMARK":"16", "_POSIX_IPV6":"200112", "S_IREAD":"0000400", "_LONG_LONG_TYPE":"<type 'long'>", "S_IFSOCK":"0140000", "___int_least8_t_defined":"1", "_POSIX_V6_ILP32_OFFBIG":"1", "_FBINARY":"65536", "_FOPEN":"-1", "_O_RDONLY":"0", "O_BINARY":"65536", "SCHED_RR":"2", "_FAPPEND":"8", "ITIMER_VIRTUAL":"1", "S_IXGRP":"0000010", "AT_REMOVEDIR":"8", "_XBS5_LPBIG_OFFBIG":"-1", "O_EXCL":"2048", "S_IFBLK":"0060000", "_POSIX_TIMEOUTS":"1", "_POSIX_THREAD_ATTR_STACKADDR":"1", "S_IWGRP":"0000020", "_POSIX_THREADS":"200112", "S_IEXEC":"0000100", "_POSIX_REALTIME_SIGNALS":"200112", "PTHREAD_PRIO_PROTECT":"2", "AT_FDCWD":"-2", "_FSYNC":"8192", "_POSIX_SAVED_IDS":"1"} SHOW_LABELS = 0; // Show labels in the generated code |