diff --git a/README b/README index a00da5a2134f9dc40904cc45df92cbdff4af43d3..a47a698e98e6ed603a8d28f94a54229e11c8a60b 100644 --- a/README +++ b/README @@ -43,4 +43,5 @@ To run OSv # gdb build/debug/loader.elf (gdb) connect + (gdb) osv syms (gdb) bt diff --git a/bootfs.manifest b/bootfs.manifest index 68744e57786871b2b49df7c240db14ef0d82fc7b..8eaace4398e5a8bd982e76717260f11a804eea87 100644 --- a/bootfs.manifest +++ b/bootfs.manifest @@ -1,8 +1,15 @@ [manifest] -/usr/lib/jre/lib/server/libjvm.so: %(jdkbase)s/jre/lib/amd64/server/libjvm.so -/usr/lib/jre/lib/libverify.so: %(jdkbase)s/jre/lib/amd64/libverify.so -/usr/lib/jre/lib/libjava.so: %(jdkbase)s/jre/lib/amd64/libjava.so -/usr/lib/jre/lib/libzip.so: %(jdkbase)s/jre/lib/amd64/libzip.so +/usr/lib/jvm/jre/lib/amd64/server/libjvm.so: %(jdkbase)s/jre/lib/amd64/server/libjvm.so +/usr/lib/jvm/jre/lib/amd64/libverify.so: %(jdkbase)s/jre/lib/amd64/libverify.so +/usr/lib/jvm/jre/lib/amd64/libjava.so: %(jdkbase)s/jre/lib/amd64/libjava.so +/usr/lib/jvm/jre/lib/amd64/libzip.so: %(jdkbase)s/jre/lib/amd64/libzip.so +/usr/lib/jvm/jre/lib/resources.jar: %(jdkbase)s/jre/lib/resources.jar +/usr/lib/jvm/jre/lib/rt.jar: %(jdkbase)s/jre/lib/rt.jar +/usr/lib/jvm/jre/lib/jsse.jar: %(jdkbase)s/jre/lib/jsse.jar +/usr/lib/jvm/jre/lib/jce.jar: %(jdkbase)s/jre/lib/jce.jar +/usr/lib/jvm/jre/lib/charsets.jar: %(jdkbase)s/jre/lib/charsets.jar +/usr/lib/jvm/jre/lib/rhino.jar: %(jdkbase)s/jre/lib/rhino.jar +/usr/lib/jvm/jre/lib/meta-index: %(jdkbase)s/jre/lib/meta-index /usr/lib/libstdc++.so.6: /usr/lib64/libstdc++.so.6 /usr/lib/libm.so.6: /usr/lib64/libm.so.6 /usr/lib/libgcc_s.so.1: /usr/lib64/libgcc_s.so.1 diff --git a/elf.cc b/elf.cc index 0f304d7a031b7ddc7500f3377cb4d392e86ff046..e3286e6a8463974d51c94dce61baa3f4ec52dd41 100644 --- a/elf.cc +++ b/elf.cc @@ -94,7 +94,6 @@ namespace elf { void elf_file::load_elf_header() { _f->read(&_ehdr, 0, sizeof(_ehdr)); - debug(fmt("elf header: %1%") % _ehdr.e_ident); if (!(_ehdr.e_ident[EI_MAG0] == '\x7f' && _ehdr.e_ident[EI_MAG1] == 'E' && _ehdr.e_ident[EI_MAG2] == 'L' @@ -114,7 +113,6 @@ namespace elf { || _ehdr.e_ident[EI_OSABI] == 0)) { throw std::runtime_error("bad os abi"); } - debug("loaded elf header"); } namespace { @@ -142,7 +140,6 @@ namespace elf { { return a.p_type == PT_LOAD && a.p_vaddr > b.p_vaddr; }); _end = _base + q->p_vaddr + q->p_memsz; - debug(fmt("base %p end %p") % _base % _end); } void* elf_object::base() const @@ -157,14 +154,11 @@ namespace elf { void elf_file::load_program_headers() { - debug(fmt("program headers: %1%") % _ehdr.e_phnum); _phdrs.resize(_ehdr.e_phnum); for (unsigned i = 0; i < _ehdr.e_phnum; ++i) { _f->read(&_phdrs[i], _ehdr.e_phoff + i * _ehdr.e_phentsize, _ehdr.e_phentsize); - debug(fmt("phdr %1%: vaddr %2$16x") - % i % _phdrs[i].p_vaddr); } } @@ -197,7 +191,6 @@ namespace elf { void elf_object::load_segments() { for (unsigned i = 0; i < _ehdr.e_phnum; ++i) { - debug(fmt("loading segment %1%") % i); auto &phdr = _phdrs[i]; switch (phdr.p_type) { case PT_NULL: @@ -489,7 +482,6 @@ namespace elf { { auto needed = dynamic_str_array(DT_NEEDED); for (auto lib : needed) { - debug(fmt("needed: %1%") % lib); _prog.add(std::string("/usr/lib") + lib); } } diff --git a/loader.cc b/loader.cc index db28650f7631d8f042b186297b31dae6ef2d53c7..5b28e748243e53fdd75051a48d111adae7cd9771 100644 --- a/loader.cc +++ b/loader.cc @@ -170,7 +170,7 @@ void load_test(elf::program& prog) debug("FAIL"); } -#define JVM_PATH "/usr/lib/jre/lib/server/libjvm.so" +#define JVM_PATH "/usr/lib/jvm/jre/lib/amd64/server/libjvm.so" void start_jvm(elf::program& prog) { diff --git a/mempool.cc b/mempool.cc index 904779de2db6f5c8d584b5471baeb2b12603dbdb..bcad5727948e06dbace8995c8cdee0c368fc1d6c 100644 --- a/mempool.cc +++ b/mempool.cc @@ -86,7 +86,9 @@ void pool::free(void* object) auto obj = static_cast<free_object*>(object); auto header = to_header(obj); if (!--header->nalloc) { - _free.erase(_free.iterator_to(*header)); + if (header->local_free) { + _free.erase(_free.iterator_to(*header)); + } // FIXME: add hysteresis free_page(header); } else {