]> git.itanic.dy.fi Git - linux-stable/blobdiff - tools/perf/util/genelf.c
perf jit: Include program header in ELF files
[linux-stable] / tools / perf / util / genelf.c
index 953338b9e887e26f943831903e72c6df1c18927d..02cd9f75e3d2f8c913a9bbea57cb34f44b8002c4 100644 (file)
@@ -251,6 +251,7 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
        Elf_Data *d;
        Elf_Scn *scn;
        Elf_Ehdr *ehdr;
+       Elf_Phdr *phdr;
        Elf_Shdr *shdr;
        uint64_t eh_frame_base_offset;
        char *strsym = NULL;
@@ -285,6 +286,19 @@ jit_write_elf(int fd, uint64_t load_addr, const char *sym,
        ehdr->e_version = EV_CURRENT;
        ehdr->e_shstrndx= unwinding ? 4 : 2; /* shdr index for section name */
 
+       /*
+        * setup program header
+        */
+       phdr = elf_newphdr(e, 1);
+       phdr[0].p_type = PT_LOAD;
+       phdr[0].p_offset = 0;
+       phdr[0].p_vaddr = 0;
+       phdr[0].p_paddr = 0;
+       phdr[0].p_filesz = csize;
+       phdr[0].p_memsz = csize;
+       phdr[0].p_flags = PF_X | PF_R;
+       phdr[0].p_align = 8;
+
        /*
         * setup text section
         */