Danny Backx wrote:
> Second set of patches included.
> 
> My option would be to get this in SVN, then continue work on the getenv
> replacement and command line option.
> 

Ok, go ahead.

Cheers,
Pedro Alves


>       Danny
> 
> 
> ------------------------------------------------------------------------
> 
> Index: mingw/ChangeLog.mingw32ce
> ===================================================================
> --- mingw/ChangeLog.mingw32ce (revision 847)
> +++ mingw/ChangeLog.mingw32ce (working copy)
> @@ -1,3 +1,9 @@
> +2006-12-29  Danny Backx  <[EMAIL PROTECTED]>
> +
> +     * profile/gmon.c : Rewrite to avoid stdio, use native WinCE I/O
> +     instead. Stdio doesn't work reliably in these conditions (maybe due to
> +     the use of an atexit handler).
> +
>  2006-12-19  Pedro Alves  <[EMAIL PROTECTED]>
>  
>       * dllmain.c: Call DisableThreadLibraryCalls on DLL_PROCESS_ATTACH.
> Index: mingw/configure.in
> ===================================================================
> --- mingw/configure.in        (revision 847)
> +++ mingw/configure.in        (working copy)
> @@ -54,7 +54,7 @@
>  
>  W32API_INCLUDE='-I $(srcdir)/../w32api/include'
>  
> -AC_CONFIG_SUBDIRS(profile mingwex)
> +AC_CONFIG_SUBDIRS(mingwex)
>  
>  case "$target_os" in
>  *cygwin*)
> Index: cegcc/cegccdll/Makefile
> ===================================================================
> --- cegcc/cegccdll/Makefile   (revision 847)
> +++ cegcc/cegccdll/Makefile   (working copy)
> @@ -96,6 +96,7 @@
>       rm -f ${MY_DIR}/$(IMPLIB)
>       rm -f ${MY_DIR}/$(IMPLIB).tmp
>       $(AR) q ${MY_DIR}/$(IMPLIB) ${MY_DIR}/_tmp_static/*.o
> +     rm -f ${MY_DIR}/_tmp/_eprintf.o
>       $(CC) -o $@ $(LDFLAGS) -shared -nostdlib \
>       -Wl,--whole-archive ${MY_DIR}/_tmp/*.o ${LIB_PATH}/dllcrt1.o \
>       -Wl,--no-whole-archive -lcegcc -lcoredll -liphlpapi \
> Index: build-mingw32ce.sh
> ===================================================================
> --- build-mingw32ce.sh        (revision 847)
> +++ build-mingw32ce.sh        (working copy)
> @@ -180,6 +180,7 @@
>       --disable-interwork            \
>       --without-newlib               \
>       --enable-checking              \
> +     --with-headers                 \
>       || exit
>  
>  # we build libstdc++ as dll, so we don't need this.    
> @@ -271,6 +272,30 @@
>      tar cf - images | (cd ${PREFIX}/share; tar xf -) || exit 1
>  }
>  
> +function build_profile()
> +{
> +    echo ""
> +    echo "BUILDING profiling libraries --------------------------"
> +    echo ""
> +    echo ""
> +
> +    mkdir -p ${BUILD_DIR}/profile || exit 1
> +    cd ${BUILD_DIR}/profile || exit 1
> +
> +    PREV_CFLAGS=${CFLAGS}
> +    export CFLAGS="-DNO_UNDERSCORES" 
> +
> +    ${BASE_DIRECTORY}/profile/configure  \
> +     --host=${TARGET}             \
> +     --prefix=${PREFIX}             \
> +     || exit
> +
> +    export CFLAGS=${PREV_CFLAGS}
> +
> +    make         || exit 1
> +    make install || exit 1
> +}
> +
>  function build_all
>  {
>      build_binutils
> @@ -280,9 +305,10 @@
>      build_bootstrap_gcc
>      build_mingw_runtime
>      build_gcc
> +    build_docs
> +    build_profile
>      build_gdb
>      build_gdbstub
> -    build_docs
>  }
>  
>  case $BUILD_OPT in
> @@ -301,6 +327,7 @@
>   gdb) build_gdb ;;
>   gdbstub) build_gdbstub ;;
>   docs) build_docs ;;
> + profile) build_profile ;;
>   all) build_all ;;
>   *) echo "Please enter a valid build option." ;;
>  esac
> Index: ChangeLog
> ===================================================================
> --- ChangeLog (revision 847)
> +++ ChangeLog (working copy)
> @@ -1,3 +1,9 @@
> +2006-12-24  Danny Backx <[EMAIL PROTECTED]>
> +
> +     * build-mingw32ce.sh, build-cegcc.sh (build_profile) : Add.
> +     * build-mingw32ce.sh, build-cegcc.sh (build_gcc) : Add --with-headers
> +     option so -Dinhibit_libc isn't triggered.
> +
>  2006-12-19  Pedro Alves  <[EMAIL PROTECTED]>
>  
>       * build-mingw32ce.sh (build-w32api): New function.
> Index: build-cegcc.sh
> ===================================================================
> --- build-cegcc.sh    (revision 847)
> +++ build-cegcc.sh    (working copy)
> @@ -165,6 +165,7 @@
>       --disable-interwork            \
>       --without-newlib               \
>       --enable-checking              \
> +     --with-headers                 \
>       || exit 1
>  
>  
> @@ -277,6 +278,30 @@
>      cd ${BASE_DIRECTORY} || exit 1
>  }
>  
> +function build_profile()
> +{
> +    echo ""
> +    echo "BUILDING profiling libraries --------------------------"
> +    echo ""
> +    echo ""
> +
> +    mkdir -p ${BUILD_DIR}/profile || exit 1
> +    cd ${BUILD_DIR}/profile || exit 1
> +
> +    PREV_CFLAGS=${CFLAGS}
> +    export CFLAGS="-DNO_UNDERSCORES"
> +
> +    ${BASE_DIRECTORY}/profile/configure  \
> +     --host=${TARGET}             \
> +     --prefix=${PREFIX}             \
> +     || exit
> +
> +    export CFLAGS=${PREV_CFLAGS}
> +
> +    make         || exit 1
> +    make install || exit 1
> +}
> +
>  function build_docs()
>  {
>      echo ""
> @@ -293,7 +318,7 @@
>      tar cf - images | (cd ${PREFIX}/share; tar xf -) || exit 1
>  }
>  
> -function buildall()
> +function build_all()
>  {
>      build_binutils
>      build_import_libs
> @@ -305,9 +330,10 @@
>      build_cegccdll
>      build_cegccthrddll
>      build_libstdcppdll
> +    build_profile
> +    build_docs
>      build_gdb
>      build_gdbstub
> -    build_docs
>  }
>  
>  case $BUILD_OPT in
> @@ -328,7 +354,8 @@
>   gdb) build_gdb ;;
>   gdbstub) build_gdbstub ;;
>   docs) build_docs ;;
> - all) buildall ;;
> + profile) build_profile ;;
> + all) build_all ;;
>   *) echo "Please enter a valid build option." ;;
>  esac
>  
> Index: gcc/gcc/doc/gcov.texi
> ===================================================================
> --- gcc/gcc/doc/gcov.texi     (revision 847)
> +++ gcc/gcc/doc/gcov.texi     (working copy)
> @@ -544,7 +544,8 @@
>  to create the needed directory structure, if it is not already present.
>  
>  To support cross-profiling, a program compiled with @option{-fprofile-arcs}
> -can relocate the data files based on two environment variables: 
> +can relocate the data files based on two environment variables on the target
> +platform, or one on the host platform: 
>  
>  @itemize @bullet
>  @item
> @@ -558,6 +559,11 @@
>  
>  @emph{Note:} GCOV_PREFIX_STRIP has no effect if GCOV_PREFIX is undefined, 
> empty
>  or non-absolute.
> +
> [EMAIL PROTECTED]
> +GCOV_CROSS_PREFIX is a host platform environment variable. Use it to specify
> +a target directory to prefix the compiled file name with, replacing the
> +compile directory.
>  @end itemize
>  
>  For example, if the object file @file{/user/build/foo.o} was built with
> @@ -568,6 +574,13 @@
>  @samp{GCOV_PREFIX=/target/run} and @samp{GCOV_PREFIX_STRIP=1}.  Such a
>  setting will name the data file @file{/target/run/build/foo.gcda}.
>  
> +Alternatively, you can set @samp{GCOV_CROSS_PREFIX=/target/run/build} when
> +compiling, to achieve the same effect. The object file will no longer contain
> +the information @file{/user/build/foo.o} but @file{/target/run/build/foo.o}.
> +
> +The host and target mechanisms are independent of each other, so they can be
> +used together.
> +
>  You must move the data files to the expected directory tree in order to
>  use them for profile directed optimizations (@option{--use-profile}), or to
>  use the @command{gcov} tool.
> Index: gcc/gcc/ChangeLog.ce
> ===================================================================
> --- gcc/gcc/ChangeLog.ce      (revision 847)
> +++ gcc/gcc/ChangeLog.ce      (working copy)
> @@ -1,3 +1,21 @@
> +2006-12-21  Danny Backx  <[EMAIL PROTECTED]>
> +
> +     * config/arm/t-strongarm-pe config/arm/t-strongarm-elf config/arm/t-pe
> +     config/arm/t-arm-elf config/arm/t-xscale-elf config/arm/t-xscale-coff
> +     config/arm/t-arm-coff config/arm/t-wince-pe : Remove inhibit_libc .
> +
> +     * coverage.c (build_gcov_info) : Add more support for dealing with
> +     directory names in cross-debugging environment. Main difference
> +     is that this is specified on the host, not the target platform.
> +
> +     * doc/gcov.texi : Add documentation for GCOV_CROSS_PREFIX.
> +
> +     * tsystem.h : Don't include <errno.h> when __MINGW32CE__ is defined.
> +
> +     * gcov-io.c (gcov_open) : Call setvbuf instead of setbuf in mingw32ce.
> +
> +     * libgcov.c (gcov_exit) : Don't call getenv and setenv in mingw32ce.
> +
>  2006-12-03  Pedro Alves  <[EMAIL PROTECTED]>
>  
>       * config/arm/arm.c (arm_major_arch, arm_thumb_arch_p): New
> Index: gcc/gcc/gcov-io.c
> ===================================================================
> --- gcc/gcc/gcov-io.c (revision 847)
> +++ gcc/gcc/gcov-io.c (working copy)
> @@ -134,7 +134,11 @@
>      return 0;
>  #endif
>  
> +#ifdef       __MINGW32CE__
> +  setvbuf (gcov_var.file, (char *)0, _IONBF, (size_t)0);
> +#else
>    setbuf (gcov_var.file, (char *)0);
> +#endif
>    
>    return 1;
>  }
> Index: gcc/gcc/coverage.c
> ===================================================================
> --- gcc/gcc/coverage.c        (revision 847)
> +++ gcc/gcc/coverage.c        (working copy)
> @@ -776,6 +776,7 @@
>    unsigned n_fns;
>    const struct function_list *fn;
>    tree string_type;
> +  char *gcov_cross_prefix;
>  
>    /* Count the number of active counters.  */
>    for (n_ctr_types = 0, ix = 0; ix != GCOV_COUNTERS; ix++)
> @@ -811,12 +812,26 @@
>    field = build_decl (FIELD_DECL, NULL_TREE, string_type);
>    TREE_CHAIN (field) = fields;
>    fields = field;
> -  filename = getpwd ();
> -  filename = (filename && da_file_name[0] != '/'
> +
> +  /*
> +   * Additional environment variable for cross-development.
> +   */
> +  if (gcov_cross_prefix = getenv ("GCOV_CROSS_PREFIX"))
> +    {
> +      filename = concat (gcov_cross_prefix, "/", da_file_name, NULL);
> +      filename_len = strlen (filename);
> +      filename_string = build_string (filename_len + 1, filename);
> +    }
> +  else
> +    {
> +      filename = getpwd ();
> +      filename = (filename && da_file_name[0] != '/'
>             ? concat (filename, "/", da_file_name, NULL)
>             : da_file_name);
> -  filename_len = strlen (filename);
> -  filename_string = build_string (filename_len + 1, filename);
> +      filename_len = strlen (filename);
> +      filename_string = build_string (filename_len + 1, filename);
> +    }
> +
>    if (filename != da_file_name)
>      free (filename);
>    TREE_TYPE (filename_string) = build_array_type
> Index: gcc/gcc/libgcov.c
> ===================================================================
> --- gcc/gcc/libgcov.c (revision 847)
> +++ gcc/gcc/libgcov.c (working copy)
> @@ -194,6 +194,12 @@
>       }
>      }
>  
> +#ifdef       __MINGW32CE__
> +  /* No getenv support, so disable this. */
> +  gcov_prefix = (char *)0;
> +  gcov_prefix_strip = 0;
> +  prefix_length = 0;
> +#else
>    /* Get file name relocation prefix.  Non-absolute values are ignored. */
>    gcov_prefix = getenv("GCOV_PREFIX");
>    if (gcov_prefix && IS_ABSOLUTE_PATH (gcov_prefix))
> @@ -216,6 +222,7 @@
>      }
>    else
>      prefix_length = 0;
> +#endif
>    
>    /* Allocate and initialize the filename scratch space.  */
>    gi_filename = alloca (prefix_length + gcov_max_filename + 1);
> @@ -310,6 +317,15 @@
>             continue;
>           }
>  #endif
> +#ifdef       UNDER_CE
> +       {
> +            wchar_t  x[256];
> +         int         l = strlen(gi_filename);
> +         l = (l < 256) ? l : 255;
> +         wcstombs(x, gi_filename, l);
> +         MessageBoxW(0, L"gcov_open", x, 0);
> +       }
> +#endif
>         if (!gcov_open (gi_filename))
>           {
>                fprintf (stderr, "profiling:%s:Cannot open\n", gi_filename);
> Index: gcc/gcc/config/arm/t-strongarm-pe
> ===================================================================
> --- gcc/gcc/config/arm/t-strongarm-pe (revision 847)
> +++ gcc/gcc/config/arm/t-strongarm-pe (working copy)
> @@ -35,4 +35,4 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
> Index: gcc/gcc/config/arm/t-strongarm-elf
> ===================================================================
> --- gcc/gcc/config/arm/t-strongarm-elf        (revision 847)
> +++ gcc/gcc/config/arm/t-strongarm-elf        (working copy)
> @@ -32,7 +32,7 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
>  
>  # Assemble startup files.
>  $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
> Index: gcc/gcc/config/arm/t-pe
> ===================================================================
> --- gcc/gcc/config/arm/t-pe   (revision 847)
> +++ gcc/gcc/config/arm/t-pe   (working copy)
> @@ -47,4 +47,3 @@
>  
>  LIBGCC = stmp-multilib
>  INSTALL_LIBGCC = install-multilib
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc
> Index: gcc/gcc/config/arm/t-xscale-elf
> ===================================================================
> --- gcc/gcc/config/arm/t-xscale-elf   (revision 847)
> +++ gcc/gcc/config/arm/t-xscale-elf   (working copy)
> @@ -54,7 +54,7 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
>  
>  # Assemble startup files.
>  $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
> Index: gcc/gcc/config/arm/t-arm-elf
> ===================================================================
> --- gcc/gcc/config/arm/t-arm-elf      (revision 847)
> +++ gcc/gcc/config/arm/t-arm-elf      (working copy)
> @@ -67,7 +67,7 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
>  
>  # Assemble startup files.
>  $(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
> Index: gcc/gcc/config/arm/t-xscale-coff
> ===================================================================
> --- gcc/gcc/config/arm/t-xscale-coff  (revision 847)
> +++ gcc/gcc/config/arm/t-xscale-coff  (working copy)
> @@ -42,4 +42,4 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
> Index: gcc/gcc/config/arm/t-arm-coff
> ===================================================================
> --- gcc/gcc/config/arm/t-arm-coff     (revision 847)
> +++ gcc/gcc/config/arm/t-arm-coff     (working copy)
> @@ -31,4 +31,4 @@
>  # Currently there is a bug somewhere in GCC's alias analysis
>  # or scheduling code that is breaking _fpmul_parts in fp-bit.c.
>  # Disabling function inlining is a workaround for this problem.
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc -fno-inline
> +TARGET_LIBGCC2_CFLAGS = -fno-inline
> Index: gcc/gcc/config/arm/t-wince-pe
> ===================================================================
> --- gcc/gcc/config/arm/t-wince-pe     (revision 847)
> +++ gcc/gcc/config/arm/t-wince-pe     (working copy)
> @@ -55,4 +55,4 @@
>  LIBGCC = stmp-multilib
>  INSTALL_LIBGCC = install-multilib
>  
> -TARGET_LIBGCC2_CFLAGS = -Dinhibit_libc
> +TARGET_LIBGCC2_CFLAGS =
> Index: gcc/gcc/tsystem.h
> ===================================================================
> --- gcc/gcc/tsystem.h (revision 847)
> +++ gcc/gcc/tsystem.h (working copy)
> @@ -92,12 +92,14 @@
>  /* All systems have this header.  */
>  #include <sys/types.h>
>  
> -/* All systems have this header.  */
> +#ifndef      __MINGW32CE__
> +/* All systems except Windows CE have this header.  */
>  #include <errno.h>
>  
>  #ifndef errno
>  extern int errno;
>  #endif
> +#endif
>  
>  /* GCC (fixproto) guarantees these system headers exist.  */
>  #include <string.h>
> 
> 
> ------------------------------------------------------------------------
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Cegcc-devel mailing list
> Cegcc-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/cegcc-devel


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Cegcc-devel mailing list
Cegcc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cegcc-devel

Reply via email to