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.
Danny -- Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info
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>
profile.tar.gz
Description: application/compressed-tar
signature.asc
Description: This is a digitally signed message part
------------------------------------------------------------------------- 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