On Thu, Apr 02, 2020 at 12:29:30 +0200, Ard Biesheuvel wrote:
> On 4/2/20 12:28 PM, Leif Lindholm wrote:
> > On Thu, Apr 02, 2020 at 12:20:54 +0200, Ard Biesheuvel wrote:
> > > On 4/2/20 12:16 PM, Leif Lindholm via groups.io wrote:
> > > > On Sat, Mar 28, 2020 at 11:43:17 +0100, Ard Biesheuvel wrote:
> > > > > Before getting rid of GetRootTranslationTableInfo() and the related
> > > > > LookupAddresstoRootTable() in AARCH64's version of ArmMmuLib, add a
> > > > > version of the former to CpuDxe, which will be its only remaining
> > > > > user. While at it, simplify it a bit, since in the CpuDxe cases,
> > > > > both OUT arguments are always provided.

Summary after discussing off-list:
This patch isn't *just* moving a public function private, but it's
replacing use of a function that was never meant to be public and had
a completely bonkers forward-declaration in a different module.

Ard has agreed to make the commit message more explicit on that point,
and I'm happy with that. So with that change, for the series:
Reviewed-by: Leif Lindholm <l...@nuviainc.com>

> > > > So, this may be super picky, but:
> > > > Deleting the prototype without making the definition also STATIC would
> > > > cause build errors with -Wmissing-prototypes (which someone might be
> > > > enabling explicitly or implicitly if say doing some code hardening on
> > > > the side).
> > > > 
> > > > Now, it's a valid point to say that -Wmissing-prototypes isn't in our
> > > > current CFLAGS, but I think it would be a good habit to get into.
> > > > So you get a:
> > > > 
> > > > Reviewed-by: Leif Lindholm <l...@nuviainc.com>
> > > > 
> > > > regardless, but I'd appreciate if you could sling a STATIC into
> > > > ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c as well before
> > > > pushing.
> > > > 
> > > 
> > > Well, while I see your point, please note that the prototype only exists 
> > > in
> > > a local header file that only gets included by CpuDxe, and not by any of 
> > > the
> > > other consumers of ArmMmuLib.
> > 
> > What I'm saying is that with -Wmissing-prototypes added, building
> > after applying this patch (but before applying the one that deletes
> > the function) gives:
> > 
> > "aarch64-linux-gnu-gcc"   -g -fshort-wchar -fno-builtin 
> > -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -ffunction-sections 
> > -fdata-sections -include AutoGen.h -fno-common 
> > -DSTRING_ARRAY_NAME=ArmMmuBaseLibStrings -g -Os -fshort-wchar -fno-builtin 
> > -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h 
> > -fno-common -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char 
> > -ffunction-sections -fdata-sections -Wno-address 
> > -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie 
> > -ffixed-x18 -mcmodel=small -flto -Wno-unused-but-set-variable 
> > -Wno-unused-const-variable -DMDEPKG_NDEBUG 
> > -DDISABLE_NEW_DEPRECATED_INTERFACES -mstrict-align -mgeneral-regs-only -c 
> > -o 
> > /work/git/tianocore/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/AARCH64/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib/OUTPUT/AArch64/ArmMmuLibCore.obj
> >  -I/work/git/edk2/ArmPkg/Library/ArmMmuLib/AArch64 
> > -I/work/git/edk2/ArmPkg/Library/ArmMmuLib 
> > -I/work/git/tianocore/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/AARCH64/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib/DEBUG
> >  -I/work/git/edk2/ArmPkg -I/work/git/edk2/ArmPkg/Include 
> > -I/work/git/edk2/EmbeddedPkg -I/work/git/edk2/EmbeddedPkg/Include 
> > -I/work/git/edk2/MdePkg -I/work/git/edk2/MdePkg/Include 
> > -I/work/git/edk2/MdePkg/Include/AArch64 
> > /work/git/edk2/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c
> > leif@vanye:/work/git/tianocore$ "aarch64-linux-gnu-gcc"   -g -fshort-wchar 
> > -fno-builtin -fno-strict-aliasing -Wall -Werror -Wno-array-bounds 
> > -ffunction-sections -fdata-sections -include AutoGen.h -fno-common 
> > -DSTRING_ARRAY_NAME=ArmMmuBaseLibStrings -g -Os -fshort-wchar -fno-builtin 
> > -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -include AutoGen.h 
> > -fno-common -mlittle-endian -fno-short-enums -fverbose-asm -funsigned-char 
> > -ffunction-sections -fdata-sections -Wno-address 
> > -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-pic -fno-pie 
> > -ffixed-x18 -mcmodel=small -flto -Wno-unused-but-set-variable 
> > -Wno-unused-const-variable -DMDEPKG_NDEBUG 
> > -DDISABLE_NEW_DEPRECATED_INTERFACES -mstrict-align -mgeneral-regs-only -c 
> > -o 
> > /work/git/tianocore/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/AARCH64/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib/OUTPUT/AArch64/ArmMmuLibCore.obj
> >  -I/work/git/edk2/ArmPkg/Library/ArmMmuLib/AArch64 
> > -I/work/git/edk2/ArmPkg/Library/ArmMmuLib 
> > -I/work/git/tianocore/Build/ArmVirtQemu-AARCH64/RELEASE_GCC5/AARCH64/ArmPkg/Library/ArmMmuLib/ArmMmuBaseLib/DEBUG
> >  -I/work/git/edk2/ArmPkg -I/work/git/edk2/ArmPkg/Include 
> > -I/work/git/edk2/EmbeddedPkg -I/work/git/edk2/EmbeddedPkg/Include 
> > -I/work/git/edk2/MdePkg -I/work/git/edk2/MdePkg/Include 
> > -I/work/git/edk2/MdePkg/Include/AArch64 
> > /work/git/edk2/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c 
> > -Wmissing-prototypes
> > /work/git/edk2/ArmPkg/Library/ArmMmuLib/AArch64/ArmMmuLibCore.c:109:1: 
> > error: no previous prototype for ‘GetRootTranslationTableInfo’ 
> > [-Werror=missing-prototypes]
> >   GetRootTranslationTableInfo (
> >   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > cc1: all warnings being treated as errors
> > 
> > So it breaks bisect if you're experimenting with hardening.
> > 
> > As I said, I don't insist, but I want to be sure you realise that bit
> > before you decide.
> > 
> 
> But none of the other consumers of ArmMmuLib do an #include of
> ArmPkg/Drivers/CpuDxe/CpuDxe.h, right? So I am slightly puzzled by this
> result.
>

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#56899): https://edk2.groups.io/g/devel/message/56899
Mute This Topic: https://groups.io/mt/72606847/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to