ENTRY(__entry)

PHDRS {
	text PT_LOAD FLAGS(5);
	data PT_LOAD FLAGS(6);
	dynamic PT_DYNAMIC;
}

SECTIONS {
	. = 0x4000 + SIZEOF_HEADERS;
	
	.init : {
		*(.init);
	} :text
	.text : {
	        *(.text);
		*(.rodata*);
		*(.MIPS.stubs);
	} :text

	.rel.plt : {
		*(.rel.plt);
	}
	/* 
	 *.rel.dyn MUST FOLLOW IMMEDIATELY after .rel.plt 
	 * without alignment gap or DT_REL will be broken
	 */
	.rel.dyn : {
		*(.rel.*);
	} :text

	.plt : {
		*(.plt);
	} :text

	.hash : {
		*(.hash);
	} :text

	.dynsym : {
		*(.dynsym);
	} :text

	.dynstr : {
		*(.dynstr);
	} :text

	.dynamic : {
		*(.dynamic);
	} :text :dynamic

	. = . + 0x4000;

	.data : {
		*(.data);
		*(.data.rel*);
	} :data

	.got : {
		_gp = .;
		*(.got);
	} :data
/*
	.tdata : {
		_tdata_start = .;
		*(.tdata);
		_tdata_end = .;
	} :data
	.tbss : {
		_tbss_start = .;
		*(.tbss);
		_tbss_end = .;
	} :data
	_tls_alignment = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss));
*/
	.sbss : {
		*(.scommon);
		*(.sbss);
	}
	.bss : {
		*(.bss);
		*(COMMON);
	} :data

	. = ALIGN(0x4000);
	_heap = .;

	/DISCARD/ : {
		*(*);
	}
}
