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