From: "Marvin Häuser" <mhaeuser@posteo.de>
To: gaoliming <gaoliming@byosoft.com.cn>
Cc: devel@edk2.groups.io, patrick.rudolph@9elements.com,
guo.dong@intel.com, gua.guo@intel.com, james.lu@intel.com,
ray.ni@intel.com, ardb@kernel.org
Subject: Re: [edk2-devel] [PATCH 2/3] BaseTools/Conf/tools_def: Fix CLANGDWARF_IA32_X64
Date: Fri, 31 Mar 2023 10:57:52 +0000 [thread overview]
Message-ID: <7C7DD6B9-D0E7-44B4-A4B3-19D4FAC1FF34@posteo.de> (raw)
In-Reply-To: <024401d9638c$b73deb40$25b9c1c0$@byosoft.com.cn>
Liming,
Platform maintainers can decide whether or not they want to combat *binary corruption*? Excuse me, but what the bloody hell? This needs a root cause analysis for which part of the stack silently borks us and not an “oh, if something fails, well, copy and paste this workaround… maybe”. If you give me an efficient way to reproduce it, I’ll do it.
Best regards,
Marvin
> On 31. Mar 2023, at 06:54, gaoliming <gaoliming@byosoft.com.cn> wrote:
>
> Marvin:
> Platform developer can decide how to configure this option in their DSC file to resolve their problem. This is one option for the platform developer.
>
> Thanks
> Liming
>> -----邮件原件-----
>> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Marvin
>> H?user
>> 发送时间: 2023年3月28日 19:26
>> 收件人: gaoliming <gaoliming@byosoft.com.cn>
>> 抄送: devel@edk2.groups.io; patrick.rudolph@9elements.com;
>> guo.dong@intel.com; gua.guo@intel.com; james.lu@intel.com;
>> ray.ni@intel.com; ardb@kernel.org
>> 主题: Re: [edk2-devel] [PATCH 2/3] BaseTools/Conf/tools_def: Fix
>> CLANGDWARF_IA32_X64
>>
>> Hi all,
>>
>>>> On 28. Mar 2023, at 07:38, gaoliming <gaoliming@byosoft.com.cn> wrote:
>>> Patrick:
>>> I prefer to override this option in DSC instead of the change in
>>> tools_def.txt.
>>
>> A DSC override to fix *binary corruption* of an unknown cause? It is ridiculous
>> this can even happen silently, even though it’s unclear which component is at
>> fault.
>>
>>> Normal EFI image needs to set its page size for the smaller
>>> image size.
>>>
>>> You can see GCC DLINK option. It also sets page-size as 0x40.
>>>
>>> DEFINE GCC49_IA32_X64_DLINK_COMMON = -nostdlib
>> -Wl,-n,-q,--gc-sections -z
>>> common-page-size=0x40
>>
>> Side note, the correct way to do this is setting max-page-size, not
>> common-page-size.
>>
>>>
>>> Thanks
>>> Liming
>>>> -----邮件原件-----
>>>> 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Patrick
>>>> Rudolph
>>>> 发送时间: 2023年3月17日 22:06
>>>> 抄送: devel@edk2.groups.io; guo.dong@intel.com; gua.guo@intel.com;
>>>> james.lu@intel.com; ray.ni@intel.com; mhaeuser@posteo.de;
>>>> ardb@kernel.org
>>>> 主题: [edk2-devel] [PATCH 2/3] BaseTools/Conf/tools_def: Fix
>>>> CLANGDWARF_IA32_X64
>>>>
>>>> Drop the "-z max-page-size=0x40" option as it causes the ELF
>>>> header to overflow into the .text section, causing undefined
>>>> behaviour.
>>
>> That *definitely* is not a fix. Not only does this regress binary size for
>> platforms that have tight SPI space constraints, it also only masks the issue. In
>> the (frankly near-impossible) case the ELF header dramatically grows in size,
>> who knows whether it can overflow again?
>>
>> Sorry, but the overall description is pretty vague. Which OS / compiler version
>> are you using? Do you have any trivial way to detect the corruption? I never
>> really touched UefiPayloadPkg and have nothing set up to boot it to reproduce
>> the issue.
>>
>> Best regards,
>> Marvin
>>
>>>>
>>>> With high optimization level it corrupts essential code and
>>>> the binary would crash. It might work with low optimization
>>>> level though. As the default is to use Oz and LTO, it always
>>>> crashes.
>>>>
>>>> Test:
>>>> The ELF generated by
>>>> 'python UefiPayloadPkg/UniversalPayloadBuild.py -a IA32' boots.
>>>>
>>>> Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
>>>> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=4357
>>>> ---
>>>> BaseTools/Conf/tools_def.template | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/BaseTools/Conf/tools_def.template
>>>> b/BaseTools/Conf/tools_def.template
>>>> index 9b59bd75c3..0c584ab390 100755
>>>> --- a/BaseTools/Conf/tools_def.template
>>>> +++ b/BaseTools/Conf/tools_def.template
>>>> @@ -2866,7 +2866,7 @@ DEFINE CLANGDWARF_X64_PREFIX =
>>>> ENV(CLANG_BIN)
>>>>
>>>>
>>>> # LLVM/CLANG doesn't support -n link option. So, it can't share the same
>>>> IA32_X64_DLINK_COMMON flag.
>>>>
>>>> # LLVM/CLANG doesn't support common page size. So, it can't share the
>>>> same GccBase.lds script.
>>>>
>>>> -DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib
>>>> -Wl,-q,--gc-sections -z max-page-size=0x40
>>>>
>>>> +DEFINE CLANGDWARF_IA32_X64_DLINK_COMMON = -nostdlib
>>>> -Wl,-q,--gc-sections
>>>>
>>>> DEFINE CLANGDWARF_DLINK2_FLAGS_COMMON =
>>>> -Wl,--script=$(EDK_TOOLS_PATH)/Scripts/ClangBase.lds
>>>>
>>>> DEFINE CLANGDWARF_IA32_X64_ASLDLINK_FLAGS =
>>>> DEF(CLANGDWARF_IA32_X64_DLINK_COMMON)
>>>> -Wl,--defsym=PECOFF_HEADER_SIZE=0
>>>> DEF(CLANGDWARF_DLINK2_FLAGS_COMMON)
>>>> -Wl,--entry,ReferenceAcpiTable -u ReferenceAcpiTable
>>>>
>>>> DEFINE CLANGDWARF_IA32_X64_DLINK_FLAGS =
>>>> DEF(CLANGDWARF_IA32_X64_DLINK_COMMON)
>>>> -Wl,--entry,$(IMAGE_ENTRY_POINT) -u $(IMAGE_ENTRY_POINT)
>>>> -Wl,-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map,--whole-archive
>>>>
>>>> --
>>>> 2.39.1
>>>>
>>>>
>>>>
>>>> -=-=-=-=-=-=
>>>> Groups.io Links: You receive all messages sent to this group.
>>>> View/Reply Online (#101341):
>>>> https://edk2.groups.io/g/devel/message/101341
>>>> Mute This Topic: https://groups.io/mt/97673649/4905953
>>>> Group Owner: devel+owner@edk2.groups.io
>>>> Unsubscribe: https://edk2.groups.io/g/devel/unsub
>>>> [gaoliming@byosoft.com.cn]
>>>> -=-=-=-=-=-=
>>
>>
>>
>>
>>
>
>
>
next prev parent reply other threads:[~2023-03-31 10:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-17 14:06 [PATCH 1/3] BaseTools/Conf/tools_def: Fix linking using CLANGDWARF_IA32 Patrick Rudolph
2023-03-17 14:06 ` [PATCH 2/3] BaseTools/Conf/tools_def: Fix CLANGDWARF_IA32_X64 Patrick Rudolph
2023-03-26 19:39 ` [edk2-devel] " Sheng Lean Tan
[not found] ` <17500F66A352AD33.14179@groups.io>
2023-03-26 19:42 ` Sheng Lean Tan
2023-03-28 5:38 ` 回复: " gaoliming
2023-03-28 11:25 ` Marvin Häuser
2023-03-31 4:53 ` 回复: " gaoliming
2023-03-31 10:57 ` Marvin Häuser [this message]
2023-04-03 0:52 ` gaoliming
2023-04-03 5:53 ` Patrick Rudolph
2023-03-31 14:41 ` Ni, Ray
2023-03-31 14:58 ` Marvin Häuser
2023-03-17 17:30 ` [edk2-devel] [PATCH 1/3] BaseTools/Conf/tools_def: Fix linking using CLANGDWARF_IA32 Rebecca Cran
2023-03-17 17:44 ` Marvin Häuser
2023-03-17 20:35 ` Rebecca Cran
[not found] ` <174D4F37D4EEDF26.23349@groups.io>
2023-03-23 14:43 ` Rebecca Cran
2023-03-23 14:51 ` Sheng Lean Tan
2023-03-26 19:35 ` Sheng Lean Tan
2023-03-28 5:42 ` 回复: " gaoliming
2023-03-30 7:30 ` Sheng Lean Tan
2023-03-30 8:04 ` Marvin Häuser
2023-03-30 9:47 ` Patrick Rudolph
2023-04-04 12:46 ` Sheng Lean Tan
2023-04-05 8:27 ` Sheng Lean Tan
-- strict thread matches above, loose matches on Subject: below --
2023-03-06 8:37 [PATCH 1/3] BaseTools/Conf/tools_def: Fix linking using CLANGDWARF_IA32_X64 Patrick Rudolph
2023-03-06 8:37 ` [PATCH 2/3] BaseTools/Conf/tools_def: Fix CLANGDWARF_IA32_X64 Patrick Rudolph
2023-03-06 8:39 ` Sean Rhodes
2023-03-15 16:52 ` [edk2-devel] " Sheng Lean Tan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7C7DD6B9-D0E7-44B4-A4B3-19D4FAC1FF34@posteo.de \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox