Mercurial > hg > openjdk > jdk7u > hotspot
changeset 4843:0025a2a965c8 jdk7u60-b02
Merge
author | amurillo |
---|---|
date | Tue, 17 Dec 2013 10:04:41 -0800 |
parents | 695c4f65f4c0 (current diff) 27db84519a53 (diff) |
children | cc53706b1b2b |
files | |
diffstat | 5 files changed, 37 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Wed Dec 11 11:18:28 2013 -0800 +++ b/.hgtags Tue Dec 17 10:04:41 2013 -0800 @@ -596,3 +596,4 @@ b7d44793cd267b22352c688b0185466741bb7a89 hs24.60-b02 90cfd4ad3c9263886d876792d72cb24ac0e03a85 hs24.60-b03 8fd0e931efa57d1579fb1bc8a68ba3924244b99e jdk7u60-b01 +99e96aaac8afc14ce6f9f3d92ef7004cf505b35d hs24.60-b04
--- a/agent/src/os/linux/ps_core.c Wed Dec 11 11:18:28 2013 -0800 +++ b/agent/src/os/linux/ps_core.c Tue Dec 17 10:04:41 2013 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -704,6 +704,8 @@ ELF_PHDR* phbuf; ELF_PHDR* lib_php = NULL; + int page_size=sysconf(_SC_PAGE_SIZE); + if ((phbuf = read_program_header_table(lib_fd, lib_ehdr)) == NULL) return false; @@ -712,8 +714,32 @@ // have been already added from core file segments. for (lib_php = phbuf, i = 0; i < lib_ehdr->e_phnum; i++) { if ((lib_php->p_type == PT_LOAD) && !(lib_php->p_flags & PF_W) && (lib_php->p_filesz != 0)) { - if (add_map_info(ph, lib_fd, lib_php->p_offset, lib_php->p_vaddr + lib_base, lib_php->p_filesz) == NULL) - goto err; + uintptr_t target_vaddr = lib_php->p_vaddr + lib_base; + map_info *existing_map = core_lookup(ph, target_vaddr); + + if (existing_map == NULL) { + if (add_map_info(ph, lib_fd, lib_php->p_offset, + target_vaddr, lib_php->p_filesz) == NULL) { + goto err; + } + } else { + if ((existing_map->memsz != page_size) && + (existing_map->fd != lib_fd) && + (existing_map->memsz != lib_php->p_filesz)) { + + print_debug("address conflict @ 0x%lx (size = %ld, flags = %d\n)", + target_vaddr, lib_php->p_filesz, lib_php->p_flags); + goto err; + } + + /* replace PT_LOAD segment with library segment */ + print_debug("overwrote with new address mapping (memsz %ld -> %ld)\n", + existing_map->memsz, lib_php->p_filesz); + + existing_map->fd = lib_fd; + existing_map->offset = lib_php->p_offset; + existing_map->memsz = lib_php->p_filesz; + } } lib_php++; }
--- a/make/hotspot_version Wed Dec 11 11:18:28 2013 -0800 +++ b/make/hotspot_version Tue Dec 17 10:04:41 2013 -0800 @@ -35,7 +35,7 @@ HS_MAJOR_VER=24 HS_MINOR_VER=60 -HS_BUILD_NUMBER=03 +HS_BUILD_NUMBER=04 JDK_MAJOR_VER=1 JDK_MINOR_VER=7
--- a/src/cpu/x86/vm/frame_x86.cpp Wed Dec 11 11:18:28 2013 -0800 +++ b/src/cpu/x86/vm/frame_x86.cpp Tue Dec 17 10:04:41 2013 -0800 @@ -94,12 +94,6 @@ // other generic buffer blobs are more problematic so we just assume they are // ok. adapter blobs never have a frame complete and are never ok. - // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc - - if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) { - return false; - } - if (!_cb->is_frame_complete_at(_pc)) { if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) { return false; @@ -139,6 +133,11 @@ // must be some sort of compiled/runtime frame // fp does not have to be safe (although it could be check for c1?) + // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc + if (_cb->frame_size() <= 0) { + return false; + } + sender_sp = _unextended_sp + _cb->frame_size(); // On Intel the return_address is always the word on the stack sender_pc = (address) *(sender_sp-1);
--- a/src/cpu/x86/vm/globals_x86.hpp Wed Dec 11 11:18:28 2013 -0800 +++ b/src/cpu/x86/vm/globals_x86.hpp Tue Dec 17 10:04:41 2013 -0800 @@ -62,7 +62,7 @@ // due to lack of optimization caused by C++ compiler bugs define_pd_global(intx, StackShadowPages, NOT_WIN64(20) WIN64_ONLY(6) DEBUG_ONLY(+2)); #else -define_pd_global(intx, StackShadowPages, 4 DEBUG_ONLY(+5)); +define_pd_global(intx, StackShadowPages, 6 DEBUG_ONLY(+5)); #endif // AMD64 define_pd_global(intx, PreInflateSpin, 10);