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)
commit79a8269502b77763edefdf692d386615a8696661
treeddc5d5eee94c29d9cabfefb25eb3be86c73e48cd
parent92866b2056d927d32ea6343bd62eed25e4c6b612
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