From d82eaf2a29ef0757737585a7ce537aaa8c9ed101 Mon Sep 17 00:00:00 2001 From: HsFatal Date: Sun, 8 Aug 2021 11:45:08 +0800 Subject: [PATCH] Adapt linker script to support Loading a.out file in 0x0 memory 1. In linker script, using LMA to generate binary file and using VMA to generate runtime memory models 2. Align text/data section size to 0x400 --- tools/tcc/linkerscript/a.out.lds | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tools/tcc/linkerscript/a.out.lds b/tools/tcc/linkerscript/a.out.lds index c667df3..a7f7f41 100644 --- a/tools/tcc/linkerscript/a.out.lds +++ b/tools/tcc/linkerscript/a.out.lds @@ -1,34 +1,41 @@ OUTPUT_FORMAT(binary) SECTIONS { - . = 0x400; - .text : ALIGN(0x400) { + . = 0x0; + .text : AT(0x400) { PROVIDE(.text_begin = .); *(.text) PROVIDE(.text_end = .); } - .data : ALIGN(0x400) { + .data ALIGN(0x400) : { PROVIDE(.data_begin = .); *(.data) *(.rodata) *(.rodata1) PROVIDE(.data_end = .); } - .bss : ALIGN(0x400) { + .bss ALIGN(0x400) : { PROVIDE(.bss_begin = .); *(.bss) PROVIDE(.bss_end = .); } - .symtab : ALIGN(0x400) { + .symtab ALIGN(0x400) : { PROVIDE(.sym_begin = .); *(.symtab) PROVIDE(.sym_end = .); } - PROVIDE(.textsize = SIZEOF(.text)); - PROVIDE(.datasize = SIZEOF(.data)); + PROVIDE(.textsize = (SIZEOF(.text) + 0x400 - 1) & ~( 0x400 - 1 )); + PROVIDE(.datasize = (SIZEOF(.data) + 0x400 - 1) & ~( 0x400 - 1 )); PROVIDE(.bsssize = SIZEOF(.bss)); - PROVIDE(.symsize = SIZEOF(.symtab)); - . = 0x0; - .header : { *a.out.header(.a.out.header) } + PROVIDE(.symsize = 0); + .header ALIGN(0x400) : AT(0x0){ + LONG(267) + LONG(.textsize) + LONG(.datasize) + LONG(.bsssize) + LONG(0) + LONG(0) + LONG(0) + } /DISCARD/ : { *(.eh_frame) *(.comment) *(.rel.eh_frame) *(.note.GNU-stack) } } -- Gitee