Skip to contentSkip to conversation

gcov: fix when CONFIG_MODULES is not set

PATCH In review [email protected] 4 participants 4 messages Apr 2, 2019 – Apr 5, 2019

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 gcov: fix when CONFIG_MODULES is not set

From: Tri Vo <[email protected]>

Fixes 8c3d220cb6b5 ("gcov: clang support")
---
 kernel/gcov/clang.c   | 4 ++++
 kernel/gcov/gcc_3_4.c | 4 ++++
 kernel/gcov/gcc_4_7.c | 4 ++++
 3 files changed, 12 insertions(+)
kernel/gcov/clang.c +4 -0
index 125c50397ba2..cfb9ce5e0fed 100644
@@ -223,7 +223,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info->filename, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
kernel/gcov/gcc_3_4.c +4 -0
index 801ee4b0b969..8fc30f178351 100644
@@ -146,7 +146,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
kernel/gcov/gcc_4_7.c +4 -0
index ec37563674d6..0b6886d4a4dd 100644
@@ -159,7 +159,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
Signature · 1 line
2.21.0.392.gf8f6787159e-goog
Acked-by on v3 1/1
#1 lore raw
Quoted 4 lines · On 4/1/19 8:09 PM, [email protected] wrote:

From: Tri Vo <[email protected]>

Fixes 8c3d220cb6b5 ("gcov: clang support")
Quoted 9 lines

Thanks.

Quoted 55 lines
---
 kernel/gcov/clang.c   | 4 ++++
 kernel/gcov/gcc_3_4.c | 4 ++++
 kernel/gcov/gcc_4_7.c | 4 ++++
 3 files changed, 12 insertions(+)
kernel/gcov/clang.c +4 -0
index 125c50397ba2..cfb9ce5e0fed 100644
@@ -223,7 +223,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info->filename, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
kernel/gcov/gcc_3_4.c +4 -0
index 801ee4b0b969..8fc30f178351 100644
@@ -146,7 +146,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
kernel/gcov/gcc_4_7.c +4 -0
index ec37563674d6..0b6886d4a4dd 100644
@@ -159,7 +159,11 @@ void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info)
  */
 bool gcov_info_within_module(struct gcov_info *info, struct module *mod)
 {
+#ifdef CONFIG_MODULES
 	return within_module((unsigned long)info, mod);
+#else
+	return false;
+#endif
 }
 
 /* Symbolic links to be created for each profiling data file. */
Signature · 1 line
~Randy
#2 lore raw
In reply to [email protected]
Quoted 3 lines · On Tue, Apr 02, 2019 at 10:09:56AM +0700, [email protected] wrote:

From: Tri Vo <[email protected]>

Fixes 8c3d220cb6b5 ("gcov: clang support")

I think this is the wrong fix. Why not simply:

+++ b/include/linux/module.h
@@ -709,6 +709,11 @@ static inline bool is_module_text_address(unsigned long addr)

        return false;

}

+static inline bool within_module(unsigned long addr, const struct module *mod) +{
+ return false;
+}
+
/* Get/put a kernel symbol (calls should be symmetric) */
#define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); }) #define symbol_put(x) do { } while (0)

#3 lore raw
Quoted 7 lines · Matthew Wilcox
Quoted 3 lines · On Tue, Apr 02, 2019 at 10:09:56AM +0700, [email protected] wrote:

From: Tri Vo <[email protected]>

Fixes 8c3d220cb6b5 ("gcov: clang support")

I think this is the wrong fix. Why not simply:

I spoke with Tri quickly about this proposal and we agree it's a better fix.

Andrew, would you mind dropping:
https://ozlabs.org/~akpm/mmotm/broken-out/gcov-clang-support-fix.patch
?

Matthew, would you please send that patch with a commit message? Or if you would prefer us to send with your suggested-by tag, we can do that, too. Whichever you prefer, please let me know. Thanks for the suggestion.

Quoted 15 lines

+++ b/include/linux/module.h

(quoted diff) +5 -0
@@ -709,6 +709,11 @@ static inline bool is_module_text_address(unsigned long addr)
        return false;
 }
 
+static inline bool within_module(unsigned long addr, const struct module *mod)
+{
+       return false;
+}
+
 /* Get/put a kernel symbol (calls should be symmetric) */
 #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); })
 #define symbol_put(x) do { } while (0)
Signature · 2 lines
Thanks,
~Nick Desaulniers