ENTRY(_start)

PHDRS
{
    text          PT_LOAD    FLAGS((1 << 0) | (1 << 2)) ; /* Execute + Read */
    rodata        PT_LOAD    FLAGS((1 << 2)) ;            /* Read only */
    data          PT_LOAD    FLAGS((1 << 1) | (1 << 2)) ; /* Write + Read */
}

SECTIONS
{
    . = 0x10000;

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

    .rodata : ALIGN(8) {
        *(.rodata)
        *(.rodata.*)
    } :rodata

    .data : ALIGN(8) {
        *(.data)
        *(.data.*)
    } :data

    .bss : ALIGN(8) {
        __bss_start = .;
        *(.bss)
        *(.bss.*)
        __bss_end = .;
    } :data
}