All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] recordmcount: Fix handling of elf64 big-endian objects.
@ 2011-12-20  1:42 David Daney
  2011-12-20  3:09 ` Steven Rostedt
  2012-01-08 11:51 ` [tip:perf/core] " tip-bot for David Daney
  0 siblings, 2 replies; 8+ messages in thread
From: David Daney @ 2011-12-20  1:42 UTC (permalink / raw)
  To: Steven Rostedt; +Cc: linux-kernel, David Daney

From: David Daney <david.daney@cavium.com>

In ELF64, the sh_flags field is 64-bits wide.  recordmcount was
erroneously treating it as a 32-bit wide field.  For little endian
objects this works because the flags of interest (SHF_EXECINSTR)
reside in the lower 32 bits of the word, and you get the same result
with either a 32-bit or 64-bit read.  Big endian objects on the
other hand do not work at all with this error.

The fix:  Correctly treat sh_flags as 64-bits wide in elf64 objects.

The symptom I observed was that my
__start_mcount_loc..__stop_mcount_loc was empty even though ftrace
function tracing was enabled.

Signed-off-by: David Daney <david.daney@cavium.com>
---
 scripts/recordmcount.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/scripts/recordmcount.h b/scripts/recordmcount.h
index f40a6af6..54e35c1 100644
--- a/scripts/recordmcount.h
+++ b/scripts/recordmcount.h
@@ -462,7 +462,7 @@ __has_rel_mcount(Elf_Shdr const *const relhdr,  /* is SHT_REL or SHT_RELA */
 		succeed_file();
 	}
 	if (w(txthdr->sh_type) != SHT_PROGBITS ||
-	    !(w(txthdr->sh_flags) & SHF_EXECINSTR))
+	    !(_w(txthdr->sh_flags) & SHF_EXECINSTR))
 		return NULL;
 	return txtname;
 }
-- 
1.7.2.3


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-01-08 11:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-20  1:42 [PATCH] recordmcount: Fix handling of elf64 big-endian objects David Daney
2011-12-20  3:09 ` Steven Rostedt
2012-01-06 20:42   ` David Daney
2012-01-06 21:47     ` Steven Rostedt
2012-01-06 23:09     ` Steven Rostedt
2012-01-06 23:15       ` David Daney
2012-01-06 23:24         ` Steven Rostedt
2012-01-08 11:51 ` [tip:perf/core] " tip-bot for David Daney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.