Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22052

How to make section physical address to zero in GCC elf file?

$
0
0

Currently I am working on PowerPC target with GCC and Greenhills compiler, I found the Greenhills compiler can always generate sections with all zero pyhsical address of sections in elf, Here is sample link command file for Greenhills compiler :

MEMORY { RESETWORD   : org = 0x00f8c000, len = 0x00000020 ROM1        : org = 0x09000040, len = 0x00000FC0}SECTIONS {     .resetword                    NOCHECKSUM : > RESETWORD     .startup                        ALIGN(4) : > ROM1} 

I created a similar linker command file for GCC:

MEMORY { RESETWORD   : ORIGIN = 0x00f8c000, LENGTH = 0x00000020 ROM1        : ORIGIN = 0x09000040, LENGTH = 0x00000FC0}SECTIONS{    .resetword : {        *(.resetword )    } > RESETWORD      .startup :  ALIGN(4){        *(.startup)    } > ROM1}

After I generate the ELF file, I found the ELF file generated by Greenhills shows the Program Headers:

  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align  LOAD           0x000960 0x09000040 0x00000000 0x001b8 0x001b8 R E 0x4

the section header:

  [ 1] .startup          PROGBITS        09000040 000960 0001b8 00 AXV  0   0  4

the physaddr is zero. but the GCC one is

Program Headers:  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align  LOAD           0x010040 0x09000040 0x09000040 0x001b8 0x001b8 R E 0x10000

the section header:

  [ 1] .startup          PROGBITS        09000040 010040 0001b8 00 AXV  0   0  4

I understand that the ELF has LMA(PhysAddr) and VMA(VirtAddr) and the ELF standard doesn't depends on the compiler, why the greenhills can generate the physical address with zero? how can I do that same thing in GCC?


Viewing all articles
Browse latest Browse all 22052

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>