summaryrefslogtreecommitdiff
path: root/packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch')
-rw-r--r--packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch385
1 files changed, 0 insertions, 385 deletions
diff --git a/packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch b/packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch
deleted file mode 100644
index 0f1cf2040b..0000000000
--- a/packages/gcc/gcc-3.4.3/GCOV_PREFIX_STRIP-cross-profile_3.4.patch
+++ /dev/null
@@ -1,385 +0,0 @@
-2005-05-04 Grigory Zagorodnev <grigory.zagorodnev@intel.com>
- H.J. Lu <hongjiu.lu@intel.com>
-
-
- Cross-profiling support: relocate .gcda files when
- running at system other than executable been built on.
-
-
- * gcov-io.c (gcov_open): When in libgcov library
- use given data file relocation prefix to build file name.
- * gcov-io.h (gcov_open): Updated proto to accept
- data file relocation prefix.
- * libgcov.c (create_file_directory): New function.
- (gcov_prefix): New static variable to hold data file
- relocation prefix.
- (gcov_version): Use relocation prefix.
- (gcov_exit): Always try to create directory for output
- file. Relocate filename at each use.
- (__gcov_init): Initialize directory relocation prefix
- if required. Strip off leading directories from
- the initial filename.
- * tsystem.h: include filenames.h
- (DIR_SEPARATOR): Macro copied from system.h.
- (DIR_SEPARATOR_2): Likewise.
- * doc/gcov.texi (Cross-profiling): New node documenting
- cross-profiling management.
- * doc/invoke.texi (-fprofile-arcs): xref to cross-profiling.
-
-Grigory Zagorodnev
-Intel Corporation
-
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/doc/gcov.texi gcc-3.4.3/gcc/doc/gcov.texi
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/doc/gcov.texi 2004-03-14 15:31:20.000000000 -0700
-+++ gcc-3.4.3/gcc/doc/gcov.texi 2006-05-08 10:17:54.000000000 -0600
-@@ -42,6 +42,7 @@
- * Invoking Gcov:: How to use gcov.
- * Gcov and Optimization:: Using gcov with GCC optimization.
- * Gcov Data Files:: The files used by gcov.
-+* Cross-profiling:: Data files relocation.
- @end menu
-
- @node Gcov Intro
-@@ -510,3 +511,36 @@
- The full details of the file format is specified in @file{gcov-io.h},
- and functions provided in that header file should be used to access the
- coverage files.
-+
-+@node Cross-profiling
-+@section Data files relocation to support cross-profiling
-+
-+Running the program will cause profile output to be generated. For each
-+source file compiled with @option{-fprofile-arcs}, an accompanying @file{.gcda}
-+file will be placed in the object file directory. That implicitly requires
-+running the program at the same system as it was build or having same
-+absolute directory structure on the target system (program will try
-+to create needed directory structure).
-+
-+To support cross-profiling, program compiled with @option{-fprofile-arcs}
-+performs data file relocation basing on two environment variables:
-+
-+@itemize @bullet
-+@item
-+GCOV_PREFIX contains the prefix to add to the absolute paths
-+in the object file.
-+
-+@item
-+GCOV_PREFIX_STRIP indicates the how many initial directory names to strip off
-+the hardwired absolute paths. Default value is 0.
-+@end itemize
-+
-+For example, if object file @file{/user/build/foo.o} was build with
-+@option{-fprofile-arcs}, the final executable will try to create data file
-+@file{/user/build/foo.gcda} when running at the target system and will
-+fail if corresponding directory does not exists and is not allowed to create.
-+
-+In this case, manipulating environment variables you can relocate data file
-+to the suitable local directory. For our example, setting @samp{GCOV_PREFIX=/target/run}
-+and @samp{GCOV_PREFIX_STRIP=1} values will force use of @file{/target/run/build/foo.gcda}
-+file name.
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/doc/invoke.texi gcc-3.4.3/gcc/doc/invoke.texi
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/doc/invoke.texi 2006-05-08 10:14:43.000000000 -0600
-+++ gcc-3.4.3/gcc/doc/invoke.texi 2006-05-08 10:17:54.000000000 -0600
-@@ -3178,6 +3178,7 @@
- the basename of the source file. In both cases any suffix is removed
- (e.g. @file{foo.gcda} for input file @file{dir/foo.c}, or
- @file{dir/foo.gcda} for output file specified as @option{-o dir/foo.o}).
-+@xref{Cross-profiling}.
-
- @itemize
-
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/gcov-io.c gcc-3.4.3/gcc/gcov-io.c
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/gcov-io.c 2004-02-25 08:11:19.000000000 -0700
-+++ gcc-3.4.3/gcc/gcov-io.c 2006-05-08 10:17:54.000000000 -0600
-@@ -55,13 +55,14 @@
-
- GCOV_LINKAGE int
- #if IN_LIBGCOV
--gcov_open (const char *name)
-+gcov_open (const char *prefix, const char *name)
- #else
- gcov_open (const char *name, int mode)
- #endif
- {
- #if IN_LIBGCOV
- const int mode = 0;
-+ char *tmp;
- #endif
- #if GCOV_LOCKED
- struct flock s_flock;
-@@ -83,6 +84,14 @@
- #if !IN_LIBGCOV
- gcov_var.endian = 0;
- #endif
-+
-+#if IN_LIBGCOV
-+ /* Build complete filename with prefix */
-+ tmp = alloca( strlen(prefix) + strlen(name) + 1);
-+ *tmp = '\0';
-+ name = strcat( strcat(tmp, prefix), name);
-+#endif
-+
- #if GCOV_LOCKED
- if (mode > 0)
- fd = open (name, O_RDWR);
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/gcov-io.h gcc-3.4.3/gcc/gcov-io.h
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/gcov-io.h 2004-03-21 19:43:11.000000000 -0700
-+++ gcc-3.4.3/gcc/gcov-io.h 2006-05-08 10:20:23.000000000 -0600
-@@ -488,7 +488,7 @@
- functions for writing. Your file may become corrupted if you break
- these invariants. */
- #if IN_LIBGCOV
--GCOV_LINKAGE int gcov_open (const char */*name*/);
-+GCOV_LINKAGE int gcov_open (const char */*prefix*/, const char */*name*/);
- #else
- GCOV_LINKAGE int gcov_open (const char */*name*/, int /*direction*/);
- GCOV_LINKAGE int gcov_magic (gcov_unsigned_t, gcov_unsigned_t);
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/libgcov.c gcc-3.4.3/gcc/libgcov.c
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/libgcov.c 2004-02-25 08:11:19.000000000 -0700
-+++ gcc-3.4.3/gcc/libgcov.c 2006-05-08 10:17:54.000000000 -0600
-@@ -92,6 +92,70 @@
- object file included in multiple programs. */
- static gcov_unsigned_t gcov_crc32;
-
-+/* Directory prefix to relocate coverage data file names */
-+static char *gcov_prefix = 0;
-+
-+/* Level of dirs to strip off the initial filename to relocate */
-+static int gcov_prefix_strip = 0;
-+
-+static int
-+create_file_directory (const char *prefix, const char *filename)
-+{
-+ char *dname;
-+ char sep, *r, *s;
-+ size_t plen, flen;
-+
-+ /* Detect directory separator */
-+ s = strrchr (prefix, DIR_SEPARATOR);
-+#ifdef DIR_SEPARATOR_2
-+ if (! s)
-+ s = strrchr (prefix, DIR_SEPARATOR_2);
-+#endif
-+ if (s)
-+ sep = *s;
-+ else
-+ sep = DIR_SEPARATOR;
-+
-+ /* join prefix and filename, split path */
-+ plen = strlen(prefix);
-+ flen = strlen(filename);
-+ r = alloca(plen + flen + 1);
-+ strncpy(r, prefix, plen);
-+ strncpy(r + plen, filename, flen);
-+ r[plen + flen] = '\0';
-+ s = strrchr(r, sep);
-+ if (s)
-+ *(s + 1) = '\0';
-+
-+ if (access (r, F_OK) == 0)
-+ return 0;
-+
-+ /* Skip consecutive separators. */
-+ for (dname = r; *dname && *dname == sep; ++dname);
-+ while (1)
-+ {
-+ char *s = strchr (dname, sep);
-+ if (s == 0)
-+ break;
-+ *s = '\0';
-+ /* Try to make directory if it doesn't already exist. */
-+ if (access (r, F_OK) == -1
-+ && mkdir (r, 0755) == -1
-+ /* The directory might have been made by another process. */
-+ && errno != EEXIST)
-+ {
-+ *s = sep;
-+ fprintf (stderr, "profiling:%s:Cannot create directory\n", r);
-+ return -1;
-+ };
-+ *s = sep;
-+ /* Skip consecutive separators. */
-+ for (dname = s + 1; *dname && *dname == sep; ++dname)
-+ ;
-+ }
-+ return 0;
-+}
-+
- static int
- gcov_version (struct gcov_info *ptr, gcov_unsigned_t version)
- {
-@@ -103,8 +167,8 @@
- GCOV_UNSIGNED2STRING (e, GCOV_VERSION);
-
- fprintf (stderr,
-- "profiling:%s:Version mismatch - expected %.4s got %.4s\n",
-- ptr->filename, e, v);
-+ "profiling:%s%s:Version mismatch - expected %.4s got %.4s\n",
-+ gcov_prefix, ptr->filename, e, v);
- return 0;
- }
- return 1;
-@@ -204,9 +268,14 @@
- fi_stride &= ~(__alignof__ (struct gcov_fn_info) - 1);
- }
-
-- if (!gcov_open (gi_ptr->filename))
-+ if (create_file_directory (gcov_prefix, gi_ptr->filename))
- {
-- fprintf (stderr, "profiling:%s:Cannot open\n", gi_ptr->filename);
-+ fprintf (stderr, "profiling:%s%s:Skip\n", gcov_prefix, gi_ptr->filename);
-+ continue;
-+ }
-+ else if (!gcov_open (gcov_prefix, gi_ptr->filename))
-+ {
-+ fprintf (stderr, "profiling:%s%s:Cannot open\n", gcov_prefix, gi_ptr->filename);
- continue;
- }
-
-@@ -216,8 +285,8 @@
- /* Merge data from file. */
- if (tag != GCOV_DATA_MAGIC)
- {
-- fprintf (stderr, "profiling:%s:Not a gcov data file\n",
-- gi_ptr->filename);
-+ fprintf (stderr, "profiling:%s%s:Not a gcov data file\n",
-+ gcov_prefix, gi_ptr->filename);
- read_fatal:;
- gcov_close ();
- continue;
-@@ -250,8 +319,8 @@
- || gcov_read_unsigned () != fi_ptr->checksum)
- {
- read_mismatch:;
-- fprintf (stderr, "profiling:%s:Merge mismatch for %s\n",
-- gi_ptr->filename,
-+ fprintf (stderr, "profiling:%s%s:Merge mismatch for %s\n",
-+ gcov_prefix, gi_ptr->filename,
- f_ix + 1 ? "function" : "summaries");
- goto read_fatal;
- }
-@@ -309,8 +378,8 @@
- if (!gcov_is_eof ())
- {
- read_error:;
-- fprintf (stderr, error < 0 ? "profiling:%s:Overflow merging\n"
-- : "profiling:%s:Error merging\n", gi_ptr->filename);
-+ fprintf (stderr, error < 0 ? "profiling:%s%s:Overflow merging\n"
-+ : "profiling:%s%s:Error merging\n", gcov_prefix, gi_ptr->filename);
- goto read_fatal;
- }
- rewrite:;
-@@ -357,8 +426,8 @@
- && (!GCOV_LOCKED || cs_all->runs == cs_prg->runs)
- && memcmp (cs_all, cs_prg, sizeof (*cs_all)))
- {
-- fprintf (stderr, "profiling:%s:Invocation mismatch - some data files may have been removed%s",
-- gi_ptr->filename, GCOV_LOCKED
-+ fprintf (stderr, "profiling:%s%s:Invocation mismatch - some data files may have been removed%s",
-+ gcov_prefix, gi_ptr->filename, GCOV_LOCKED
- ? "" : " or concurrent update without locking support");
- all.checksum = ~0u;
- }
-@@ -418,9 +487,9 @@
- gcov_write_summary (GCOV_TAG_PROGRAM_SUMMARY, &program);
- if ((error = gcov_close ()))
- fprintf (stderr, error < 0 ?
-- "profiling:%s:Overflow writing\n" :
-- "profiling:%s:Error writing\n",
-- gi_ptr->filename);
-+ "profiling:%s%s:Overflow writing\n" :
-+ "profiling:%s%s:Error writing\n",
-+ gcov_prefix, gi_ptr->filename);
- }
- }
-
-@@ -430,11 +499,69 @@
- void
- __gcov_init (struct gcov_info *info)
- {
-+ /* Save initial filename pointer to calculate CRC. */
-+ const char *ptr = info->filename;
-+
- if (!info->version)
- return;
-+
-+ /* Initialize directory prefix if requred */
-+ if (gcov_prefix == 0)
-+ {
-+ if ((gcov_prefix = getenv("GCOV_PREFIX")))
-+ {
-+ char *tmp;
-+
-+ /* Normalize prefix: take off trailing separator. */
-+ tmp = gcov_prefix + strlen(gcov_prefix) - 1;
-+ if (IS_DIR_SEPARATOR(*tmp))
-+ *tmp = '\0';
-+
-+ /* Check if the level of dirs to strip off specified */
-+ if ((tmp = getenv("GCOV_PREFIX_STRIP")))
-+ {
-+ gcov_prefix_strip = atoi (tmp);
-+ /* Do not consider negative values. */
-+ if (gcov_prefix_strip < 0)
-+ gcov_prefix_strip = 0;
-+ };
-+ }
-+ else
-+ gcov_prefix = (char *) "";
-+ };
-+
-+ /* Strip off leading directories from the initial filename */
-+ if (gcov_prefix_strip > 0)
-+ {
-+ char sep, *s;
-+ int level;
-+ const char *fname = info->filename;
-+
-+ /* Detect directory separator */
-+ s = strrchr (fname, DIR_SEPARATOR);
-+#ifdef DIR_SEPARATOR_2
-+ if (! s)
-+ s = strrchr (fname, DIR_SEPARATOR_2);
-+#endif
-+ if (s)
-+ sep = *s;
-+ else
-+ sep = DIR_SEPARATOR;
-+
-+ /* Skip selected directory levels */
-+ for ( level = gcov_prefix_strip; level > 0; level--)
-+ if ((s = strchr(fname + 1, sep)))
-+ fname = s;
-+ else
-+ break;
-+
-+ /* From this point info block refers stripped file name and
-+ further operations must add prefix to get complete name.*/
-+ info->filename = fname;
-+ };
-+
- if (gcov_version (info, info->version))
- {
-- const char *ptr = info->filename;
- gcov_unsigned_t crc32 = gcov_crc32;
-
- do
-diff -urN gcc-3.4.3.orig/gcc-3.4.3/gcc/tsystem.h gcc-3.4.3/gcc/tsystem.h
---- gcc-3.4.3.orig/gcc-3.4.3/gcc/tsystem.h 2003-11-04 22:17:16.000000000 -0700
-+++ gcc-3.4.3/gcc/tsystem.h 2006-05-08 10:17:54.000000000 -0600
-@@ -106,4 +106,15 @@
- #define NULL 0
- #endif
-
-+/* Filename handling macros. */
-+#include "filenames.h"
-+
-+/* These should be phased out in favor of IS_DIR_SEPARATOR, where possible. */
-+#ifndef DIR_SEPARATOR
-+# define DIR_SEPARATOR '/'
-+# ifdef HAVE_DOS_BASED_FILE_SYSTEM
-+# define DIR_SEPARATOR_2 '\\'
-+# endif
-+#endif
-+
- #endif /* ! GCC_TSYSTEM_H */