diff --git a/tools/tcc/linkerscript/a.out.lds b/tools/tcc/linkerscript/a.out.lds index c667df3e5b19d987bd5358c0426c334141d0713a..a7f7f41a8ab71811ca15264f2e099295c743bdeb 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) } }