Prevent NULL from ever pointing to some real code or data. (This was
authorMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 20:28:20 +0000 (20:28 +0000)
committerMichael Brown <mcb30@etherboot.org>
Wed, 20 Dec 2006 20:28:20 +0000 (20:28 +0000)
causing the serial console to ignore input, because it happened to end up
linked with serial_ischar() at address 0, which core/console.c decided was
invalid).

src/arch/i386/scripts/i386-kir.lds
src/arch/i386/scripts/i386.lds

index 3095b31..401298c 100644 (file)
@@ -64,6 +64,8 @@ SECTIONS {
     . = _text16_link_addr;
     _text16 = .;
 
+    . += 1;                    /* Prevent NULL being valid */
+
     .text16 : AT ( _text16_load_offset + __text16 ) {
        __text16 = .;
        *(.text.null_trap)
@@ -80,6 +82,8 @@ SECTIONS {
     . = _data16_link_addr;
     _data16 = .;
 
+    . += 1;                    /* Prevent NULL being valid */
+
     .rodata16 : AT ( _data16_load_offset + __rodata16 ) {
        __rodata16 = .;
        *(.rodata16)
index 3077609..6adb6b9 100644 (file)
@@ -65,6 +65,8 @@ SECTIONS {
     . = _text16_link_addr;
     _text16 = .;
 
+    . += 1;                    /* Prevent NULL being valid */
+
     .text16 : AT ( _text16_load_offset + __text16 ) {
        __text16 = .;
        *(.text16)
@@ -78,6 +80,8 @@ SECTIONS {
     . = _data16_link_addr;
     _data16 = .;
 
+    . += 1;                    /* Prevent NULL being valid */
+
     .rodata16 : AT ( _data16_load_offset + __rodata16 ) {
        __rodata16 = .;
        *(.rodata16)
@@ -115,6 +119,8 @@ SECTIONS {
 
     _text = .;
 
+    . += 1;                    /* Prevent NULL being valid */
+
     .text : AT ( _textdata_load_offset + __text ) {
        __text = .;
        *(.text.null_trap)