mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
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: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
521ccb5c4a
commit
f296388682
3 changed files with 9 additions and 5 deletions
|
@ -11,15 +11,13 @@ struct dyn_arch_ftrace { };
|
||||||
|
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
#define MCOUNT_INSN_SIZE 12
|
#define MCOUNT_INSN_SIZE 12
|
||||||
#define MCOUNT_OFFSET 8
|
|
||||||
#else
|
#else
|
||||||
#define MCOUNT_INSN_SIZE 20
|
#define MCOUNT_INSN_SIZE 20
|
||||||
#define MCOUNT_OFFSET 4
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static inline unsigned long ftrace_call_adjust(unsigned long addr)
|
static inline unsigned long ftrace_call_adjust(unsigned long addr)
|
||||||
{
|
{
|
||||||
return addr - MCOUNT_OFFSET;
|
return addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
|
@ -368,8 +368,10 @@ do_file(char const *const fname)
|
||||||
"unrecognized ET_REL file: %s\n", fname);
|
"unrecognized ET_REL file: %s\n", fname);
|
||||||
fail_file();
|
fail_file();
|
||||||
}
|
}
|
||||||
if (w2(ehdr->e_machine) == EM_S390)
|
if (w2(ehdr->e_machine) == EM_S390) {
|
||||||
reltype = R_390_32;
|
reltype = R_390_32;
|
||||||
|
mcount_adjust_32 = -4;
|
||||||
|
}
|
||||||
if (w2(ehdr->e_machine) == EM_MIPS) {
|
if (w2(ehdr->e_machine) == EM_MIPS) {
|
||||||
reltype = R_MIPS_32;
|
reltype = R_MIPS_32;
|
||||||
is_fake_mcount32 = MIPS32_is_fake_mcount;
|
is_fake_mcount32 = MIPS32_is_fake_mcount;
|
||||||
|
@ -384,8 +386,10 @@ do_file(char const *const fname)
|
||||||
"unrecognized ET_REL file: %s\n", fname);
|
"unrecognized ET_REL file: %s\n", fname);
|
||||||
fail_file();
|
fail_file();
|
||||||
}
|
}
|
||||||
if (w2(ghdr->e_machine) == EM_S390)
|
if (w2(ghdr->e_machine) == EM_S390) {
|
||||||
reltype = R_390_64;
|
reltype = R_390_64;
|
||||||
|
mcount_adjust_64 = -8;
|
||||||
|
}
|
||||||
if (w2(ghdr->e_machine) == EM_MIPS) {
|
if (w2(ghdr->e_machine) == EM_MIPS) {
|
||||||
reltype = R_MIPS_64;
|
reltype = R_MIPS_64;
|
||||||
Elf64_r_sym = MIPS64_r_sym;
|
Elf64_r_sym = MIPS64_r_sym;
|
||||||
|
|
|
@ -243,12 +243,14 @@ if ($arch eq "x86_64") {
|
||||||
|
|
||||||
} elsif ($arch eq "s390" && $bits == 32) {
|
} elsif ($arch eq "s390" && $bits == 32) {
|
||||||
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$";
|
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$";
|
||||||
|
$mcount_adjust = -4;
|
||||||
$alignment = 4;
|
$alignment = 4;
|
||||||
$ld .= " -m elf_s390";
|
$ld .= " -m elf_s390";
|
||||||
$cc .= " -m31";
|
$cc .= " -m31";
|
||||||
|
|
||||||
} elsif ($arch eq "s390" && $bits == 64) {
|
} elsif ($arch eq "s390" && $bits == 64) {
|
||||||
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$";
|
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$";
|
||||||
|
$mcount_adjust = -8;
|
||||||
$alignment = 8;
|
$alignment = 8;
|
||||||
$type = ".quad";
|
$type = ".quad";
|
||||||
$ld .= " -m elf64_s390";
|
$ld .= " -m elf64_s390";
|
||||||
|
|
Loading…
Reference in a new issue