On Wed, Mar 25, 2015 at 1:26 AM, Andreas Färber <afaer...@suse.de> wrote: > Am 24.03.2015 um 00:36 schrieb Alexander von Gluck IV: >> >> diff --git a/target-xtensa/xtensa-semi.c b/target-xtensa/xtensa-semi.c >> index 16e9d8c..d0ea12a 100644 >> --- a/target-xtensa/xtensa-semi.c >> +++ b/target-xtensa/xtensa-semi.c >> @@ -95,59 +95,53 @@ enum { >> >> static uint32_t errno_h2g(int host_errno) >> { >> - static const uint32_t guest_errno[] = { >> - [EPERM] = TARGET_EPERM, >> - [ENOENT] = TARGET_ENOENT, >> - [ESRCH] = TARGET_ESRCH, >> - [EINTR] = TARGET_EINTR, >> - [EIO] = TARGET_EIO, >> - [ENXIO] = TARGET_ENXIO, >> - [E2BIG] = TARGET_E2BIG, >> - [ENOEXEC] = TARGET_ENOEXEC, >> - [EBADF] = TARGET_EBADF, >> - [ECHILD] = TARGET_ECHILD, >> - [EAGAIN] = TARGET_EAGAIN, >> - [ENOMEM] = TARGET_ENOMEM, >> - [EACCES] = TARGET_EACCES, >> - [EFAULT] = TARGET_EFAULT, >> + switch (host_errno) { >> + case 0: return 0; >> + case EPERM: return TARGET_EPERM; >> + case ENOENT: return TARGET_ENOENT; >> + case ESRCH: return TARGET_ESRCH; >> + case EINTR: return TARGET_EINTR; >> + case EIO: return TARGET_EIO; >> + case ENXIO: return TARGET_ENXIO; >> + case E2BIG: return TARGET_E2BIG; >> + case ENOEXEC: return TARGET_ENOEXEC; >> + case EBADF: return TARGET_EBADF; >> + case ECHILD: return TARGET_ECHILD; >> + case EAGAIN: return TARGET_EAGAIN; >> + case ENOMEM: return TARGET_ENOMEM; >> + case EACCES: return TARGET_EACCES; >> + case EFAULT: return TARGET_EFAULT; >> #ifdef ENOTBLK >> - [ENOTBLK] = TARGET_ENOTBLK, >> + case ENOTBLK: return TARGET_ENOTBLK; >> #endif >> - [EBUSY] = TARGET_EBUSY, >> - [EEXIST] = TARGET_EEXIST, >> - [EXDEV] = TARGET_EXDEV, >> - [ENODEV] = TARGET_ENODEV, >> - [ENOTDIR] = TARGET_ENOTDIR, >> - [EISDIR] = TARGET_EISDIR, >> - [EINVAL] = TARGET_EINVAL, >> - [ENFILE] = TARGET_ENFILE, >> - [EMFILE] = TARGET_EMFILE, >> - [ENOTTY] = TARGET_ENOTTY, >> + case EBUSY: return TARGET_EBUSY; >> + case EEXIST: return TARGET_EEXIST; >> + case EXDEV: return TARGET_EXDEV; >> + case ENODEV: return TARGET_ENODEV; >> + case ENOTDIR: return TARGET_ENOTDIR; >> + case EISDIR: return TARGET_EISDIR; >> + case EINVAL: return TARGET_EINVAL; >> + case ENFILE: return TARGET_ENFILE; >> + case EMFILE: return TARGET_EMFILE; >> + case ENOTTY: return TARGET_ENOTTY; > > Why convert from array to switch statement? It looks like a very > invasive change for no obvious reason.
I'd be interested to know the reason too, but I'm OK with either way. >> #ifdef ETXTBSY >> - [ETXTBSY] = TARGET_ETXTBSY, >> + case ETXTBSY: return TARGET_ETXTBSY; >> #endif >> - [EFBIG] = TARGET_EFBIG, >> - [ENOSPC] = TARGET_ENOSPC, >> - [ESPIPE] = TARGET_ESPIPE, >> - [EROFS] = TARGET_EROFS, >> - [EMLINK] = TARGET_EMLINK, >> - [EPIPE] = TARGET_EPIPE, >> - [EDOM] = TARGET_EDOM, >> - [ERANGE] = TARGET_ERANGE, >> - [ENOSYS] = TARGET_ENOSYS, >> + case EFBIG: return TARGET_EFBIG; >> + case ENOSPC: return TARGET_ENOSPC; >> + case ESPIPE: return TARGET_ESPIPE; >> + case EROFS: return TARGET_EROFS; >> + case EMLINK: return TARGET_EMLINK; >> + case EPIPE: return TARGET_EPIPE; >> + case EDOM: return TARGET_EDOM; >> + case ERANGE: return TARGET_ERANGE; >> + case ENOSYS: return TARGET_ENOSYS; >> #ifdef ELOOP >> - [ELOOP] = TARGET_ELOOP, >> + case ELOOP: return TARGET_ELOOP; >> #endif >> }; No need for semicolon here. -- Thanks. -- Max