OUTPUT_FORMAT("elf32-z80", "elf32-z80", "elf32-z80")
OUTPUT_ARCH(z80)
ENTRY(_start)
/*PHDRS
{
	text PT_LOAD ;
	rodata PT_LOAD ;
	data PT_LOAD ;
	bss PT_LOAD ;
}*/
SECTIONS
{
	/* Main binary */
	PROVIDE(_org = .);
	. = _org;
	PROVIDE(_text = _org);
	__text = SEGMENT_START("text", _text);
	".init$absolute"   = __text != .;
	".text$absolute"   = __text != .;
	".rodata$absolute" = __text != .;
	. = __text;

	.init	    : {
		    __init_start = .;
		    KEEP(*(SORT_BY_NAME(.init*)))
		    __init_end = .;
		    } /*:text*/
	.text	    : {
		    __text_start = .;
		    *(.text*)
		    __text_end = .;
		    } /*:text*/
	.rodata	    : {
		    __rodata_start = .;
		    *(.rodata*)
		    __rodata_end = .;
		    } /*:rodata*/

	PROVIDE(_data = .);
	__data = SEGMENT_START("data", _data);
	".data$absolute" = __data != .;
	. = __data;

	.data	    : {
		    __data_start = .;
		    *(.data*)
		    __data_end = .;
		    } /*:data*/

	PROVIDE(_bss = .);
	__bss = SEGMENT_START("bss", _bss);
	".bss$absolute" = __bss != .;
	. = __bss;

	.bss (NOLOAD) : {
		    __bss_start = .;
		    *(.bss*)
		    __bss_end = .;
		    } /*:bss*/

	PROVIDE(_brk = .);
	__brk = SEGMENT_START("brk", _brk);
	".brk$absolute" = __brk != .;
	. = __brk;

	/* .brk is like .bss, except will always be last for grow-up data */
	.brk (NOLOAD) : {
		    __brk_start = .;
		    *(.brk*)
		    __brk_end = .;
		    } /*:bss*/

	_end = .; PROVIDE (end = .);

	/* Stabs debugging sections.  */
	.stab          0 : { *(.stab) }
	.stabstr       0 : { *(.stabstr) }
	.stab.excl     0 : { *(.stab.excl) }
	.stab.exclstr  0 : { *(.stab.exclstr) }
	.stab.index    0 : { *(.stab.index) }
	.stab.indexstr 0 : { *(.stab.indexstr) }
	.comment       0 : { *(.comment) }
	.gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) }
	/* DWARF debug sections.
	Symbols in the DWARF debugging sections are relative to the beginning
	of the section so we begin them at 0.  */
	/* DWARF 1.  */
	.debug          0 : { *(.debug) }
	.line           0 : { *(.line) }
	/* GNU DWARF 1 extensions.  */
	.debug_srcinfo  0 : { *(.debug_srcinfo) }
	.debug_sfnames  0 : { *(.debug_sfnames) }
	/* DWARF 1.1 and DWARF 2.  */
	.debug_aranges  0 : { *(.debug_aranges) }
	.debug_pubnames 0 : { *(.debug_pubnames) }
	/* DWARF 2.  */
	.debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
	.debug_abbrev   0 : { *(.debug_abbrev) }
	.debug_line     0 : { *(.debug_line .debug_line.* .debug_line_end) }
	.debug_frame    0 : { *(.debug_frame) }
	.debug_str      0 : { *(.debug_str) }
	.debug_loc      0 : { *(.debug_loc) }
	.debug_macinfo  0 : { *(.debug_macinfo) }
	/* SGI/MIPS DWARF 2 extensions.  */
	.debug_weaknames 0 : { *(.debug_weaknames) }
	.debug_funcnames 0 : { *(.debug_funcnames) }
	.debug_typenames 0 : { *(.debug_typenames) }
	.debug_varnames  0 : { *(.debug_varnames) }
	/* DWARF 3.  */
	.debug_pubtypes 0 : { *(.debug_pubtypes) }
	.debug_ranges   0 : { *(.debug_ranges) }
	/* DWARF 5.  */
	.debug_addr     0 : { *(.debug_addr) }
	.debug_line_str 0 : { *(.debug_line_str) }
	.debug_loclists 0 : { *(.debug_loclists) }
	.debug_macro    0 : { *(.debug_macro) }
	.debug_names    0 : { *(.debug_names) }
	.debug_rnglists 0 : { *(.debug_rnglists) }
	.debug_str_offsets 0 : { *(.debug_str_offsets) }
	.debug_sup      0 : { *(.debug_sup) }
	.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
	/DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) }
}
