123a124,132
> const std::map<const std::string, FILE *> ArmSemihosting::stdioMap{
> {"cin", ::stdin},
> {"stdin", ::stdin},
> {"cout", ::stdout},
> {"stdout", ::stdout},
> {"cerr", ::stderr},
> {"stderr", ::stderr},
> };
>
131c140,144
< semiErrno(0)
---
> semiErrno(0),
> stdin(getSTDIO("stdin", p->stdin, "r")),
> stdout(getSTDIO("stdout", p->stdout, "w")),
> stderr(p->stderr == p->stdout ?
> stdout : getSTDIO("stderr", p->stderr, "w"))
683a697,713
> FILE *
> ArmSemihosting::getSTDIO(const char *stream_name,
> const std::string &name, const char *mode)
> {
> auto it = stdioMap.find(name);
> if (it == stdioMap.end()) {
> FILE *f = fopen(name.c_str(), mode);
> if (!f) {
> fatal("Failed to open %s (%s): %s\n",
> stream_name, name, strerror(errno));
> }
> return f;
> } else {
> return it->second;
> }
> }
>
822c852
< file = stdin;
---
> file = parent.stdin;
824c854
< file = stdout;
---
> file = parent.stdout;
826c856
< file = stderr;
---
> file = parent.stderr;
860c890,892
< return file == stdout || file == stderr || file == stdin;
---
> return file == parent.stdout ||
> file == parent.stderr ||
> file == parent.stdin;