Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ef5bf1c authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Steven Rostedt
Browse files

ftrace/s390: mcount offset calculation



Do the mcount offset adjustment in the recordmcount.pl/recordmcount.[ch]
at compile time and not in ftrace_call_adjust at run time.

Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 414eb44d
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -11,15 +11,13 @@ struct dyn_arch_ftrace { };

#ifdef CONFIG_64BIT
#define MCOUNT_INSN_SIZE  12
#define MCOUNT_OFFSET	   8
#else
#define MCOUNT_INSN_SIZE  20
#define MCOUNT_OFFSET	   4
#endif

static inline unsigned long ftrace_call_adjust(unsigned long addr)
{
	return addr - MCOUNT_OFFSET;
	return addr;
}

#endif /* __ASSEMBLY__ */
+6 −2
Original line number Diff line number Diff line
@@ -368,8 +368,10 @@ do_file(char const *const fname)
				"unrecognized ET_REL file: %s\n", fname);
			fail_file();
		}
		if (w2(ehdr->e_machine) == EM_S390)
		if (w2(ehdr->e_machine) == EM_S390) {
			reltype = R_390_32;
			mcount_adjust_32 = -4;
		}
		if (w2(ehdr->e_machine) == EM_MIPS) {
			reltype = R_MIPS_32;
			is_fake_mcount32 = MIPS32_is_fake_mcount;
@@ -384,8 +386,10 @@ do_file(char const *const fname)
				"unrecognized ET_REL file: %s\n", fname);
			fail_file();
		}
		if (w2(ghdr->e_machine) == EM_S390)
		if (w2(ghdr->e_machine) == EM_S390) {
			reltype = R_390_64;
			mcount_adjust_64 = -8;
		}
		if (w2(ghdr->e_machine) == EM_MIPS) {
			reltype = R_MIPS_64;
			Elf64_r_sym = MIPS64_r_sym;
+2 −0
Original line number Diff line number Diff line
@@ -243,12 +243,14 @@ if ($arch eq "x86_64") {

} elsif ($arch eq "s390" && $bits == 32) {
    $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$";
    $mcount_adjust = -4;
    $alignment = 4;
    $ld .= " -m elf_s390";
    $cc .= " -m31";

} elsif ($arch eq "s390" && $bits == 64) {
    $mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$";
    $mcount_adjust = -8;
    $alignment = 8;
    $type = ".quad";
    $ld .= " -m elf64_s390";