aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/genelf.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/genelf.c')
-rw-r--r--tools/perf/util/genelf.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/tools/perf/util/genelf.c b/tools/perf/util/genelf.c
index 145f8116ef56..c1ef805c6a8f 100644
--- a/tools/perf/util/genelf.c
+++ b/tools/perf/util/genelf.c
@@ -156,7 +156,8 @@ gen_build_id(struct buildid_note *note, unsigned long load_addr, const void *cod
*/
int
jit_write_elf(int fd, uint64_t load_addr, const char *sym,
- const void *code, int csize)
+ const void *code, int csize,
+ void *debug, int nr_debug_entries)
{
Elf *e;
Elf_Data *d;
@@ -385,9 +386,15 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
shdr->sh_size = sizeof(bnote);
shdr->sh_entsize = 0;
- if (elf_update(e, ELF_C_WRITE) < 0) {
- warnx("elf_update 4 failed");
- goto error;
+ if (debug && nr_debug_entries) {
+ retval = jit_add_debug_info(e, load_addr, debug, nr_debug_entries);
+ if (retval)
+ goto error;
+ } else {
+ if (elf_update(e, ELF_C_WRITE) < 0) {
+ warnx("elf_update 4 failed");
+ goto error;
+ }
}
retval = 0;