On Wed, Aug 10, 2016 at 4:33 AM, Richard Braun <rbr...@sceen.net> wrote:
> On Wed, Aug 10, 2016 at 04:26:35PM +0200, Richard Braun wrote: > > the boot loader (see MULTIBOOT_FLAGS in boothdr.S), and at > > some point, late during the boot process, module data are freed > > using (see free_bootstrap_pages in bootstrap.c). This might > > Using vm_page_manage(). > > -- > Richard Braun > The symbol table is far enough away from the module data that I don't think it's getting freed at that point. But it does seem to be freed. Please check my calculations. Here's the location of the symbol table in virtual memory. (gdb) print self->start $15 = (Elf32_Sym *) 0x804fb5ec Here's its location in physical memory. (gdb) print *symtab $23 = {sh_name = 1, sh_type = 2, sh_flags = 0, sh_addr = 5223916, sh_offset = 5367452, sh_size = 70736, sh_link = 16, sh_info = 1663, sh_addralign = 4, sh_entsize = 16} (gdb) printf "%x\n", 5223916 4fb5ec Now, with the system fully booted, I find this address's page: (gdb) print (5223916 - vm_page_segs[0].start)/4096 $44 = 1259 ...and now start looking at the page table entries: (gdb) print vm_page_segs[0].pages[1259].type $52 = 0 (gdb) print vm_page_segs[0].pages[1260].type $53 = 0 (gdb) print vm_page_segs[0].pages[1261].type $54 = 0 (gdb) print vm_page_segs[0].pages[1262].type $55 = 0 0 is VM_PT_FREE. It should be VM_PT_RESERVED (1), right? agape brent