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
> [email protected]
> 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/cegcc-devel