diff options
author | Tuomas Tynkkynen <ttynkkynen@nvidia.com> | 2012-06-20 14:47:25 +0300 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-06-26 11:39:18 -0700 |
commit | 623a7bd93b49fe0be662382e11f10212d1ed8f3e (patch) | |
tree | 2681923acd3672935ff14e61c81666b2fc228c8e /kernel/gcov/gcc_3_4.c | |
parent | e50a77c478949652a1cb8386427c81e7abeb16e0 (diff) |
Fix gcov for GCC 4.6.
Gcov's internal data structures, on which the kernel depends on, have
changed in GCC 4.6. This patch adds support for GCC 4.6 and should still
work on GCC 4.4 too.
For reference, look at 'struct gcov_fn_info' in GCC's 'gcc/gcov-io.h',
near line 698:
https://android.googlesource.com/toolchain/gcc/+/master/gcc-4.4.3/
https://android.googlesource.com/toolchain/gcc/+/master/gcc-4.6/
Bug 1003822
Change-Id: I527736f944c80b8b345d1685669c0b99eb38fb66
Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com>
Reviewed-on: http://git-master/r/110073
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
Tested-by: Juha Tukkinen <jtukkinen@nvidia.com>
Diffstat (limited to 'kernel/gcov/gcc_3_4.c')
-rw-r--r-- | kernel/gcov/gcc_3_4.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/gcov/gcc_3_4.c b/kernel/gcov/gcc_3_4.c index d753d1152b7b..bc78336bc345 100644 --- a/kernel/gcov/gcc_3_4.c +++ b/kernel/gcov/gcc_3_4.c @@ -466,8 +466,12 @@ int gcov_iter_write(struct gcov_iterator *iter, struct seq_file *seq) rc = seq_write_gcov_u32(seq, GCOV_TAG_FUNCTION); break; case RECORD_FUNCTON_TAG_LEN: +#ifdef GCOV_FN_INFO_HAS_NAME_FIELD rc = seq_write_gcov_u32(seq, GCOV_TAG_FUNCTION_LENGTH + (sizeof_str(get_func(iter)->name))); +#else + rc = seq_write_gcov_u32(seq, GCOV_TAG_FUNCTION_LENGTH); +#endif break; case RECORD_FUNCTION_IDENT: rc = seq_write_gcov_u32(seq, get_func(iter)->ident); @@ -479,11 +483,19 @@ int gcov_iter_write(struct gcov_iterator *iter, struct seq_file *seq) rc = seq_write_gcov_u32(seq, get_func(iter)->cfg_checksum); break; case RECORD_FUNCTION_NAME_LEN: +#ifdef GCOV_FN_INFO_HAS_NAME_FIELD rc = seq_write_gcov_u32(seq, (sizeof_str(get_func(iter)->name) - 1)); +#else + rc = 0; +#endif break; case RECORD_FUNCTION_NAME: +#ifdef GCOV_FN_INFO_HAS_NAME_FIELD rc = seq_write_gcov_str(seq, get_func(iter)->name); +#else + rc = 0; +#endif break; case RECORD_COUNT_TAG: rc = seq_write_gcov_u32(seq, |