Ping
Thanks, Ying 在 2024/8/30 17:04, Ying Huang 写道: > Hi Mark, > > What can I do to process these patches? > > If you did not accept changes in current patch, how about the following > changes method? > > diff --git a/libelf/gelf_getrela.c b/libelf/gelf_getrela.c > index d695f659..fd974bdf 100644 > --- a/libelf/gelf_getrela.c > +++ b/libelf/gelf_getrela.c > @@ -90,8 +90,21 @@ gelf_getrela (Elf_Data *data, int ndx, GElf_Rela *dst) > result = NULL; > } > else > - result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx], > - sizeof (Elf64_Rela)); > + { > + result = memcpy (dst, &((Elf64_Rela *) data_scn->d.d_buf)[ndx], > + sizeof (Elf64_Rela)); > + GElf_Ehdr ehdr_mem; > + GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (scn->elf, &ehdr_mem); > + if(ehdr != NULL && ehdr->e_machine == EM_MIPS && > ehdr->e_ident[EI_DATA] == ELFDATA2LSB) > + { > + Elf64_Xword info = dst->r_info; > + dst->r_info = (((info & 0xffffffff) << 32) > + | ((info >> 56) & 0xff) > + | ((info >> 40) & 0xff00) > + | ((info >> 24) & 0xff0000) > + | ((info >> 8) & 0xff000000)); > + } > + } > } > > rwlock_unlock (scn->elf->lock); > > diff --git a/libelf/gelf_update_rela.c b/libelf/gelf_update_rela.c > index 88252703..592d74b9 100644 > --- a/libelf/gelf_update_rela.c > +++ b/libelf/gelf_update_rela.c > @@ -96,7 +96,20 @@ gelf_update_rela (Elf_Data *dst, int ndx, GElf_Rela *src) > goto out; > } > > - ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = *src; > + GElf_Ehdr ehdr_mem; > + GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (scn->elf, &ehdr_mem); > + GElf_Rela rela = *src; > + if(ehdr != NULL && ehdr->e_machine == EM_MIPS && > ehdr->e_ident[EI_DATA] == ELFDATA2LSB) > + { > + Elf64_Xword info = rela.r_info; > + rela.r_info = (info >> 32 > + | ((info << 56) & 0xff00000000000000) > + | ((info << 40) & 0xff000000000000) > + | ((info << 24) & 0xff0000000000) > + | ((info << 8) & 0xff00000000)); > + } > + > + ((Elf64_Rela *) data_scn->d.d_buf)[ndx] = rela; > } > > result = 1; > > > If you have any other questions, please let me know. > > > Thanks, > > Ying >