Recent

Author Topic: [SOLVED] smartlinking with LD  (Read 382 times)

Key-Real

  • Sr. Member
  • ****
  • Posts: 362
[SOLVED] smartlinking with LD
« on: July 16, 2024, 11:39:18 am »
i have the tf_smartlink_sections in tsysteminfo.flags
he make me:

Code: Pascal  [Select][+][-]
  1. .section .text.n_si_prc_$$__fpc_proc_start$$longint,"ax"

so my section name is .text.n_si_prc_$$__fpc_proc_start$$longint

that's good :)

my linker.ld is:
Code: Pascal  [Select][+][-]
  1. MEMORY
  2. {
  3.         ram (rwx) : ORIGIN = 0x80010000, LENGTH = 2M - 64K
  4. }
  5. STARTUP(./rtl/ps1/si_prc.o)
  6. SECTIONS
  7. {
  8.         .text : ALIGN(8) {
  9.                 __exe_start__ = .;
  10.                 __text_start__ = .;
  11.                 *(.text .text.*)
  12.                 __text_end__ = .;
  13.                 __text_size__ = __text_start__ - __text_end__;
  14.         } > ram
  15.  
  16.         .rodata : ALIGN(8) {
  17.                 __rdata_start__ = .;
  18.                 *(.rdata .rdata.* .rodata .rodata.*)
  19.                 __rdata_end__ = .;
  20.                 __rdata_size__ = __rdata_end__ - __rdata_start__;
  21.         } > ram
  22.  
  23.         .ctors : ALIGN(8) {
  24.                 __ctors_start__ = .;
  25.                 KEEP(*(.ctors))
  26.                 KEEP(*(SORT(.ctors.*)))
  27.                 __ctors_end__ = .;
  28.                 __ctors_size__ = __ctors_end__ - __ctors_start__;
  29.         } > ram
  30.  
  31.         .dtors : ALIGN(8) {
  32.                 __dtors_start__ = .;
  33.                 KEEP(*(.dtors))
  34.                 KEEP(*(SORT(.dtors.*)))
  35.                 __dtors_end__ = .;
  36.                 __dtors_size__ = __dtors_end__ - __dtors_start__;
  37.         } > ram
  38.  
  39.         .data : ALIGN(8) {
  40.                 __sdata_start__ = .;
  41.                 *(.sdata .sdata.*)
  42.                 __sdata_end__ = .;
  43.                 __sdata_size__ = __sdata_end__ - __sdata_start__;
  44.                 __data_start__ = .;
  45.                 *(.data .data.*)
  46.                 SORT(CONSTRUCTORS)
  47.                 . = ALIGN(2048);
  48.                 __data_end__ = .;
  49.                 __exe_end__ = .;
  50.                 __data_size__ = __data_end__ - __data_start__;
  51.         } > ram
  52.  
  53.         __exe_size__ = __exe_end__ - __exe_start__;
  54.  
  55.         .sbss : ALIGN(64) {
  56.                 __sbss_start__ = .;
  57.                 *(.sbss .sbss.*)
  58.                 __sbss_end__ = .;
  59.                 __sbss_size__ = __sbss_end__ - __sbss_start__;
  60.         } > ram
  61.  
  62.         .bss : ALIGN(64) {
  63.                 __bss_start__ = .;
  64.                 *(.bss .bss.*)
  65.                 *(COMMON)
  66.                 . = ALIGN(64);
  67.                 __bss_end__ = .;
  68.                 __bss_size__ = __bss_end__ - __bss_start__;
  69.         } > ram
  70. }
  71.  

If I link with
ld --gc-sections
he strips me ALL the text sections, here i have an empty .asm file after dump

how to change the linker script?
« Last Edit: July 16, 2024, 12:53:36 pm by Key-Real »

Key-Real

  • Sr. Member
  • ****
  • Posts: 362
Re: smartlinking
« Reply #1 on: July 16, 2024, 12:02:10 pm »
do i have to create a .text.[name] section for every function?

Key-Real

  • Sr. Member
  • ****
  • Posts: 362
Re: smartlinking
« Reply #2 on: July 16, 2024, 12:53:19 pm »
If You wanna link with --gc-sections

use an ENTRYPOINT() and KEEP() derictives:
Code: Pascal  [Select][+][-]
  1. MEMORY
  2. {
  3.         ram (rwx) : ORIGIN = 0x80010000, LENGTH = 2M - 64K
  4. }
  5. ENTRY(main)
  6. SECTIONS
  7. {
  8.         .text : ALIGN(8) {
  9.                 __exe_start__ = .;
  10.                 __text_start__ = .;
  11.                 KEEP(*(.text.n_main));
  12.                 *(.text .text.*)
  13.                 __text_end__ = .;
  14.                 __text_size__ = __text_start__ - __text_end__;
  15.         } > ram
  16.  
  17.         .rodata : ALIGN(8) {
  18.                 __rdata_start__ = .;
  19.                 *(.rdata .rdata.* .rodata .rodata.*)
  20.                 __rdata_end__ = .;
  21.                 __rdata_size__ = __rdata_end__ - __rdata_start__;
  22.         } > ram
  23.  
  24.         .ctors : ALIGN(8) {
  25.                 __ctors_start__ = .;
  26.                 KEEP(*(.ctors))
  27.                 KEEP(*(SORT(.ctors.*)))
  28.                 __ctors_end__ = .;
  29.                 __ctors_size__ = __ctors_end__ - __ctors_start__;
  30.         } > ram
  31.  
  32.         .dtors : ALIGN(8) {
  33.                 __dtors_start__ = .;
  34.                 KEEP(*(.dtors))
  35.                 KEEP(*(SORT(.dtors.*)))
  36.                 __dtors_end__ = .;
  37.                 __dtors_size__ = __dtors_end__ - __dtors_start__;
  38.         } > ram
  39.  
  40.         .data : ALIGN(8) {
  41.                 __sdata_start__ = .;
  42.                 *(.sdata .sdata.*)
  43.                 __sdata_end__ = .;
  44.                 __sdata_size__ = __sdata_end__ - __sdata_start__;
  45.                 __data_start__ = .;
  46.                 *(.data .data.*)
  47.                 SORT(CONSTRUCTORS)
  48.                 . = ALIGN(2048);
  49.                 __data_end__ = .;
  50.                 __exe_end__ = .;
  51.                 __data_size__ = __data_end__ - __data_start__;
  52.         } > ram
  53.  
  54.         __exe_size__ = __exe_end__ - __exe_start__;
  55.  
  56.         .sbss : ALIGN(64) {
  57.                 __sbss_start__ = .;
  58.                 *(.sbss .sbss.*)
  59.                 __sbss_end__ = .;
  60.                 __sbss_size__ = __sbss_end__ - __sbss_start__;
  61.         } > ram
  62.  
  63.         .bss : ALIGN(64) {
  64.                 __bss_start__ = .;
  65.                 *(.bss .bss.*)
  66.                 *(COMMON)
  67.                 . = ALIGN(64);
  68.                 __bss_end__ = .;
  69.                 __bss_size__ = __bss_end__ - __bss_start__;
  70.         } > ram
  71. }
  72.  

 

TinyPortal © 2005-2018