I've created https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153 which should fix the issue. Please review and test.
Regards.
Alexei
________________________________ From: TF-A tf-a-bounces@lists.trustedfirmware.org on behalf of Alexei Fedorov via TF-A tf-a@lists.trustedfirmware.org Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.com raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com Cc: tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with .quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________ From: raghu.ncstate@icloud.com raghu.ncstate@icloud.com Sent: 30 July 2020 23:55 To: Alexei Fedorov Alexei.Fedorov@arm.com; Olivier Deprez Olivier.Deprez@arm.com Cc: tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren’s email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei’s fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.com raghu.ncstate@icloud.com Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' Alexei.Fedorov@arm.com; 'Olivier Deprez' Olivier.Deprez@arm.com Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I’ll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I’m using ENABLE_PIE=1 and I don’t see it in bl31.dump file with or without the “.word platform_normal_stacks” statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don’t see it being _removed_ by the linker. In either case I don’t see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes “declare_stack …” ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does “.word platform_normal_stacks” exist there in the first place? Not sure I understand that line’s purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error “./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I’m using? See gcc version below.
Command line I’m using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com; Alexei Fedorov Alexei.Fedorov@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
_____
From: TF-A <tf-a-bounces@lists.trustedfirmware.org mailto:tf-a-bounces@lists.trustedfirmware.org > on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org > Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com >; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com >; Lauren Wehrmeister <Lauren.Wehrmeister@arm.com mailto:Lauren.Wehrmeister@arm.com
Cc: tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org > Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
_____
From: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com > Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com >
Cc: tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org > Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren's email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei's fix.
Thanks Raghu
_____
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com > Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
; 'Olivier Deprez' <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com
Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I'll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com ; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com > Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
_____
From: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com > Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com >
Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I'm using ENABLE_PIE=1 and I don't see it in bl31.dump file with or without the ".word platform_normal_stacks" statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com ; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com > Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
_____
From: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com > Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com >
Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don't see it being _removed_ by the linker. In either case I don't see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes "declare_stack ." ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com ; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com > Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
_____
From: raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.com mailto:raghu.ncstate@icloud.com > Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com
; Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com >
Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does ".word platform_normal_stacks" exist there in the first place? Not sure I understand that line's purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.org mailto:tf-a-bounces@lists.trustedfirmware.org > On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com
; tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org
Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
_____
From: Olivier Deprez <Olivier.Deprez@arm.com mailto:Olivier.Deprez@arm.com
Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org mailto:tf-a@lists.trustedfirmware.org >; Alexei Fedorov <Alexei.Fedorov@arm.com mailto:Alexei.Fedorov@arm.com > Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial- build.html#performing-an-initial-build https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b uild.html#performing-an-initial-build However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A < mailto:tf-a-bounces@lists.trustedfirmware.org tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A < mailto:tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: mailto:tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A < mailto:tf-a-bounces@lists.trustedfirmware.org tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A < mailto:tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: mailto:tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org < mailto:tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I'm using? See gcc version below.
Command line I'm using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Good to know. Thanks for testing.
Alexei
________________________________ From: raghu.ncstate@icloud.com raghu.ncstate@icloud.com Sent: 31 July 2020 16:40 To: Alexei Fedorov Alexei.Fedorov@arm.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com Cc: tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com; Alexei Fedorov Alexei.Fedorov@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
________________________________
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren’s email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei’s fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; 'Olivier Deprez' <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I’ll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I’m using ENABLE_PIE=1 and I don’t see it in bl31.dump file with or without the “.word platform_normal_stacks” statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don’t see it being _removed_ by the linker. In either case I don’t see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes “declare_stack …” ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does “.word platform_normal_stacks” exist there in the first place? Not sure I understand that line’s purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error “./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I’m using? See gcc version below.
Command line I’m using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
I'm now able to compile with Alexei's fix, thanks!
When running the TSP CI test group and adding ENABLE_PIE: fvp-tspd,fvp-default:fvp-tftf-fip.tftf-foundationv8-tspd, I'm hitting an assert at Lib/arch64/misc_helper.S line 00563.
-Lauren
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 10:44 AM To: raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Good to know. Thanks for testing.
Alexei
________________________________ From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 31 July 2020 16:40 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
________________________________
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren's email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei's fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; 'Olivier Deprez' <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I'll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I'm using ENABLE_PIE=1 and I don't see it in bl31.dump file with or without the ".word platform_normal_stacks" statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don't see it being _removed_ by the linker. In either case I don't see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes "declare_stack ..." ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does ".word platform_normal_stacks" exist there in the first place? Not sure I understand that line's purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I'm using? See gcc version below.
Command line I'm using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Lauren,
What is X3 value when you get this assertion?
ldr x3, [x1, #8] cmp x3, #0x403 ASM_ASSERT(eq)
Alexei ________________________________ From: Lauren Wehrmeister Lauren.Wehrmeister@arm.com Sent: 31 July 2020 16:44 To: Alexei Fedorov Alexei.Fedorov@arm.com; raghu.ncstate@icloud.com raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com Cc: tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I’m now able to compile with Alexei’s fix, thanks!
When running the TSP CI test group and adding ENABLE_PIE: fvp-tspd,fvp-default:fvp-tftf-fip.tftf-foundationv8-tspd, I’m hitting an assert at Lib/arch64/misc_helper.S line 00563.
-Lauren
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 10:44 AM To: raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com; Lauren Wehrmeister Lauren.Wehrmeister@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Good to know. Thanks for testing.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 31 July 2020 16:40 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
________________________________
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren’s email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei’s fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; 'Olivier Deprez' <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I’ll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I’m using ENABLE_PIE=1 and I don’t see it in bl31.dump file with or without the “.word platform_normal_stacks” statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don’t see it being _removed_ by the linker. In either case I don’t see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes “declare_stack …” ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does “.word platform_normal_stacks” exist there in the first place? Not sure I understand that line’s purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error “./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I’m using? See gcc version below.
Command line I’m using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi Alexei,
The value of X3 is 0x0 when it gets to the assertion.
Thanks, Lauren
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 10:47 AM To: Lauren Wehrmeister Lauren.Wehrmeister@arm.com; raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Lauren,
What is X3 value when you get this assertion?
ldr x3, [x1, #8] cmp x3, #0x403 ASM_ASSERT(eq)
Alexei ________________________________ From: Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Sent: 31 July 2020 16:44 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I'm now able to compile with Alexei's fix, thanks!
When running the TSP CI test group and adding ENABLE_PIE: fvp-tspd,fvp-default:fvp-tftf-fip.tftf-foundationv8-tspd, I'm hitting an assert at Lib/arch64/misc_helper.S line 00563.
-Lauren
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 10:44 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Good to know. Thanks for testing.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 31 July 2020 16:40 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
________________________________
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren's email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei's fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; 'Olivier Deprez' <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I'll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I'm using ENABLE_PIE=1 and I don't see it in bl31.dump file with or without the ".word platform_normal_stacks" statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don't see it being _removed_ by the linker. In either case I don't see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes "declare_stack ..." ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does ".word platform_normal_stacks" exist there in the first place? Not sure I understand that line's purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I'm using? See gcc version below.
Command line I'm using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
Hi Lauren
I suspect that structure
* typedef struct * { * Elf64_Addr r_offset; * Elf64_Xword r_info; * Elf64_Sxword r_addend; * } Elf64_Rela;
with its address passed in X1 is not valid.
Regards.
Alexei
________________________________ From: Lauren Wehrmeister Lauren.Wehrmeister@arm.com Sent: 31 July 2020 17:32 To: Alexei Fedorov Alexei.Fedorov@arm.com; raghu.ncstate@icloud.com raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com Cc: tf-a@lists.trustedfirmware.org tf-a@lists.trustedfirmware.org Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Alexei,
The value of X3 is 0x0 when it gets to the assertion.
Thanks,
Lauren
From: Alexei Fedorov Alexei.Fedorov@arm.com Sent: Friday, July 31, 2020 10:47 AM To: Lauren Wehrmeister Lauren.Wehrmeister@arm.com; raghu.ncstate@icloud.com; Olivier Deprez Olivier.Deprez@arm.com Cc: tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Lauren,
What is X3 value when you get this assertion?
ldr x3, [x1, #8]
cmp x3, #0x403
ASM_ASSERT(eq)
Alexei
________________________________
From: Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Sent: 31 July 2020 16:44 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I’m now able to compile with Alexei’s fix, thanks!
When running the TSP CI test group and adding ENABLE_PIE: fvp-tspd,fvp-default:fvp-tftf-fip.tftf-foundationv8-tspd, I’m hitting an assert at Lib/arch64/misc_helper.S line 00563.
-Lauren
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 10:44 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Good to know. Thanks for testing.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 31 July 2020 16:40 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
.quad works for me(even with SPD=tspd). Thanks for the fix.
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Friday, July 31, 2020 7:38 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
I've created
https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/5153
which should fix the issue. Please review and test.
Regards.
Alexei
________________________________
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 31 July 2020 10:22 To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; Lauren Wehrmeister <Lauren.Wehrmeister@arm.commailto:Lauren.Wehrmeister@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi,
Could you replace
.word platform_normal_stacks with
.quad platform_normal_stacks
in plat\common\aarch64\platform_mp_stack.S
and check if it fixes the issue?
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 23:55 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Cc: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
+tf-a mailing list. Merging Lauren’s email.
Hi Lauren,
What command did you use to build TSP? I used the same command line from my original email and added SPD=tspd and I was able to get it to compile with Alexei’s fix.
Thanks Raghu
________________________________
Hi,
I also came across this issue as I'm trying to create test configurations for compiling BL31/TSP/BL2_AT_EL3 as PIEs, the fix suggested by Alexei worked for BL2_AT_EL3, but it did not work for TSP. I am getting the same error message as Raghu: "./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". Any suggestions?
Thanks,
Lauren
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: Thursday, July 30, 2020 9:15 AM To: 'Alexei Fedorov' <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; 'Olivier Deprez' <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks I’ll try with GCC 11.0. What happens when you run a build without platform_normal_stacks? Does it even boot for you or does it crash in linux?? Trying to understand how you figured this was an issue and what prompted you to fix this by adding the adrp/.word.
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 9:02 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Yes. I'm using ENABLE_PIE=1, but the same behaviour will be observed with ENABLE_PIE=0 (except that the linker error won't be reported).
I'm isning GCC 11.0.0.
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 16:50 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks. Are you using ENABLE_PIE=1? I’m using ENABLE_PIE=1 and I don’t see it in bl31.dump file with or without the “.word platform_normal_stacks” statement. However, when I do run FVP to linux without the statement, I see secondary a crash in EL3 with unhandled exception. So it is definitely required. Just trying to pin point what exactly is causing the crash.
Thanks
Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 8:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
With "platform_normal_stacks":
bl31.dump
0000000004015280 l stacks 0000000000000000 platform_normal_stacks
bl31.map:
stacks 0x0000000004015280 0x4000
*(tzfw_normal_stacks)
tzfw_normal_stacks
0x0000000004015280 0x4000 ./build/fvp/debug/bl31/platform_mp_stack.o
0x0000000004019280 __STACKS_END__ = .
Without:
platform_normal_stacks is missing from bl31.dump,
bl31.map:
stacks 0x0000000004015270 0x2d90
0x0000000004015270 __STACKS_START__ = .
*(tzfw_normal_stacks)
0x0000000004018000 __STACKS_END__ = .
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:58 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Makes sense. Thanks. I just tried both debug and release builds, but I don’t see it being _removed_ by the linker. In either case I don’t see symbol information for platform_normal_stacks and only see symbol information for __STACK_START__.
So what exactly are you referring to when the linker removes “declare_stack …” ? Also what build configuration?
-Raghu
From: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Sent: Thursday, July 30, 2020 7:43 AM To: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Having
platform_normal_stacks
referenced prevents linker from removal of
declare_stack platform_normal_stacks, tzfw_normal_stacks, \
PLATFORM_STACK_SIZE, PLATFORM_CORE_COUNT, \
CACHE_WRITEBACK_GRANULE
Regards.
Alexei
________________________________
From: raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com <raghu.ncstate@icloud.commailto:raghu.ncstate@icloud.com> Sent: 30 July 2020 15:31 To: Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com>; Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Subject: RE: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Thanks Olivier, Alexei.
Is it a copy/paste typo?
[RK]Yes.
Replace .word platform_normal_stacks with adrp x0, platform_normal_stacks
[RK]Sure. I can do that. But why does “.word platform_normal_stacks” exist there in the first place? Not sure I understand that line’s purpose. What does replacing it with adrp x0, platform_normal_stacks do? The instruction is after a ret and looks like it will not be executed.
I am using aarch64-non-elf- as the toolchain.
Thanks
Raghu
From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> On Behalf Of Alexei Fedorov via TF-A Sent: Thursday, July 30, 2020 6:58 AM To: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com>; tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Replace
.word platform_normal_stacks
with
adrp x0, platform_normal_stacks
Regards.
Alexei.
________________________________
From: Olivier Deprez <Olivier.Deprez@arm.commailto:Olivier.Deprez@arm.com> Sent: 30 July 2020 14:17 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org>; Alexei Fedorov <Alexei.Fedorov@arm.commailto:Alexei.Fedorov@arm.com> Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Hi Raghu,
On the toolchain question you would normally use CROSS_COMPILE=aarch64-none-elf- as recommended here: https://trustedfirmware-a.readthedocs.io/en/latest/getting_started/initial-b... However this does not seem to be the root cause of the problem you report.
I reproduce the build issue, however it's not yet clear to me if this platform_normal_stacks variable should be rather placed in a specific section (.data?), rather than embedded in the code. Tbc.
Regards, Olivier.
________________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Alexei Fedorov via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 14:53 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org Subject: Re: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
Is it a copy/paste typo? CTX_INCLUDE_EL2)REGS
Regards. Alexei ________________________________ From: TF-A <tf-a-bounces@lists.trustedfirmware.orgmailto:tf-a-bounces@lists.trustedfirmware.org> on behalf of Raghu Krishnamurthy via TF-A <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Sent: 30 July 2020 02:44 To: tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.orgmailto:tf-a@lists.trustedfirmware.org> Subject: [TF-A] Linker error on integration branch for FVP with ENABLE_PIE
When I compile TF-A code on the integration branch with the ENABLE_PIE=1 option for FVP, I get a linker error “./build/fvp/debug/bl31/platform_mp_stack.o: relocation R_AARCH64_ABS32 against `a local symbol' can not be used when making a shared object". It appears to be related to line 62(.word platform_normal_stack) of plat/common/aarch64/platform_mp_stack.S that was introduced by https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/4301 . It looks like the linker is having trouble resolving this symbol for which I cant find a use for.
If I remove line 62 or set ENABLE_PIE=0, the below command line to compile succeeds. What is the use of line 62 in the file? Seems like it may have some use in other configurations that are not obvious. Or is the issue due to the toolchain I’m using? See gcc version below.
Command line I’m using:
make CROSS_COMPILE=aarch64-none-linux-gnu- TRUSTED_BOARD_BOOT=1 GENERATE_COT=1 DEBUG=1 LOG_LEVEL=40 MBEDTLS_DIR=../mbed-tls PLAT=fvp ARM_ROTPK_LOCATION=regs CTX_INCLUDE_PAUTH_REGS=1 CTX_INCLUDE_EL2)REGS=1 ARM_ARCH_MINOR=5 ENABLE_PIE=1 BRANCH_PROTECTION=1 FVP_HW_CONFIG_DTS=fdts/fvp-base-gicv3-psci-1t.dts BL33=<path_to_bl33> all fip
Compiler version: aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025
Thanks
Raghu
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
tf-a@lists.trustedfirmware.org