<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Sep 30, 2019, at 3:35 PM, Laszlo Ersek <<a href="mailto:lersek@redhat.com" class="">lersek@redhat.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Hi Liming,</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 09/27/19 09:46, Liming Gao wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">__inline__ attribute will make the functions not be exposed as the<br class="">library interface. It will cause CLANG9 compiler fail.<br class=""><br class="">Signed-off-by: Liming Gao <<a href="mailto:liming.gao@intel.com" class="">liming.gao@intel.com</a>><br class="">---<br class="">MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c | 6 ------<br class="">1 file changed, 6 deletions(-)<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Did you regression-test this change against GCC48 (for example)?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I can't tell why we have the __inline__'s in the first place. They date</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">back to historical commit e1f414b6a7d8 ("Import some basic libraries</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">instances for Mde Packages.", 2007-06-22). And that commit does not</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">explain __inline__.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">If we remove __inline__ for the whole GCC toolchain *family*, then I</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">think we need a better justification than just "makes CLANG9 fail".</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div><div>Yikes,</div><div><br class=""></div><div>Looks like __inline__ is the C89 version of inline. </div><div><br class=""></div><div>I'm kind of surprised clang with LTO would just not ignore the inline, but then I came across....</div><div><br class=""></div><div><a href="https://en.wikipedia.org/wiki/Inline_function" class="">https://en.wikipedia.org/wiki/Inline_function</a></div><div>"<span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">gnu89 semantics of</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">and</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">are essentially the exact opposite of those in C99</span><sup id="cite_ref-4" class="reference" style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; line-height: 1; unicode-bidi: isolate; white-space: nowrap; font-size: 11.199999809265137px;"><a href="https://en.wikipedia.org/wiki/Inline_function#cite_note-4" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-position: initial initial; background-repeat: initial initial;" class="">[4]</a></sup><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">, with the exception that gnu89 permits redefinition of an</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">function as an unqualified function, while C99</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">does not</span><sup id="cite_ref-gcc-5-porting_5-0" class="reference" style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; line-height: 1; unicode-bidi: isolate; white-space: nowrap; font-size: 11.199999809265137px;"><a href="https://en.wikipedia.org/wiki/Inline_function#cite_note-gcc-5-porting-5" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-position: initial initial; background-repeat: initial initial;" class="">[5]</a></sup><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">. Thus, gnu89</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">without redefinition is like C99</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">, and gnu89</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">is like C99</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">; in other words, in gnu89, a function defined</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">will always and a function defined</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">will never emit an externally visible function. The rationale for this is that it matches variables, for which storage will never be reserved if defined as</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">extern</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">and always if defined without. The rationale for C99, in contrast, is that it would be</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><a href="https://en.wikipedia.org/wiki/Principle_of_least_astonishment" title="Principle of least astonishment" style="caret-color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px; text-decoration: none; color: rgb(11, 0, 128); background-image: none;" class="">astonishing</a><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">if using</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">would have a side-effect—to always emit a non-inlined version of the function—that is contrary to what its name suggests.</span></div><div style="margin: 0.5em 0px; line-height: inherit; caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">The remarks for C99 about the need to provide exactly one externally visible function instance for inlined functions and about the resulting problem with unreachable code apply mutatis mutandis to gnu89 as well.</div><div><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">gcc up to and including version 4.2 used gnu89</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">semantics even when</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=c99</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">was explicitly specified.</span><sup id="cite_ref-6" class="reference" style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; line-height: 1; unicode-bidi: isolate; white-space: nowrap; font-size: 11.199999809265137px;"><a href="https://en.wikipedia.org/wiki/Inline_function#cite_note-6" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-position: initial initial; background-repeat: initial initial;" class="">[6]</a></sup><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">With version 5</span><sup id="cite_ref-gcc-5-porting_5-1" class="reference" style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; line-height: 1; unicode-bidi: isolate; white-space: nowrap; font-size: 11.199999809265137px;"><a href="https://en.wikipedia.org/wiki/Inline_function#cite_note-gcc-5-porting-5" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-position: initial initial; background-repeat: initial initial;" class="">[5]</a></sup><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">, gcc switched from gnu89 to the gnu11 dialect, effectively enabling C99</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">semantics by default. To use gnu89 semantics instead, they have to be enabled explicitly, either with</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=gnu89</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">or, to only affect inlining,</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-fgnu89-inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">, or by adding the</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">gnu_inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">attribute to all</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">declarations. To ensure C99 semantics, either</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=c99</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">,</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=c11</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">,</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=gnu99</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">or</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-std=gnu11</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">(without</span><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class=""> </span><code style="caret-color: rgb(34, 34, 34); font-size: 14.000000953674316px; font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px;" class="">-fgnu89-inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px;" class="">) can be used.</span><sup id="cite_ref-gcc-inline_3-2" class="reference" style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; line-height: 1; unicode-bidi: isolate; white-space: nowrap; font-size: 11.199999809265137px;"><a href="https://en.wikipedia.org/wiki/Inline_function#cite_note-gcc-inline-3" style="text-decoration: none; color: rgb(11, 0, 128); background-image: none; background-position: initial initial; background-repeat: initial initial;" class="">[3]</a></sup>"</div><div><br class=""></div>And the above makes you look at the C99 definition "<span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px; background-color: rgb(255, 255, 255);" class="">In C99, a function defined </span><code style="font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px; font-size: 14.000000953674316px;" class="">inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px; background-color: rgb(255, 255, 255);" class=""> will never, and a function defined </span><code style="font-family: monospace, monospace; color: rgb(0, 0, 0); background-color: rgb(248, 249, 250); border: 1px solid rgb(234, 236, 240); border-top-left-radius: 2px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; border-bottom-left-radius: 2px; padding: 1px 4px; font-size: 14.000000953674316px;" class="">extern inline</code><span style="caret-color: rgb(34, 34, 34); color: rgb(34, 34, 34); font-family: sans-serif; font-size: 14.000000953674316px; background-color: rgb(255, 255, 255);" class=""> will always, emit an externally visible function. ". </span>So this make me wonder if clang is getting more pedantic about the C99 definition of inline (__inline__). So I wonder if we could use an` if ( __STDC_VERSION__ < 199901L)` to turn off the __inline__ to fix the clang issue?</div><div><br class=""></div><div>It also seems strange to me the __inline__ only exists next to the library function. Given it is not in the header (and the code is not in the header) I'm not really sure what the compiler can do? When the BaseIoLibIntrinsic library gets compiled it is going to create the intrinsic functions. It seems like code only comes together a link time? So unless the GCC linker was doing inline code generation at link time I'm not sure  how the __inline__ helps. Does the compiler tag the object with some kind of hint? If you are doing Link Time Optimization (LTO) the __inline__ is kind of a moot point as the code gen will always inline simple stuff like this. </div><div><br class=""></div><div>I'd point out when we ported to GCC we came from VC++ and always had LTO, so it is likely we did not have a good grasp of GCC inlining. Thus there is a non-zero chance this code is a no-op even on old GCC versions. But it is worth checking out. </div><div><br class=""></div><div>[1] <font color="#aaab25" class=""><span style="caret-color: rgb(170, 171, 37);" class=""> $ </span></font><span style="color: rgb(0, 0, 0); font-family: Menlo; font-size: 11px; font-variant-ligatures: no-common-ligatures;" class="">git grep __inline__</span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">35</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">63</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">90</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">120</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">148</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(0, 0, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures" class="">Library/BaseIoLibIntrinsic/IoLibGcc.c</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures" class="">178</span><span style="font-variant-ligatures: no-common-ligatures; color: #38b9c7" class="">:</span><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class="">__inline__</b></span></div><div class=""><span style="font-variant-ligatures: no-common-ligatures; color: #ca3323" class=""><b class=""><br class=""></b></span></div><div><br class=""></div><div>Thanks,</div><div><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span></div><div><span style="background-color: rgb(255, 255, 255);" class="">Andrew Fish</span></div><div><span style="background-color: rgb(255, 255, 255);" class=""><br class=""></span><blockquote type="cite" class=""><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Thanks</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Laszlo</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">diff --git a/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c b/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c<br class="">index 055f0a947e..b3a1a20256 100644<br class="">--- a/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c<br class="">+++ b/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c<br class="">@@ -32,7 +32,6 @@<br class="">  @return The value read.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT8<br class="">EFIAPI<br class="">IoRead8 (<br class="">@@ -60,7 +59,6 @@ IoRead8 (<br class="">  @return The value written the I/O port.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT8<br class="">EFIAPI<br class="">IoWrite8 (<br class="">@@ -87,7 +85,6 @@ IoWrite8 (<br class="">  @return The value read.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT16<br class="">EFIAPI<br class="">IoRead16 (<br class="">@@ -117,7 +114,6 @@ IoRead16 (<br class="">  @return The value written the I/O port.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT16<br class="">EFIAPI<br class="">IoWrite16 (<br class="">@@ -145,7 +141,6 @@ IoWrite16 (<br class="">  @return The value read.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT32<br class="">EFIAPI<br class="">IoRead32 (<br class="">@@ -175,7 +170,6 @@ IoRead32 (<br class="">  @return The value written the I/O port.<br class=""><br class="">**/<br class="">-__inline__<br class="">UINT32<br class="">EFIAPI<br class="">IoWrite32 (<br class=""><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""></span></div></blockquote></div><br class=""></body></html>

<div width="1" style="color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>

You receive all messages sent to this group.


<p>

<a target="_blank" href="https://edk2.groups.io/g/devel/message/48311">View/Reply Online (#48311)</a> |


  


|


  
    <a target="_blank" href="https://groups.io/mt/34309058/1813853">Mute This Topic</a>
  

| <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>



<br>

<a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> |
<a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |

<a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>

 [edk2-devel-archive@redhat.com]<br>
<div width="1" style="color:white;clear:both">_._,_._,_</div>