src/os/bsd/vm/decoder_machO.hpp

Wed, 05 Jun 2013 14:12:49 -0400

author
hseigel
date
Wed, 05 Jun 2013 14:12:49 -0400
changeset 5218
6bf8b8bb7c19
parent 3961
3b01d0321dfa
child 6876
710a3c8b516e
permissions
-rw-r--r--

8009302: Mac OS X: JVM crash on infinite recursion on Appkit Thread
Summary: Use SA_ONSTACK flag to ensure signal gets delivered properly.
Reviewed-by: dholmes, coleenp
Contributed-by: gerard.ziemski@oracle.com

zgu@3430 1 /*
zgu@3544 2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
zgu@3430 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
zgu@3430 4 *
zgu@3430 5 * This code is free software; you can redistribute it and/or modify it
zgu@3430 6 * under the terms of the GNU General Public License version 2 only, as
zgu@3430 7 * published by the Free Software Foundation.
zgu@3430 8 *
zgu@3430 9 * This code is distributed in the hope that it will be useful, but WITHOUT
zgu@3430 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
zgu@3430 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
zgu@3430 12 * version 2 for more details (a copy is included in the LICENSE file that
zgu@3430 13 * accompanied this code).
zgu@3430 14 *
zgu@3430 15 * You should have received a copy of the GNU General Public License version
zgu@3430 16 * 2 along with this work; if not, write to the Free Software Foundation,
zgu@3430 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
zgu@3430 18 *
zgu@3430 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
zgu@3430 20 * or visit www.oracle.com if you need additional information or have any
zgu@3430 21 * questions.
zgu@3430 22 *
zgu@3430 23 */
zgu@3430 24
zgu@3430 25 #ifndef OS_BSD_VM_DECODER_MACHO_HPP
zgu@3430 26 #define OS_BSD_VM_DECODER_MACHO_HPP
zgu@3430 27
zgu@3430 28 #ifdef __APPLE__
zgu@3430 29
zgu@3430 30 #include "utilities/decoder.hpp"
zgu@3430 31
zgu@3544 32 // Just a placehold for now, a real implementation should derive
zgu@3544 33 // from AbstractDecoder
zgu@3961 34 class MachODecoder : public AbstractDecoder {
zgu@3961 35 public:
zgu@3430 36 MachODecoder() { }
zgu@3430 37 ~MachODecoder() { }
zgu@3961 38 virtual bool can_decode_C_frame_in_vm() const {
zgu@3961 39 return true;
zgu@3961 40 }
zgu@3961 41 virtual bool demangle(const char* symbol, char* buf, int buflen);
zgu@3961 42 virtual bool decode(address pc, char* buf, int buflen, int* offset,
zgu@3961 43 const void* base);
zgu@3961 44 virtual bool decode(address pc, char* buf, int buflen, int* offset,
zgu@3961 45 const char* module_path = NULL) {
zgu@3961 46 ShouldNotReachHere();
zgu@3961 47 return false;
zgu@3961 48 }
zgu@3961 49
zgu@3961 50 private:
zgu@3961 51 void * mach_find_command(struct mach_header_64 * mach_base, uint32_t command_wanted);
zgu@3961 52 char * mach_find_in_stringtable(char *strtab, uint32_t tablesize, int strx_wanted);
zgu@3430 53 };
zgu@3430 54
zgu@3430 55 #endif
zgu@3430 56
zgu@3430 57 #endif // OS_BSD_VM_DECODER_MACHO_HPP
zgu@3430 58

mercurial