summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/link_elf.c6
-rw-r--r--sys/kern/link_elf_obj.c6
2 files changed, 12 insertions, 0 deletions
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index 65f9946a9d69..944a55a2808a 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -717,6 +717,12 @@ link_elf_load_file(linker_class_t cls, const char* filename, linker_file_t* resu
#endif
}
+#ifdef GPROF
+ /* Update profiling information with the new text segment. */
+ kmupetext((uintfptr_t)(mapbase + segs[0]->p_vaddr - base_vaddr +
+ segs[0]->p_memsz));
+#endif
+
ef->dynamic = (Elf_Dyn *) (mapbase + phdyn->p_vaddr - base_vaddr);
lf->address = ef->address;
diff --git a/sys/kern/link_elf_obj.c b/sys/kern/link_elf_obj.c
index 65f9946a9d69..944a55a2808a 100644
--- a/sys/kern/link_elf_obj.c
+++ b/sys/kern/link_elf_obj.c
@@ -717,6 +717,12 @@ link_elf_load_file(linker_class_t cls, const char* filename, linker_file_t* resu
#endif
}
+#ifdef GPROF
+ /* Update profiling information with the new text segment. */
+ kmupetext((uintfptr_t)(mapbase + segs[0]->p_vaddr - base_vaddr +
+ segs[0]->p_memsz));
+#endif
+
ef->dynamic = (Elf_Dyn *) (mapbase + phdyn->p_vaddr - base_vaddr);
lf->address = ef->address;