1 /* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 #ifndef UNWINDER_CONFIG_H 16 #define UNWINDER_CONFIG_H 17 18 #include <memory> 19 #include "byte_order.h" 20 #include "unwind_define.h" 21 22 namespace OHOS { 23 namespace HiviewDFX { 24 class UnwinderConfig final { 25 public: SetEnableMiniDebugInfo(bool enableMiniDebugInfo)26 static inline void SetEnableMiniDebugInfo(bool enableMiniDebugInfo) 27 { 28 enableMiniDebugInfo_ = enableMiniDebugInfo; 29 } GetEnableMiniDebugInfo()30 static inline bool GetEnableMiniDebugInfo() 31 { 32 return enableMiniDebugInfo_; 33 } 34 SetEnableLoadSymbolLazily(bool enableLoadSymbolLazily)35 static inline void SetEnableLoadSymbolLazily(bool enableLoadSymbolLazily) 36 { 37 enableLoadSymbolLazily_ = enableLoadSymbolLazily; 38 } GetEnableLoadSymbolLazily()39 static inline bool GetEnableLoadSymbolLazily() 40 { 41 return enableLoadSymbolLazily_; 42 } 43 SetByteOrder(int bigEndian)44 static inline void SetByteOrder(int bigEndian) { bigEndian_ = bigEndian; } GetByteOrder()45 static inline int GetByteOrder() { return bigEndian_; } 46 SetCachePolicy(UnwindCachingPolicy policy)47 static inline void SetCachePolicy(UnwindCachingPolicy policy) { cachingPolicy_ = policy; } GetCachePolicy()48 static inline UnwindCachingPolicy GetCachePolicy() { return cachingPolicy_; } 49 50 private: 51 static bool enableMiniDebugInfo_; 52 static bool enableLoadSymbolLazily_; 53 static int bigEndian_; 54 static UnwindCachingPolicy cachingPolicy_; 55 }; 56 } // namespace HiviewDFX 57 } // namespace OHOS 58 #endif 59