From: Andrew Fish <afish@apple.com>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Laszlo Ersek <lersek@redhat.com>, nd <nd@arm.com>,
"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>,
Stephanie Hughes-Fitt <Stephanie.Hughes-Fitt@arm.com>,
Leif Lindholm <leif.lindholm@linaro.org>
Subject: Re: Query about variable initialization
Date: Wed, 20 Jun 2018 12:22:55 -0700 [thread overview]
Message-ID: <91C2476D-6C4B-4D0E-827F-1F6DC597E617@apple.com> (raw)
In-Reply-To: <CAKv+Gu-JBNvxjYYNwzx12Kb6HcEU22FLEXq2Yvv7Cqhkt8Yy0Q@mail.gmail.com>
> On Jun 20, 2018, at 12:01 PM, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
>
> On 20 June 2018 at 20:57, Laszlo Ersek <lersek@redhat.com <mailto:lersek@redhat.com>> wrote:
>> On 06/20/18 20:03, Ard Biesheuvel wrote:
>>> On 20 June 2018 at 19:48, Evan Lloyd <Evan.Lloyd@arm.com> wrote:
>>>> Hi Ard, Leif.
>>>> I've noticed a number of comments like Ard's recent "We don't permit initialized automatic variables.",
>>>> and similar changes have been made to Sami's AcpiView. Note: I'm not objecting to doing it the way maintainers prefer, which is why this is not a response.
>>>>
>>>> My understanding was that the CCS was changed some time back to remove the restriction on initializing variables (and I further think I remember Leif being a prime mover in that).
>>>
>>> I don't remember, to be honest. But I think it is a stupid rule, and
>>> so if we haven't already, I hope we can get rid of it.
>>>
>>> IIRC, this limitation had something to do with a particularly nice
>>> exhibit in the Tianocore toolchain museum that generated bigger
>>> binaries for initialized automatic variables (as compared to
>>> assignments performed separately). But let's not get into the
>>> toolchain situation, shall we?
>>
>> One special case of initialization is when the variable in question has
>> structure type. For such initialization the compiler may generate calls
>> to internal helper functions (memset and friends), and then the module
>> fails to link. I've seen this myself earlier, although I can't tell
>> whether on gcc-4.4 or gcc-4.8.
>>
>
> That is a very good point. Note that this does not affect ARM, given
> that we already have to provide the AEABI intrinsics (and memset and
> memcpy for GCC), but I can see how other architectures may be bitten
> by this.
>
> I suppose the compiler is free to apply the same optimization to a
> block of automatic POD type variables, although I'd be surprised if
> that ever occurs in practice.
What I find is it breaks NOOPT builds, -O0 for clang specifically. Especially for projects that don't have a global NOOPT build due to FLASH Size.
That common place I hit this it trying to turn off optimization to walk some code in the debugger to understand how it works and now it does not link.
Usually I'm doing something like this in the INF, or the equivalent in the DSC, and boom.
[BuildOptions]
XCODE:*_*_*_CC_FLAGS = -O0 -fno-lto
Thanks,
Andrew Fish
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org <mailto:edk2-devel@lists.01.org>
> https://lists.01.org/mailman/listinfo/edk2-devel <https://lists.01.org/mailman/listinfo/edk2-devel>
prev parent reply other threads:[~2018-06-20 19:22 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-20 17:48 Query about variable initialization Evan Lloyd
2018-06-20 18:03 ` Ard Biesheuvel
2018-06-20 18:57 ` Laszlo Ersek
2018-06-20 19:01 ` Ard Biesheuvel
2018-06-20 19:22 ` Andrew Fish [this message]
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=91C2476D-6C4B-4D0E-827F-1F6DC597E617@apple.com \
--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