/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include #include "nsExceptionHandler.h" #include "nsExceptionHandlerUtils.h" #include "prio.h" namespace CrashReporter { void AnnotateOOMAllocationSize(size_t size) {} void AnnotateTexturesSize(size_t size) {} void AnnotatePendingIPC(size_t aNumOfPendingIPC, uint32_t aTopPendingIPCCount, const char* aTopPendingIPCName, uint32_t aTopPendingIPCType) {} nsresult SetExceptionHandler(nsIFile* aXREDirectory, bool force /*=false*/) { return NS_ERROR_NOT_IMPLEMENTED; } bool GetEnabled() { return false; } bool GetMinidumpPath(nsAString& aPath) { return false; } nsresult SetMinidumpPath(const nsAString& aPath) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult SetupExtraData(nsIFile* aAppDataDirectory, const nsACString& aBuildID) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult UnsetExceptionHandler() { return NS_ERROR_NOT_IMPLEMENTED; } nsresult AnnotateCrashReport(Annotation key, bool data) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult AnnotateCrashReport(Annotation key, int data) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult AnnotateCrashReport(Annotation key, unsigned int data) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult AnnotateCrashReport(Annotation key, const nsACString& data) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult RemoveCrashReportAnnotation(Annotation key) { return NS_ERROR_NOT_IMPLEMENTED; } AutoAnnotateCrashReport::AutoAnnotateCrashReport(Annotation key, bool data) {} AutoAnnotateCrashReport::AutoAnnotateCrashReport(Annotation key, int data) {} AutoAnnotateCrashReport::AutoAnnotateCrashReport(Annotation key, unsigned data) {} AutoAnnotateCrashReport::AutoAnnotateCrashReport(Annotation key, const nsACString& data) {} AutoAnnotateCrashReport::~AutoAnnotateCrashReport() {} void MergeCrashAnnotations(AnnotationTable& aDst, const AnnotationTable& aSrc) { } nsresult SetGarbageCollecting(bool collecting) { return NS_ERROR_NOT_IMPLEMENTED; } void SetEventloopNestingLevel(uint32_t level) {} void SetMinidumpAnalysisAllThreads() {} nsresult AppendAppNotesToCrashReport(const nsACString& data) { return NS_ERROR_NOT_IMPLEMENTED; } bool GetAnnotation(const nsACString& key, nsACString& data) { return false; } void GetAnnotation(uint32_t childPid, Annotation annotation, nsACString& outStr) { return; } nsresult RegisterAppMemory(void* ptr, size_t length) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult UnregisterAppMemory(void* ptr) { return NS_ERROR_NOT_IMPLEMENTED; } void SetIncludeContextHeap(bool aValue) {} bool GetServerURL(nsACString& aServerURL) { return false; } nsresult SetServerURL(const nsACString& aServerURL) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult SetRestartArgs(int argc, char** argv) { return NS_ERROR_NOT_IMPLEMENTED; } #if !defined(XP_WIN) int GetAnnotationTimeCrashFd() { return 7; } #endif void RegisterChildCrashAnnotationFileDescriptor(ProcessId aProcess, PRFileDesc* aFd) { // The real implementation of this function takes ownership of aFd // and closes it when the process exits; if we don't close it, it // causes a leak. With no crash reporter we'll never write to the // pipe, so it's safe to close the read end immediately. PR_Close(aFd); } void DeregisterChildCrashAnnotationFileDescriptor(ProcessId aProcess) {} #ifdef XP_WIN nsresult WriteMinidumpForException(EXCEPTION_POINTERS* aExceptionInfo) { return NS_ERROR_NOT_IMPLEMENTED; } #endif #ifdef XP_LINUX bool WriteMinidumpForSigInfo(int signo, siginfo_t* info, void* uc) { return false; } #endif #ifdef XP_MACOSX nsresult AppendObjCExceptionInfoToAppNotes(void* inException) { return NS_ERROR_NOT_IMPLEMENTED; } #endif nsresult GetSubmitReports(bool* aSubmitReports) { return NS_ERROR_NOT_IMPLEMENTED; } nsresult SetSubmitReports(bool aSubmitReports) { return NS_ERROR_NOT_IMPLEMENTED; } void SetProfileDirectory(nsIFile* aDir) {} void SetUserAppDataDirectory(nsIFile* aDir) {} void UpdateCrashEventsDir() {} bool GetCrashEventsDir(nsAString& aPath) { return false; } void SetMemoryReportFile(nsIFile* aFile) {} nsresult GetDefaultMemoryReportFile(nsIFile** aFile) { return NS_ERROR_NOT_IMPLEMENTED; } void DeleteMinidumpFilesForID(const nsAString& id) {} bool GetMinidumpForID(const nsAString& id, nsIFile** minidump) { return false; } bool GetIDFromMinidump(nsIFile* minidump, nsAString& id) { return false; } bool GetExtraFileForID(const nsAString& id, nsIFile** extraFile) { return false; } bool GetExtraFileForMinidump(nsIFile* minidump, nsIFile** extraFile) { return false; } bool WriteExtraFile(const nsAString& id, const AnnotationTable& annotations) { return false; } void OOPInit() {} #if defined(XP_WIN) || defined(XP_MACOSX) const char* GetChildNotificationPipe() { return nullptr; } #endif #ifdef MOZ_CRASHREPORTER_INJECTOR void InjectCrashReporterIntoProcess(DWORD processID, InjectorCrashCallback* cb) {} void UnregisterInjectorCallback(DWORD processID) {} #endif // MOZ_CRASHREPORTER_INJECTOR bool GetLastRunCrashID(nsAString& id) { return false; } #if !defined(XP_WIN) && !defined(XP_MACOSX) bool CreateNotificationPipeForChild(int* childCrashFd, int* childCrashRemapFd) { return false; } #endif // !defined(XP_WIN) && !defined(XP_MACOSX) bool SetRemoteExceptionHandler(const char* aCrashPipe, uintptr_t aCrashTimeAnnotationFile) { return false; } bool TakeMinidumpForChild(uint32_t childPid, nsIFile** dump, AnnotationTable& aAnnotations, uint32_t* aSequence) { return false; } bool FinalizeOrphanedMinidump(uint32_t aChildPid, GeckoProcessType aType, nsString* aDumpId) { return false; } ThreadId CurrentThreadId() { return -1; } bool TakeMinidump(nsIFile** aResult, bool aMoveToPending) { return false; } bool CreateMinidumpsAndPair(ProcessHandle aTargetPid, ThreadId aTargetBlamedThread, const nsACString& aIncomingPairName, nsIFile* aIncomingDumpToPair, AnnotationTable& aTargetAnnotations, nsIFile** aTargetDumpOut) { return false; } bool CreateAdditionalChildMinidump(ProcessHandle childPid, ThreadId childBlamedThread, nsIFile* parentMinidump, const nsACString& name) { return false; } bool UnsetRemoteExceptionHandler() { return false; } #if defined(MOZ_WIDGET_ANDROID) void SetNotificationPipeForChild(int childCrashFd) {} void SetCrashAnnotationPipeForChild(int childCrashAnnotationFd) {} void AddLibraryMapping(const char* library_name, uintptr_t start_address, size_t mapping_length, size_t file_offset) {} #endif // From ThreadAnnotation.cpp void InitThreadAnnotation() {} void SetCurrentThreadName(const char* aName) {} void GetFlatThreadAnnotation( const std::function& aCallback) {} void ShutdownThreadAnnotation() {} } // namespace CrashReporter