Re: [edk2] [Linaro-uefi] Strange Issue With PcdGetXX()

Subject: Re: [edk2] [Linaro-uefi] Strange Issue With PcdGetXX()

From: Varad Gautam <varadgautam@gmail.com>

To: Andrew Fish <afish@apple.com>

Date: 2014-08-04 08:22:54

Issue fixed. I am using MLO to load the Fd, which loads u-boot.img at
CONFIG_SYS_TEXT_BASE=0x80800000 [1]. PcdFdBaseAddress needed to
be set to the same address.

[1] https://gitorious.org/rowboat/u-boot/source/562aa886438ea60cda487565b548b71407eaca26:include/configs/ti_armv7_common.h#L178

Thanks,
Varad


On Tue, Jul 29, 2014 at 9:05 PM, Andrew Fish <afish@apple.com> wrote:

On Jul 29, 2014, at 5:32 AM, Varad Gautam <varadgautam@gmail.com> wrote:

On Tue, Jul 29, 2014 at 3:34 PM, Olivier Martin <olivier.martin@arm.com> wrote:
> $ /work/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-objdump -S -D Build/BeagleBoard/DEBUG_GCC48/ARM/ArmPlatformPkg/PrePi/PeiUniCore/DEBUG/ArmPlatformPrePiUniCore.dll
>
>
>
> FdTop = (EFI_PHYSICAL_ADDRESS)PcdGet32(PcdFdBaseAddress) + (EFI_PHYSICAL_ADDRESS)PcdGet32(PcdFdSize);
>
> 705c: 4b90 ldr r3, [pc, #576] ; (72a0 <MemoryPeim+0x2a4>)
>
> 705e: 681b ldr r3, [r3, #0]
>
> 7060: 4618 mov r0, r3
>
> 7062: f04f 0100 mov.w r1, #0
>
> 7066: 4b8f ldr r3, [pc, #572] ; (72a4 <MemoryPeim+0x2a8>)
>
> 7068: 681b ldr r3, [r3, #0]
>
> 706a: 461a mov r2, r3
>
> 706c: f04f 0300 mov.w r3, #0
>
> (...)
>
> 72a0: 0000b4ec andeq fp, r0, ip, ror #9
>
> 72a4: 0000b4f0 strdeq fp, [r0], -r0
>
> (...)
>
> 0000b4ec <_gPcd_FixedAtBuild_PcdFdBaseAddress>:
>
> b4ec: 80008000 andhi r8, r0, r0
>
> 0000b4f0 <_gPcd_FixedAtBuild_PcdFdSize>:
>
> b4f0: 000b0000 andeq r0, fp, r0
>
> I noticed in an earlier email you mentioned ArmPlatformPrePiUniCore.lib. If you want to look at the final ELF file, you should have a look at .dll. I know the name is confusing... But .dll is actually a ELF file!

Thanks Olivier! The '.dll' dump looks similar to ^ and contains proper PCD values
at the right address. The '.lib' however shows all the PCDs to be at 00000000:

Disassembly of section .rodata._gPcd_FixedAtBuild_PcdFvBaseAddress:

00000000 <_gPcd_FixedAtBuild_PcdFvBaseAddress>:
0: 80008000 andhi r8, r0, r0


Is it all right that these two addresses are different?

Yes if the global was an extern then the library (set of object files) would contain an object relocation entry to let the linker know what filial value ends up at this address.

Note: The object relocations are not the same set as the image relocations that the EFI code supports in the PE/COFF libraries. The image relocations only have to fixup addresses, but object relocations also need to resolve external references.


Thanks,

Andrew Fish

If so, what else sould I check
to trace the fault?

Thanks,
Varad
------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls.
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk_______________________________________________


_______________________________________________
Linaro-uefi mailing list
Linaro-uefi@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-uefi