strace: Qstrace controls whether tracing is on
[akaros.git] / kern / arch / x86 / kernel64.ld
index d76bbc9..c1eafc3 100644 (file)
@@ -5,15 +5,7 @@
  * ld will offset our first section to 1MB within the actual file.  Multiboot
  * requires the header to be in the first two pages. */
 
-/* We're lying about our output format, so that grub thinks we are a 32 bit elf
- * and just loads our sections.  Since we're getting loaded into low memory, it
- * doesn't really matter (to grub) what our VMAs are.  Our LMAs are fine as
- * either 32 or 64 bit. */
-OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
-OUTPUT_ARCH(i386:x86-64)
-/* This is for a pure 64 bit elf: 
 OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
-*/
 ENTRY(_start)
 KERN_LOAD_ADDR = 0xffffffffc0000000;
 
@@ -23,9 +15,13 @@ SECTIONS
        . = 0x00100000;
 
        .bootstrap : {
-               *(.boottext .bootdata)
+               *(.boottext .bootdata .bootbss)
        }
 
+       /* Needed this for syslinux, which was sitting around 16MB phys.  This just
+        * jumps us forward to the 32MB mark, both physically and virtually. */
+       . = 0x02000000;
+
        /* Link the main kernel for the space after entry + KERN_LOAD_ADDR.  We'll
         * still load it adjacent in physical memory */
        . += KERN_LOAD_ADDR;
@@ -36,6 +32,9 @@ SECTIONS
 
        PROVIDE(etext = .);     /* Define the 'etext' symbol to this value */
 
+       INCLUDE kern/linker_tables.ld
+       INCLUDE kern/build_id.ld
+
        .rodata : {
                *(.rodata .rodata.* .gnu.linkonce.r.*)
        }
@@ -55,11 +54,11 @@ SECTIONS
                *(.data)
        }
 
-       PROVIDE(edata = .);
-
        .bss : {
+               PROVIDE(__start_bss = .);
                *(.bss)
                *(COMMON)
+               PROVIDE(__stop_bss = .);
        }
 
        PROVIDE(end = .);