[edk2-devel] : Query regarding IsTextShdr inside Basetools
Laszlo Ersek
lersek at redhat.com
Wed Nov 11 22:41:06 UTC 2020
On 11/11/20 23:40, Laszlo Ersek wrote:
> Ard, Liming,
>
> can you please take a look?
>
> Thanks!
> Laszlo
Darn, I used Liming's old email address. Correcting it now. Sorry!
Laszlo
>
> On 11/10/20 14:07, Mukesh Ojha wrote:
>> Hi All,
>>
>> I have a doubt about the check we have put inside IsTextShdr() .
>>
>> STATIC
>> BOOLEAN
>> IsTextShdr (
>> Elf_Shdr *Shdr
>> )
>> {
>> return (BOOLEAN) ((Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) ==
>> SHF_ALLOC);
>> }
>>
>>
>> We are observing one issue where while generate EFI using GenFW in EDK2
>> because test/data section offset is different than calculated
>> mCoffSectionsOffset when scanning sections.
>> I run GenFW with a failure dll in my local after adding some logs into
>> GenFW. and found that “mCoffSectionsOffset” for data section seems not
>> to have expected value due to
>> “.note.gnu.property” size. Because compiled dll has “.note.gnu.property”
>> section with alloc flag and GenFW thinks that it’s a text section if
>> alloc flag is set.
>> So its size is added to the mCoffSectionsOffset.
>>
>> Could you please give us an advice whether we can fix IsTextShdr()
>> function like below ?
>>
>>
>> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c
>> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
>> @@ -229,7 +229,7 @@ IsTextShdr (
>> Elf_Shdr *Shdr
>> )
>> {
>> - return (BOOLEAN) ((Shdr->sh_flags & (SHF_WRITE | SHF_ALLOC)) ==
>> SHF_ALLOC);
>> + return (BOOLEAN) ((Shdr->sh_flags & (SHF_EXECINSTR | SHF_WRITE |
>> SHF_ALLOC)) == (SHF_ALLOC | SHF_EXECINSTR));^
>>
>>
>> Thanks,
>> Mukesh
>>
>>
>>
>>
>>
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#67324): https://edk2.groups.io/g/devel/message/67324
Mute This Topic: https://groups.io/mt/78163064/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list