Ping

Thanks,

Ying


在 2024/11/1 16:58, Ying Huang 写道:
> Ping
>
>
> Thanks,
>
> Ying
>
> 在 2024/10/12 17:40, Ying Huang 写道:
>> Ping
>>
>>
>> Thanks,
>>
>> Ying
>>
>>
>> 在 2024/9/27 17:52, Ying Huang 写道:
>>> Ping
>>>
>>>
>>> Thanks,
>>>
>>> Ying
>>>
>>>
>>> 在 2024/9/14 17:45, Ying Huang 写道:
>>>> 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
>>>>>

Reply via email to