Hi,
I noticed that the ATF for some SoCs is not linked to an aligned address. E.g. ZYNQ-US.
There is a linker flag for on GNU-LD "--nmagic" which disables page alignment.
The problem does not affect the section table but the program headers.
Without `--nmagic` the Program Headers (PHDRS) look like this:
$ aarch64-linux-gnu-readelf -l bl31.elf
```
Elf file type is EXEC (Executable file)
Entry point 0xfffea000
There are 2 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000000000 0x00000000fffe0000 0x00000000fffe0000
0x0000000000016a4d 0x000000000001f000 RWE 0x10000
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 0x10
Section to Segment mapping:
Segment Sections...
00 .text .rodata .data stacks .bss xlat_table coherent_ram
01
```
while with `--nmagic` the program headers look like this:
$ aarch64-linux-gnu-readelf -l bl31.elf
```
Elf file type is EXEC (Executable file)
Entry point 0xfffea000
There are 2 program headers, starting at offset 64
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flags Align
LOAD 0x0000000000001000 0x00000000fffea000 0x00000000fffea000
0x000000000000ca4d 0x0000000000015000 RWE 0x1000
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 0x10
Section to Segment mapping:
Segment Sections...
00 .text .rodata .data stacks .bss xlat_table coherent_ram
01
```
. The BIG difference is that that without the PHDRS basically say to load the file copy
(<start of elf file>+0x0)++0x16a4d to 0xFFFE0000 on the platform
. This includes the ELF header by the way + overwrites for ZYNQ-US the FSBL-Handoff table when using Xilinx FSBL.
When I link with page alignment disabled the PHDRS basically say to load the file copy
(<start of elf file>+0x1000)++0xca4d to 0xFFFEA000 on the platform
. This time the FSBL-Handoff table gets not overwritten on ZYNQ-US.
Some debug solutions on the market perfer to use the PHDRS (e.g. to load code for a foreign architecture) over the section table. Thus it destroys the in my situation the FSBL handoff.
Is there a reason why ATF does not link with --nmagic?
Is there another reason why the debug symbols are not generated when compiling in release?