ALIGN in Linker Scripts

后端 未结 3 938
梦如初夏
梦如初夏 2021-02-04 05:12

What does the ALIGN keyword do in linker scripts? I read many tutorials about linker scripts but I cant understand what really ALIGN do. Can any one explain it simply. Thanks!

相关标签:
3条回答
  • 2021-02-04 05:55

    A typical usage is

    . = ALIGN(8);
    

    This means: insert padding bytes until current location becomes aligned on 8-byte boundary. That is:

    while ((current_location & 7) != 0)
      *current_location++ = padding_value;
    
    0 讨论(0)
  • 2021-02-04 05:55

    The ALIGN() instructions tell the linker that section(bss, text) should be this much aligned.

    For a typical idea, you can take a look here (4.6.3 "Output Section Description")

    e.g.

        //.data is aligned by word size on the 32-bit architecture and direct it to the data section
    For a 32-bit machine, it typically needs to be word aligned 
    
            .data : ALIGN(4) 
            {
               *(.data*)
            } > data_sdram
    
    0 讨论(0)
  • 2021-02-04 06:05

    . = ALIGN(8)

    Corresponds to the following (working link script example using operators):

    data = .;
    
    . = ((data + 0x8 - 1) & ~(0x8 - 1)) - data;
    
    0 讨论(0)
提交回复
热议问题