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
>