无垠之码

深度剖析代码之道


链接脚本-我的地盘我做主

基本概念

PROVIDE_HIDDEN

入门样例

#include <stdio.h>

int a;

int main(void) {
  printf("&a = %p", &a);
  return 0;
}
ENTRY(_start)

SECTIONS
{
  . = 0x01000000;
  .text : { 
    *(.text) 
  }
  
  . = 0x08000000;
  .data : { 
    HIDDEN(data_section_start = .);
    *(.data) 
    HIDDEN(data_section_end = .);
  }
  
  . = 0x16000000;
  .bss : { 
    *(.bss) 
  }

  .init_array :
  {
    PROVIDE_HIDDEN (__init_array_start = .);
    KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
    KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors))
    PROVIDE_HIDDEN (__init_array_end = .);
  }
}
comments powered by Disqus