Move assignment to _end_kernel_text inside .rodata.
authorBen Pfaff <blp@cs.stanford.edu>
Mon, 25 Sep 2006 21:43:09 +0000 (21:43 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Mon, 25 Sep 2006 21:43:09 +0000 (21:43 +0000)
commit6f7be4d89547dd7f9801f518e52572046a113daf
treea303206d824af8c4d866e166df20d36f60ac2b2b
parentd4c30c6a386fe850e7eed1025e459fbc82a0b6e2
Move assignment to _end_kernel_text inside .rodata.

Without this change, any orphan, read-only sections (such as .eh_frame
from libgcc) will be placed by GNU ld between .rodata and
_end_kernel_text.  The result is that _end_kernel_text gets pushed
into the middle of a page that now contains some read-only and some
read/write data.  After paging_init() marks that page read-only, the
first write to it (in intr_init() in my case) causes Pintos to go
ka-boom!

With this change, orphan read-only sections just don't get marked
read-only in the page tables.  Big deal.
src/threads/kernel.lds.S