OUTPUT_FORMAT(elf64-x86-64)

ENTRY(_start)

PHDRS {
  text PT_LOAD;
  rodata PT_LOAD;
  data PT_LOAD;
}

SECTIONS {
  . = 0x0000500000000000;

  .text : {
    *(.text .text.*)
  } :text
  
  . = ALIGN(CONSTANT(MAXPAGESIZE));
  
  .rodata : {
    *(.rodata .rodata.*)
  } :rodata

  .note.gnu.build-id : {
    *(.note.gnu.build-id)
  } :rodata
  
  . = ALIGN(CONSTANT(MAXPAGESIZE));

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

  __bss_start = .;

  .bss : {
    *(.bss .bss.*)
  } :data

  __bss_end = .;

  /DISCARD/ : {
    *(.eh_frame*)
    *(.note .note.*)
  }
}
