Merge branch 'tip/perf/recordmcount' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core
This commit is contained in:
commit
66af86e2c6
2 changed files with 21 additions and 3 deletions
|
@ -210,7 +210,7 @@ endif
|
||||||
|
|
||||||
ifdef CONFIG_FTRACE_MCOUNT_RECORD
|
ifdef CONFIG_FTRACE_MCOUNT_RECORD
|
||||||
ifdef BUILD_C_RECORDMCOUNT
|
ifdef BUILD_C_RECORDMCOUNT
|
||||||
cmd_record_mcount = $(srctree)/scripts/recordmcount "$(@)";
|
cmd_record_mcount = $(objtree)/scripts/recordmcount "$(@)";
|
||||||
else
|
else
|
||||||
cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
|
cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH)" \
|
||||||
"$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \
|
"$(if $(CONFIG_CPU_BIG_ENDIAN),big,little)" \
|
||||||
|
|
|
@ -313,12 +313,30 @@ do_file(char const *const fname)
|
||||||
int
|
int
|
||||||
main(int argc, char const *argv[])
|
main(int argc, char const *argv[])
|
||||||
{
|
{
|
||||||
|
const char ftrace[] = "kernel/trace/ftrace.o";
|
||||||
|
int ftrace_size = sizeof(ftrace) - 1;
|
||||||
int n_error = 0; /* gcc-4.3.0 false positive complaint */
|
int n_error = 0; /* gcc-4.3.0 false positive complaint */
|
||||||
if (argc <= 1)
|
|
||||||
|
if (argc <= 1) {
|
||||||
fprintf(stderr, "usage: recordmcount file.o...\n");
|
fprintf(stderr, "usage: recordmcount file.o...\n");
|
||||||
else /* Process each file in turn, allowing deep failure. */
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Process each file in turn, allowing deep failure. */
|
||||||
for (--argc, ++argv; 0 < argc; --argc, ++argv) {
|
for (--argc, ++argv; 0 < argc; --argc, ++argv) {
|
||||||
int const sjval = setjmp(jmpenv);
|
int const sjval = setjmp(jmpenv);
|
||||||
|
int len;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The file kernel/trace/ftrace.o references the mcount
|
||||||
|
* function but does not call it. Since ftrace.o should
|
||||||
|
* not be traced anyway, we just skip it.
|
||||||
|
*/
|
||||||
|
len = strlen(argv[0]);
|
||||||
|
if (len >= ftrace_size &&
|
||||||
|
strcmp(argv[0] + (len - ftrace_size), ftrace) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
switch (sjval) {
|
switch (sjval) {
|
||||||
default: {
|
default: {
|
||||||
fprintf(stderr, "internal error: %s\n", argv[0]);
|
fprintf(stderr, "internal error: %s\n", argv[0]);
|
||||||
|
|
Loading…
Add table
Reference in a new issue