uftrace: fix i686.

This commit is contained in:
Leah Neukirchen 2018-09-12 15:51:52 +02:00
parent 5b0dce898d
commit 4e1f2688ea
1 changed files with 44 additions and 0 deletions

View File

@ -0,0 +1,44 @@
--- uftrace-0.9/arch/i386/mcount-dynamic.c.orig
+++ uftrace-0.9/arch/i386/mcount-dynamic.c
@@ -22,11 +22,11 @@
size_t trampoline_size = 16;
/* find unused 16-byte at the end of the code segment */
- mdi->trampoline = ALIGN(mdi->addr + mdi->size, PAGE_SIZE) - trampoline_size;
+ mdi->trampoline = ALIGN(mdi->text_addr + mdi->text_size, PAGE_SIZE) - trampoline_size;
- if (unlikely(mdi->trampoline < mdi->addr + mdi->size)) {
+ if (unlikely(mdi->trampoline < mdi->text_addr + mdi->text_size)) {
mdi->trampoline += trampoline_size;
- mdi->size += PAGE_SIZE;
+ mdi->text_size += PAGE_SIZE;
pr_dbg2("adding a page for fentry trampoline at %#lx\n",
mdi->trampoline);
@@ -35,7 +35,7 @@
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
}
- if (mprotect((void *)mdi->addr, mdi->size, PROT_READ | PROT_WRITE)) {
+ if (mprotect((void *)mdi->text_addr, mdi->text_size, PROT_READ | PROT_WRITE)) {
pr_dbg("cannot setup trampoline due to protection: %m\n");
return -1;
}
@@ -49,7 +49,7 @@
void mcount_cleanup_trampoline(struct mcount_dynamic_info *mdi)
{
- if (mprotect((void *)mdi->addr, mdi->size, PROT_EXEC))
+ if (mprotect((void *)mdi->text_addr, mdi->text_size, PROT_EXEC))
pr_err("cannot restore trampoline due to protection");
}
@@ -58,7 +58,7 @@
static unsigned long get_target_addr(struct mcount_dynamic_info *mdi, unsigned long addr)
{
while (mdi) {
- if (mdi->addr <= addr && addr < mdi->addr + mdi->size)
+ if (mdi->text_addr <= addr && addr < mdi->text_addr + mdi->text_size)
return mdi->trampoline - (addr + CALL_INSN_SIZE);
mdi = mdi->next;