From: Laszlo Ersek <lersek@redhat.com>
To: Andrew Fish <afish@apple.com>,
"David A. Van Arnem" <dvanarnem@cmlab.biz>
Cc: "edk2-devel@lists.01.org" <edk2-devel@ml01.01.org>
Subject: Re: DEBUG() macros in DXE driver: can’t make it work in QEMU
Date: Thu, 16 Feb 2017 19:59:04 +0100 [thread overview]
Message-ID: <58a753b5-77f5-fa9e-2691-900af38fe0bc@redhat.com> (raw)
In-Reply-To: <F0DA204C-55AE-4B74-87DF-3A5C8B42FC3B@apple.com>
On 02/16/17 19:05, Andrew Fish wrote:
>
>> On Feb 15, 2017, at 4:39 AM, Laszlo Ersek <lersek@redhat.com
>> <mailto:lersek@redhat.com>> wrote:
>>
>> On 02/15/17 01:00, David A. Van Arnem wrote:
>>>
>>>
>>> On 02/14/2017 04:46 PM, Nikolay Bodunov wrote:
>>>> Hi
>>>>
>>>> I red this topic before asking the question in the maillist.
>>>> Unfortunately,
>>>> it's not for DXE phase.
>>>> I even tried to use it and recieved expected compiler error:
>>>>
>>>> error 1001: Module type [PEIM] is not supported by library instance
>>>> [/home/nick/src/edk2/MdePkg/Library/UefiDebugLibConOut/
>>>> UefiDebugLibConOut.inf]
>>>> consumed by [/home/nick/src/edk2/MdeModulePkg/Bus/Pci/
>>>> SdMmcPciHcPei/SdMmcPciHcPei.inf]
>>>
>>> Hi,
>>>
>>> MdePkg/Library/UefiDebugLibConOut/UefiDebugLibConOut.inf lists
>>> DXE_DRIVER in its [Defines] section under LIBRARY_CLASS, so it is
>>> compatible with DXE_DRIVER module types (I have used it this way).
>>> However, if I'm reading your output correctly, you are trying to build a
>>> PEI module which is why you are getting the error. PEI is outside of my
>>> knowledge.
>>
>> In the PEI phase, no such thing exists as "system console" (that's a
>> UEFI construct), hence the fact that UefiDebugLibConOut (which prints to
>> said console) rejects being linked into PEIMs (PEI modules) is justified.
>>
>> Again, a suitable DebugLib instance should be chosen (in the DSC file
>> where the PEIM in question is listed too, resolving the DebugLib class
>> for PEIMs), and DEBUG() macros should be used for logging.
>>
>
> The build system is very flexible and can be a bit confusing. I find it
> useful to generate a report by passing --report-file=REPORTFILE to the
> build command. This will generate a report that will tell you per driver
> what libraries actually got linked (include libraries that libraries
> depend on). it will show all the fixed PCD settings as visible to the
> driver. If an FV was constructed it will also show the Depex that
> determines dispatch order, and again this can be changed by the
> libraries that get used.
>
> The idea behind the flexibility was that a chip or card vendor could
> write code using #include <Library/DebugLib.h> and link against DebugLib
> and it would work for any platform. Actually you could have multiple
> platforms in a single repository that share that code that all use
> different debug strategies, without the need to change chip or card
> vendor code. Thus we kind of had a push the configuration choices into
> the platform build kind of mind set.
>
> Well the problem with flexibility is complexity, and that is what the
> build logs help with.
I agree. I don't know why I failed to mention the report file, as it is
part of my OvmfPkg / ArmVirtPkg build wrapper scripts. The report file
is super useful; I frequently consult it. (For PCDs too.)
Thanks!
Laszlo
next prev parent reply other threads:[~2017-02-16 18:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-14 17:55 DEBUG() macros in DXE driver: can’t make it work in QEMU Nikolay Bodunov
2017-02-14 18:16 ` Laszlo Ersek
2017-02-14 18:28 ` Kinney, Michael D
2017-02-14 22:06 ` Nikolay Bodunov
2017-02-14 22:17 ` David A. Van Arnem
2017-02-14 22:36 ` Nikolay Bodunov
2017-02-14 23:14 ` David A. Van Arnem
2017-02-14 23:46 ` Nikolay Bodunov
2017-02-15 0:00 ` David A. Van Arnem
2017-02-15 12:39 ` Laszlo Ersek
2017-02-16 18:05 ` Andrew Fish
2017-02-16 18:59 ` Laszlo Ersek [this message]
2017-02-15 10:13 ` Laszlo Ersek
2017-02-15 17:19 ` Nikolay Bodunov
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=58a753b5-77f5-fa9e-2691-900af38fe0bc@redhat.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