624 // OS/compiler may have different convention or provide different API to
625 // walk C frames.
626 //
627 // We don't attempt to become a debugger, so we only follow frames if that
628 // does not require a lookup in the unwind table, which is part of the binary
629 // file but may be unsafe to read after a fatal error. So on x86, we can
630 // only walk stack if %ebp is used as frame pointer; on ia64, it's not
631 // possible to walk C stack without having the unwind table.
632 static bool is_first_C_frame(frame *fr);
633 static frame get_sender_for_C_frame(frame *fr);
634
635 // return current frame. pc() and sp() are set to NULL on failure.
636 static frame current_frame();
637
638 static void print_hex_dump(outputStream* st, address start, address end, int unitsize);
639
640 // returns a string to describe the exception/signal;
641 // returns NULL if exception_code is not an OS exception/signal.
642 static const char* exception_name(int exception_code, char* buf, size_t buflen);
643
644 // Returns native Java library, loads if necessary
645 static void* native_java_library();
646
647 // Fills in path to jvm.dll/libjvm.so (used by the Disassembler)
648 static void jvm_path(char *buf, jint buflen);
649
650 // Returns true if we are running in a headless jre.
651 static bool is_headless_jre();
652
653 // JNI names
654 static void print_jni_name_prefix_on(outputStream* st, int args_size);
655 static void print_jni_name_suffix_on(outputStream* st, int args_size);
656
657 // Init os specific system properties values
658 static void init_system_properties_values();
659
660 // IO operations, non-JVM_ version.
661 static int stat(const char* path, struct stat* sbuf);
662 static bool dir_is_empty(const char* path);
663
|
624 // OS/compiler may have different convention or provide different API to
625 // walk C frames.
626 //
627 // We don't attempt to become a debugger, so we only follow frames if that
628 // does not require a lookup in the unwind table, which is part of the binary
629 // file but may be unsafe to read after a fatal error. So on x86, we can
630 // only walk stack if %ebp is used as frame pointer; on ia64, it's not
631 // possible to walk C stack without having the unwind table.
632 static bool is_first_C_frame(frame *fr);
633 static frame get_sender_for_C_frame(frame *fr);
634
635 // return current frame. pc() and sp() are set to NULL on failure.
636 static frame current_frame();
637
638 static void print_hex_dump(outputStream* st, address start, address end, int unitsize);
639
640 // returns a string to describe the exception/signal;
641 // returns NULL if exception_code is not an OS exception/signal.
642 static const char* exception_name(int exception_code, char* buf, size_t buflen);
643
644 // Returns the signal number (e.g. 11) for a given signal name (SIGSEGV).
645 static int get_signal_number(const char* signal_name);
646
647 // Returns native Java library, loads if necessary
648 static void* native_java_library();
649
650 // Fills in path to jvm.dll/libjvm.so (used by the Disassembler)
651 static void jvm_path(char *buf, jint buflen);
652
653 // Returns true if we are running in a headless jre.
654 static bool is_headless_jre();
655
656 // JNI names
657 static void print_jni_name_prefix_on(outputStream* st, int args_size);
658 static void print_jni_name_suffix_on(outputStream* st, int args_size);
659
660 // Init os specific system properties values
661 static void init_system_properties_values();
662
663 // IO operations, non-JVM_ version.
664 static int stat(const char* path, struct stat* sbuf);
665 static bool dir_is_empty(const char* path);
666
|