[Bug target/47739] New: gcc 4.4.5 with target powerpc-wrs-vxworks fails to compile

richard_sharman at mitel dot com gcc-bugzilla@gcc.gnu.org
Mon Feb 14 21:52:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47739

           Summary: gcc 4.4.5 with target powerpc-wrs-vxworks fails to
                    compile
           Product: gcc
           Version: 4.4.5
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: target
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: richard_sharman@mitel.com


When building a cross compiler for powerpc-wrs-vxworks some files failed to
compile.
The config used was

../configure  \
           --target=powerpc-wrs-vxworks  \
         --disable-multilib --with-endian=big  \
         --enable-languages="c,c++" \
         -with-headers=$WIND_BASE/target/h \
         --disable-multilib \
         --enable-threads=vxworks

There were 3 problems:
* the vxworks include files for `open' require 3 parameters.
* there is no `access' functions in vxworks's unistd.h
* the vxworks mkdir only accepts 1 parameter.

I made the following changes to make the files compile.  

For the changes to open I didn't know what to #ifdef the code on so I
just added an extra parameter of 0.

The changes for acesss/mkdir were easier because F_OK is not defined
in the vxworks header.

Here is the context diff:

=== patch starts here
*** ./libssp/ssp.c.orig    Thu Apr  9 19:23:07 2009
--- ./libssp/ssp.c    Wed Feb  9 11:14:08 2011
***************
*** 72,78 ****
    if (__stack_chk_guard != 0)
      return;

!   fd = open ("/dev/urandom", O_RDONLY);
    if (fd != -1)
      {
        ssize_t size = read (fd, &__stack_chk_guard,
--- 72,78 ----
    if (__stack_chk_guard != 0)
      return;

!   fd = open ("/dev/urandom", O_RDONLY, 0);
    if (fd != -1)
      {
        ssize_t size = read (fd, &__stack_chk_guard,
***************
*** 102,108 ****

    /* Print error message directly to the tty.  This avoids Bad Things
       happening if stderr is redirected.  */
!   fd = open (_PATH_TTY, O_WRONLY);
    if (fd != -1)
      {
        static const char msg2[] = " terminated\n";
--- 102,108 ----

    /* Print error message directly to the tty.  This avoids Bad Things
       happening if stderr is redirected.  */
!   fd = open (_PATH_TTY, O_WRONLY, 0);
    if (fd != -1)
      {
        static const char msg2[] = " terminated\n";
*** ./gcc/libgcov.c.orig    Thu Apr  9 19:23:07 2009
--- ./gcc/libgcov.c    Wed Feb  9 11:12:17 2011
***************
*** 104,111 ****
      *s  = '\0';

          /* Try to make directory if it doesn't already exist.  */
!         if (access (filename, F_OK) == -1
              && mkdir (filename, 0755) == -1
              /* The directory might have been made by another process.  */
          && errno != EEXIST)
        {
--- 104,116 ----
      *s  = '\0';

          /* Try to make directory if it doesn't already exist.  */
!         if (
! #ifdef F_OK
!         access (filename, F_OK) == -1
              && mkdir (filename, 0755) == -1
+ #else
+         mkdir (filename)
+ #endif
              /* The directory might have been made by another process.  */
          && errno != EEXIST)
        {
*** ./gcc/gcov-io.c.orig    Wed Jun 25 20:25:08 2008
--- ./gcc/gcov-io.c    Wed Feb  9 11:11:06 2011
***************
*** 83,89 ****
  #endif
  #if GCOV_LOCKED
    if (mode > 0)
!     fd = open (name, O_RDWR);
    else
      fd = open (name, O_RDWR | O_CREAT, 0666);
    if (fd < 0)
--- 83,89 ----
  #endif
  #if GCOV_LOCKED
    if (mode > 0)
!     fd = open (name, O_RDWR, 0);
    else
      fd = open (name, O_RDWR | O_CREAT, 0666);
    if (fd < 0)
=== patch ends here

Richard



More information about the Gcc-bugs mailing list