[meta-xilinx] [RFC] glibc_2.24.bbappend: Fix compiler error for MB
Manjukumar Matha
manjukumar.harthikote-matha at xilinx.com
Mon Jul 11 15:11:47 PDT 2016
MB is failing to compile stating "ret" variable is a register. However renaming
the variable from ret to any other name fixes this issue. I think it might be a
GCC issue, but I am unable to re-create this corner case to report it to GCC.
Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha at xilinx.com>
---
.../glibc/files/microblaze-gcc-ret-fix.patch | 120 +++++++++++++++++++++
recipes-microblaze/glibc/glibc_2.24.bbappend | 5 +
2 files changed, 125 insertions(+)
create mode 100644 recipes-microblaze/glibc/files/microblaze-gcc-ret-fix.patch
create mode 100644 recipes-microblaze/glibc/glibc_2.24.bbappend
diff --git a/recipes-microblaze/glibc/files/microblaze-gcc-ret-fix.patch b/recipes-microblaze/glibc/files/microblaze-gcc-ret-fix.patch
new file mode 100644
index 0000000..12ed783
--- /dev/null
+++ b/recipes-microblaze/glibc/files/microblaze-gcc-ret-fix.patch
@@ -0,0 +1,120 @@
+diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
+index ee05de5..08aecee 100644
+--- a/sysdeps/unix/sysv/linux/spawni.c
++++ b/sysdeps/unix/sysv/linux/spawni.c
+@@ -126,7 +126,7 @@ __spawni_child (void *arguments)
+ const posix_spawnattr_t *restrict attr = args->attr;
+ const posix_spawn_file_actions_t *file_actions = args->fa;
+ int p = args->pipe[1];
+- int ret;
++ int retVal;
+
+ close_not_cancel (args->pipe[0]);
+
+@@ -171,25 +171,25 @@ __spawni_child (void *arguments)
+ if ((attr->__flags & (POSIX_SPAWN_SETSCHEDPARAM | POSIX_SPAWN_SETSCHEDULER))
+ == POSIX_SPAWN_SETSCHEDPARAM)
+ {
+- if ((ret = __sched_setparam (0, &attr->__sp)) == -1)
++ if ((retVal = __sched_setparam (0, &attr->__sp)) == -1)
+ goto fail;
+ }
+ else if ((attr->__flags & POSIX_SPAWN_SETSCHEDULER) != 0)
+ {
+- if ((ret = __sched_setscheduler (0, attr->__policy, &attr->__sp)) == -1)
++ if ((retVal = __sched_setscheduler (0, attr->__policy, &attr->__sp)) == -1)
+ goto fail;
+ }
+ #endif
+
+ /* Set the process group ID. */
+ if ((attr->__flags & POSIX_SPAWN_SETPGROUP) != 0
+- && (ret = __setpgid (0, attr->__pgrp)) != 0)
++ && (retVal = __setpgid (0, attr->__pgrp)) != 0)
+ goto fail;
+
+ /* Set the effective user and group IDs. */
+ if ((attr->__flags & POSIX_SPAWN_RESETIDS) != 0
+- && ((ret = local_seteuid (__getuid ())) != 0
+- || (ret = local_setegid (__getgid ())) != 0))
++ && ((retVal = local_seteuid (__getuid ())) != 0
++ || (retVal = local_setegid (__getgid ())) != 0))
+ goto fail;
+
+ /* Execute the file actions. */
+@@ -209,15 +209,15 @@ __spawni_child (void *arguments)
+ || (action->action.open_action.fd == p)
+ || (action->action.dup2_action.fd == p))
+ {
+- if ((ret = __dup (p)) < 0)
++ if ((retVal = __dup (p)) < 0)
+ goto fail;
+- p = ret;
++ p = retVal;
+ }
+
+ switch (action->tag)
+ {
+ case spawn_do_close:
+- if ((ret =
++ if ((retVal =
+ close_not_cancel (action->action.close_action.fd)) != 0)
+ {
+ if (!have_fdlimit)
+@@ -235,31 +235,31 @@ __spawni_child (void *arguments)
+
+ case spawn_do_open:
+ {
+- ret = open_not_cancel (action->action.open_action.path,
++ retVal = open_not_cancel (action->action.open_action.path,
+ action->action.
+ open_action.oflag | O_LARGEFILE,
+ action->action.open_action.mode);
+
+- if (ret == -1)
++ if (retVal == -1)
+ goto fail;
+
+- int new_fd = ret;
++ int new_fd = retVal;
+
+ /* Make sure the desired file descriptor is used. */
+- if (ret != action->action.open_action.fd)
++ if (retVal != action->action.open_action.fd)
+ {
+- if ((ret = __dup2 (new_fd, action->action.open_action.fd))
++ if ((retVal = __dup2 (new_fd, action->action.open_action.fd))
+ != action->action.open_action.fd)
+ goto fail;
+
+- if ((ret = close_not_cancel (new_fd)) != 0)
++ if ((retVal = close_not_cancel (new_fd)) != 0)
+ goto fail;
+ }
+ }
+ break;
+
+ case spawn_do_dup2:
+- if ((ret = __dup2 (action->action.dup2_action.fd,
++ if ((retVal = __dup2 (action->action.dup2_action.fd,
+ action->action.dup2_action.newfd))
+ != action->action.dup2_action.newfd)
+ goto fail;
+@@ -280,13 +280,13 @@ __spawni_child (void *arguments)
+ (2.15). */
+ maybe_script_execute (args);
+
+- ret = -errno;
++ retVal = -errno;
+
+ fail:
+ /* Since sizeof errno < PIPE_BUF, the write is atomic. */
+- ret = -ret;
+- if (ret)
+- while (write_not_cancel (p, &ret, sizeof ret) < 0)
++ retVal = -retVal;
++ if (retVal)
++ while (write_not_cancel (p, &retVal, sizeof retVal) < 0)
+ continue;
+ exit (SPAWN_ERROR);
+ }
diff --git a/recipes-microblaze/glibc/glibc_2.24.bbappend b/recipes-microblaze/glibc/glibc_2.24.bbappend
new file mode 100644
index 0000000..bf54619
--- /dev/null
+++ b/recipes-microblaze/glibc/glibc_2.24.bbappend
@@ -0,0 +1,5 @@
+# Add MicroBlaze Patches
+FILESEXTRAPATHS_append := "${THISDIR}/files:"
+SRC_URI_append_microblaze = " \
+ file://microblaze-gcc-ret-fix.patch \
+ "
--
2.7.4
More information about the meta-xilinx
mailing list