tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

globals.h (4030B)


      1 // Copyright 2022 The Abseil Authors.
      2 //
      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 //      https://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 // -----------------------------------------------------------------------------
     16 // File: log/internal/globals.h
     17 // -----------------------------------------------------------------------------
     18 //
     19 // This header file contains various global objects and static helper routines
     20 // use in logging implementation.
     21 
     22 #ifndef ABSL_LOG_INTERNAL_GLOBALS_H_
     23 #define ABSL_LOG_INTERNAL_GLOBALS_H_
     24 
     25 #include "absl/base/config.h"
     26 #include "absl/base/log_severity.h"
     27 #include "absl/strings/string_view.h"
     28 #include "absl/time/time.h"
     29 
     30 namespace absl {
     31 ABSL_NAMESPACE_BEGIN
     32 namespace log_internal {
     33 
     34 // IsInitialized returns true if the logging library is initialized.
     35 // This function is async-signal-safe
     36 bool IsInitialized();
     37 
     38 // SetLoggingInitialized is called once after logging initialization is done.
     39 void SetInitialized();
     40 
     41 // Unconditionally write a `message` to stderr. If `severity` exceeds kInfo
     42 // we also flush the stderr stream.
     43 void WriteToStderr(absl::string_view message, absl::LogSeverity severity);
     44 
     45 // Set the TimeZone used for human-friendly times (for example, the log message
     46 // prefix) printed by the logging library. This may only be called once.
     47 void SetTimeZone(absl::TimeZone tz);
     48 
     49 // Returns the TimeZone used for human-friendly times (for example, the log
     50 // message prefix) printed by the logging library Returns nullptr prior to
     51 // initialization.
     52 const absl::TimeZone* TimeZone();
     53 
     54 // Returns true if stack traces emitted by the logging library should be
     55 // symbolized. This function is async-signal-safe.
     56 bool ShouldSymbolizeLogStackTrace();
     57 
     58 // Enables or disables symbolization of stack traces emitted by the
     59 // logging library. This function is async-signal-safe.
     60 void EnableSymbolizeLogStackTrace(bool on_off);
     61 
     62 // Returns the maximum number of frames that appear in stack traces
     63 // emitted by the logging library. This function is async-signal-safe.
     64 int MaxFramesInLogStackTrace();
     65 
     66 // Sets the maximum number of frames that appear in stack traces emitted by
     67 // the logging library. This function is async-signal-safe.
     68 void SetMaxFramesInLogStackTrace(int max_num_frames);
     69 
     70 // Determines whether we exit the program for a LOG(DFATAL) message in
     71 // debug mode.  It does this by skipping the call to Fail/FailQuietly.
     72 // This is intended for testing only.
     73 //
     74 // This can have some effects on LOG(FATAL) as well. Failure messages
     75 // are always allocated (rather than sharing a buffer), the crash
     76 // reason is not recorded, the "gwq" status message is not updated,
     77 // and the stack trace is not recorded.  The LOG(FATAL) *will* still
     78 // exit the program. Since this function is used only in testing,
     79 // these differences are acceptable.
     80 //
     81 // Additionally, LOG(LEVEL(FATAL)) is indistinguishable from LOG(DFATAL) and
     82 // will not terminate the program if SetExitOnDFatal(false) has been called.
     83 bool ExitOnDFatal();
     84 
     85 // SetExitOnDFatal() sets the ExitOnDFatal() status
     86 void SetExitOnDFatal(bool on_off);
     87 
     88 // Determines if the logging library should suppress logging of stacktraces in
     89 // the `SIGABRT` handler, typically because we just logged a stacktrace as part
     90 // of `LOG(FATAL)` and are about to send ourselves a `SIGABRT` to end the
     91 // program.
     92 bool SuppressSigabortTrace();
     93 
     94 // Sets the SuppressSigabortTrace() status and returns the previous state.
     95 bool SetSuppressSigabortTrace(bool on_off);
     96 
     97 }  // namespace log_internal
     98 ABSL_NAMESPACE_END
     99 }  // namespace absl
    100 
    101 #endif  // ABSL_LOG_INTERNAL_GLOBALS_H_