git: 27753529c1e5 - main - java/openjdk8: commit forgotten patch
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 20 Feb 2023 13:44:17 UTC
The branch main has been updated by pkubaj: URL: https://cgit.FreeBSD.org/ports/commit/?id=27753529c1e5df3acbe6a4058b90295a2bb7d15d commit 27753529c1e5df3acbe6a4058b90295a2bb7d15d Author: Piotr Kubaj <pkubaj@FreeBSD.org> AuthorDate: 2023-02-20 13:43:24 +0000 Commit: Piotr Kubaj <pkubaj@FreeBSD.org> CommitDate: 2023-02-20 13:44:06 +0000 java/openjdk8: commit forgotten patch Reported by: mikael --- .../files/patch-hotspot_agent_src_os_bsd_symtab.c | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/java/openjdk8/files/patch-hotspot_agent_src_os_bsd_symtab.c b/java/openjdk8/files/patch-hotspot_agent_src_os_bsd_symtab.c new file mode 100644 index 000000000000..31e6ef89f82b --- /dev/null +++ b/java/openjdk8/files/patch-hotspot_agent_src_os_bsd_symtab.c @@ -0,0 +1,50 @@ +--- hotspot/agent/src/os/bsd/symtab.c.orig 2023-02-18 20:21:09 UTC ++++ hotspot/agent/src/os/bsd/symtab.c +@@ -204,6 +204,38 @@ struct elf_section { + void *c_data; + }; + ++/* Find an ELF section. */ ++static struct elf_section *find_section_by_name(char *name, ++ int fd, ++ ELF_EHDR *ehdr, ++ ELF_SHDR *shbuf, ++ struct elf_section *scn_cache) ++{ ++ ELF_SHDR* cursct = NULL; ++ char *strtab; ++ int cnt; ++ ++ if (scn_cache[ehdr->e_shstrndx].c_data == NULL) { ++ if ((scn_cache[ehdr->e_shstrndx].c_data ++ = read_section_data(fd, ehdr, cursct)) == NULL) { ++ return NULL; ++ } ++ } ++ ++ strtab = scn_cache[ehdr->e_shstrndx].c_data; ++ ++ for (cursct = shbuf, cnt = 0; ++ cnt < ehdr->e_shnum; ++ cnt++, cursct++) { ++ if (strcmp(cursct->sh_name + strtab, name) == 0) { ++ scn_cache[cnt].c_data = read_section_data(fd, ehdr, cursct); ++ return &scn_cache[cnt]; ++ } ++ } ++ ++ return NULL; ++} ++ + // read symbol table from given fd. + struct symtab* build_symtab(int fd) { + ELF_EHDR ehdr; +@@ -263,7 +295,7 @@ struct symtab* build_symtab(int fd) { + } + + #if defined(ppc64) +- opd_sect = find_section_by_name(".opd", fd, &ehdr, scn_cache); ++ opd_sect = find_section_by_name(".opd", fd, &ehdr, cursct, scn_cache); + if (opd_sect != NULL && opd_sect->c_data != NULL && opd_sect->c_shdr != NULL) { + // plausibility check + opd = opd_sect->c_shdr;