libdatadog 16.0.1.1.0-aarch64-linux → 19.1.0.1.0-aarch64-linux
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/libdatadog/version.rb +2 -2
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE-3rdparty.yml +19675 -12455
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +435 -229
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/common.h +691 -128
 - data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/crashtracker.h +118 -14
 - data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/data-pipeline.h +65 -3
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/library-config.h +18 -6
 - data/vendor/libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/log.h +63 -0
 - data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +357 -42
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/telemetry.h +27 -30
 - data/vendor/{libdatadog-16.0.1/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-19.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/lib/libdatadog_profiling.so +0 -0
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE-3rdparty.yml +19675 -12455
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +435 -229
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/common.h +691 -128
 - data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/crashtracker.h +118 -14
 - data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/data-pipeline.h +65 -3
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/library-config.h +18 -6
 - data/vendor/libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/log.h +63 -0
 - data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +357 -42
 - data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/telemetry.h +27 -30
 - data/vendor/{libdatadog-16.0.1/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-19.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/lib/libdatadog_profiling.so +0 -0
 - metadata +32 -33
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
 - /data/vendor/{libdatadog-16.0.1 → libdatadog-19.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
 
| 
         @@ -1,10 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // BSD-3-Clause License
         
     | 
| 
       2 
2 
     | 
    
         
             
            // Synchronized from blazesym repository
         
     | 
| 
       3 
     | 
    
         
            -
            // https://github.com/libbpf/blazesym/blob/capi-v0.1. 
     | 
| 
      
 3 
     | 
    
         
            +
            // https://github.com/libbpf/blazesym/blob/capi-v0.1.1/capi/include/blazesym.h
         
     | 
| 
       4 
4 
     | 
    
         
             
            /*
         
     | 
| 
       5 
5 
     | 
    
         
             
             * Please refer to the documentation hosted at
         
     | 
| 
       6 
6 
     | 
    
         
             
             *
         
     | 
| 
       7 
     | 
    
         
            -
             *   https://docs.rs/blazesym-c/0.1. 
     | 
| 
      
 7 
     | 
    
         
            +
             *   https://docs.rs/blazesym-c/0.1.1
         
     | 
| 
       8 
8 
     | 
    
         
             
             */
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         | 
| 
         @@ -22,195 +22,89 @@ 
     | 
|
| 
       22 
22 
     | 
    
         
             
             *
         
     | 
| 
       23 
23 
     | 
    
         
             
             * C ABI compatible version of [`blazesym::ErrorKind`].
         
     | 
| 
       24 
24 
     | 
    
         
             
             */
         
     | 
| 
       25 
     | 
    
         
            -
            typedef  
     | 
| 
       26 
     | 
    
         
            -
              /**
         
     | 
| 
       27 
     | 
    
         
            -
               * The operation was successful.
         
     | 
| 
       28 
     | 
    
         
            -
               */
         
     | 
| 
       29 
     | 
    
         
            -
              BLAZE_ERR_OK = 0,
         
     | 
| 
       30 
     | 
    
         
            -
              /**
         
     | 
| 
       31 
     | 
    
         
            -
               * An entity was not found, often a file.
         
     | 
| 
       32 
     | 
    
         
            -
               */
         
     | 
| 
       33 
     | 
    
         
            -
              BLAZE_ERR_NOT_FOUND = -2,
         
     | 
| 
       34 
     | 
    
         
            -
              /**
         
     | 
| 
       35 
     | 
    
         
            -
               * The operation lacked the necessary privileges to complete.
         
     | 
| 
       36 
     | 
    
         
            -
               */
         
     | 
| 
       37 
     | 
    
         
            -
              BLAZE_ERR_PERMISSION_DENIED = -1,
         
     | 
| 
       38 
     | 
    
         
            -
              /**
         
     | 
| 
       39 
     | 
    
         
            -
               * An entity already exists, often a file.
         
     | 
| 
       40 
     | 
    
         
            -
               */
         
     | 
| 
       41 
     | 
    
         
            -
              BLAZE_ERR_ALREADY_EXISTS = -17,
         
     | 
| 
       42 
     | 
    
         
            -
              /**
         
     | 
| 
       43 
     | 
    
         
            -
               * The operation needs to block to complete, but the blocking
         
     | 
| 
       44 
     | 
    
         
            -
               * operation was requested to not occur.
         
     | 
| 
       45 
     | 
    
         
            -
               */
         
     | 
| 
       46 
     | 
    
         
            -
              BLAZE_ERR_WOULD_BLOCK = -11,
         
     | 
| 
       47 
     | 
    
         
            -
              /**
         
     | 
| 
       48 
     | 
    
         
            -
               * Data not valid for the operation were encountered.
         
     | 
| 
       49 
     | 
    
         
            -
               */
         
     | 
| 
       50 
     | 
    
         
            -
              BLAZE_ERR_INVALID_DATA = -22,
         
     | 
| 
       51 
     | 
    
         
            -
              /**
         
     | 
| 
       52 
     | 
    
         
            -
               * The I/O operation's timeout expired, causing it to be canceled.
         
     | 
| 
       53 
     | 
    
         
            -
               */
         
     | 
| 
       54 
     | 
    
         
            -
              BLAZE_ERR_TIMED_OUT = -110,
         
     | 
| 
       55 
     | 
    
         
            -
              /**
         
     | 
| 
       56 
     | 
    
         
            -
               * This operation is unsupported on this platform.
         
     | 
| 
       57 
     | 
    
         
            -
               */
         
     | 
| 
       58 
     | 
    
         
            -
              BLAZE_ERR_UNSUPPORTED = -95,
         
     | 
| 
       59 
     | 
    
         
            -
              /**
         
     | 
| 
       60 
     | 
    
         
            -
               * An operation could not be completed, because it failed
         
     | 
| 
       61 
     | 
    
         
            -
               * to allocate enough memory.
         
     | 
| 
       62 
     | 
    
         
            -
               */
         
     | 
| 
       63 
     | 
    
         
            -
              BLAZE_ERR_OUT_OF_MEMORY = -12,
         
     | 
| 
       64 
     | 
    
         
            -
              /**
         
     | 
| 
       65 
     | 
    
         
            -
               * A parameter was incorrect.
         
     | 
| 
       66 
     | 
    
         
            -
               */
         
     | 
| 
       67 
     | 
    
         
            -
              BLAZE_ERR_INVALID_INPUT = -256,
         
     | 
| 
       68 
     | 
    
         
            -
              /**
         
     | 
| 
       69 
     | 
    
         
            -
               * An error returned when an operation could not be completed
         
     | 
| 
       70 
     | 
    
         
            -
               * because a call to [`write`] returned [`Ok(0)`].
         
     | 
| 
       71 
     | 
    
         
            -
               */
         
     | 
| 
       72 
     | 
    
         
            -
              BLAZE_ERR_WRITE_ZERO = -257,
         
     | 
| 
       73 
     | 
    
         
            -
              /**
         
     | 
| 
       74 
     | 
    
         
            -
               * An error returned when an operation could not be completed
         
     | 
| 
       75 
     | 
    
         
            -
               * because an "end of file" was reached prematurely.
         
     | 
| 
       76 
     | 
    
         
            -
               */
         
     | 
| 
       77 
     | 
    
         
            -
              BLAZE_ERR_UNEXPECTED_EOF = -258,
         
     | 
| 
       78 
     | 
    
         
            -
              /**
         
     | 
| 
       79 
     | 
    
         
            -
               * DWARF input data was invalid.
         
     | 
| 
       80 
     | 
    
         
            -
               */
         
     | 
| 
       81 
     | 
    
         
            -
              BLAZE_ERR_INVALID_DWARF = -259,
         
     | 
| 
       82 
     | 
    
         
            -
              /**
         
     | 
| 
       83 
     | 
    
         
            -
               * A custom error that does not fall under any other I/O error
         
     | 
| 
       84 
     | 
    
         
            -
               * kind.
         
     | 
| 
       85 
     | 
    
         
            -
               */
         
     | 
| 
       86 
     | 
    
         
            -
              BLAZE_ERR_OTHER = -260,
         
     | 
| 
       87 
     | 
    
         
            -
            } blaze_err;
         
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
            typedef int16_t blaze_err;
         
     | 
| 
       89 
26 
     | 
    
         
             
            /**
         
     | 
| 
       90 
     | 
    
         
            -
             * The  
     | 
| 
       91 
     | 
    
         
            -
             *
         
     | 
| 
       92 
     | 
    
         
            -
             * The reason is generally only meant as a hint. Reasons reported may change
         
     | 
| 
       93 
     | 
    
         
            -
             * over time and, hence, should not be relied upon for the correctness of the
         
     | 
| 
       94 
     | 
    
         
            -
             * application.
         
     | 
| 
      
 27 
     | 
    
         
            +
             * The operation was successful.
         
     | 
| 
       95 
28 
     | 
    
         
             
             */
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
              
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
             
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
             
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            #define BLAZE_ERR_OK 0
         
     | 
| 
      
 30 
     | 
    
         
            +
            /**
         
     | 
| 
      
 31 
     | 
    
         
            +
             * An entity was not found, often a file.
         
     | 
| 
      
 32 
     | 
    
         
            +
             */
         
     | 
| 
      
 33 
     | 
    
         
            +
            #define BLAZE_ERR_NOT_FOUND -2
         
     | 
| 
      
 34 
     | 
    
         
            +
            /**
         
     | 
| 
      
 35 
     | 
    
         
            +
             * The operation lacked the necessary privileges to complete.
         
     | 
| 
      
 36 
     | 
    
         
            +
             */
         
     | 
| 
      
 37 
     | 
    
         
            +
            #define BLAZE_ERR_PERMISSION_DENIED -1
         
     | 
| 
      
 38 
     | 
    
         
            +
            /**
         
     | 
| 
      
 39 
     | 
    
         
            +
             * An entity already exists, often a file.
         
     | 
| 
      
 40 
     | 
    
         
            +
             */
         
     | 
| 
      
 41 
     | 
    
         
            +
            #define BLAZE_ERR_ALREADY_EXISTS -17
         
     | 
| 
      
 42 
     | 
    
         
            +
            /**
         
     | 
| 
      
 43 
     | 
    
         
            +
             * The operation needs to block to complete, but the blocking
         
     | 
| 
      
 44 
     | 
    
         
            +
             * operation was requested to not occur.
         
     | 
| 
      
 45 
     | 
    
         
            +
             */
         
     | 
| 
      
 46 
     | 
    
         
            +
            #define BLAZE_ERR_WOULD_BLOCK -11
         
     | 
| 
      
 47 
     | 
    
         
            +
            /**
         
     | 
| 
      
 48 
     | 
    
         
            +
             * Data not valid for the operation were encountered.
         
     | 
| 
      
 49 
     | 
    
         
            +
             */
         
     | 
| 
      
 50 
     | 
    
         
            +
            #define BLAZE_ERR_INVALID_DATA -22
         
     | 
| 
      
 51 
     | 
    
         
            +
            /**
         
     | 
| 
      
 52 
     | 
    
         
            +
             * The I/O operation's timeout expired, causing it to be canceled.
         
     | 
| 
      
 53 
     | 
    
         
            +
             */
         
     | 
| 
      
 54 
     | 
    
         
            +
            #define BLAZE_ERR_TIMED_OUT -110
         
     | 
| 
      
 55 
     | 
    
         
            +
            /**
         
     | 
| 
      
 56 
     | 
    
         
            +
             * This operation is unsupported on this platform.
         
     | 
| 
      
 57 
     | 
    
         
            +
             */
         
     | 
| 
      
 58 
     | 
    
         
            +
            #define BLAZE_ERR_UNSUPPORTED -95
         
     | 
| 
      
 59 
     | 
    
         
            +
            /**
         
     | 
| 
      
 60 
     | 
    
         
            +
             * An operation could not be completed, because it failed
         
     | 
| 
      
 61 
     | 
    
         
            +
             * to allocate enough memory.
         
     | 
| 
      
 62 
     | 
    
         
            +
             */
         
     | 
| 
      
 63 
     | 
    
         
            +
            #define BLAZE_ERR_OUT_OF_MEMORY -12
         
     | 
| 
      
 64 
     | 
    
         
            +
            /**
         
     | 
| 
      
 65 
     | 
    
         
            +
             * A parameter was incorrect.
         
     | 
| 
      
 66 
     | 
    
         
            +
             */
         
     | 
| 
      
 67 
     | 
    
         
            +
            #define BLAZE_ERR_INVALID_INPUT -256
         
     | 
| 
      
 68 
     | 
    
         
            +
            /**
         
     | 
| 
      
 69 
     | 
    
         
            +
             * An error returned when an operation could not be completed
         
     | 
| 
      
 70 
     | 
    
         
            +
             * because a call to [`write`] returned [`Ok(0)`].
         
     | 
| 
      
 71 
     | 
    
         
            +
             */
         
     | 
| 
      
 72 
     | 
    
         
            +
            #define BLAZE_ERR_WRITE_ZERO -257
         
     | 
| 
      
 73 
     | 
    
         
            +
            /**
         
     | 
| 
      
 74 
     | 
    
         
            +
             * An error returned when an operation ould not be completed
         
     | 
| 
      
 75 
     | 
    
         
            +
             * because an "end of file" was reached prematurely.
         
     | 
| 
      
 76 
     | 
    
         
            +
             */
         
     | 
| 
      
 77 
     | 
    
         
            +
            #define BLAZE_ERR_UNEXPECTED_EOF -258
         
     | 
| 
      
 78 
     | 
    
         
            +
            /**
         
     | 
| 
      
 79 
     | 
    
         
            +
             * DWARF input data was invalid.
         
     | 
| 
      
 80 
     | 
    
         
            +
             */
         
     | 
| 
      
 81 
     | 
    
         
            +
            #define BLAZE_ERR_INVALID_DWARF -259
         
     | 
| 
      
 82 
     | 
    
         
            +
            /**
         
     | 
| 
      
 83 
     | 
    
         
            +
             * A custom error that does not fall under any other I/O error
         
     | 
| 
      
 84 
     | 
    
         
            +
             * kind.
         
     | 
| 
      
 85 
     | 
    
         
            +
             */
         
     | 
| 
      
 86 
     | 
    
         
            +
            #define BLAZE_ERR_OTHER -260
         
     | 
| 
       119 
87 
     | 
    
         | 
| 
       120 
88 
     | 
    
         
             
            /**
         
     | 
| 
       121 
89 
     | 
    
         
             
             * The type of a symbol.
         
     | 
| 
       122 
90 
     | 
    
         
             
             */
         
     | 
| 
       123 
     | 
    
         
            -
            enum blaze_sym_type
         
     | 
| 
       124 
     | 
    
         
            -
            #ifdef __cplusplus
         
     | 
| 
       125 
     | 
    
         
            -
              : uint8_t
         
     | 
| 
       126 
     | 
    
         
            -
            #endif // __cplusplus
         
     | 
| 
       127 
     | 
    
         
            -
             {
         
     | 
| 
       128 
     | 
    
         
            -
              /**
         
     | 
| 
       129 
     | 
    
         
            -
               * The symbol type is unspecified or unknown.
         
     | 
| 
       130 
     | 
    
         
            -
               *
         
     | 
| 
       131 
     | 
    
         
            -
               * In input contexts this variant can be used to encompass all
         
     | 
| 
       132 
     | 
    
         
            -
               * other variants (functions and variables), whereas in output
         
     | 
| 
       133 
     | 
    
         
            -
               * contexts it means that the type is not known.
         
     | 
| 
       134 
     | 
    
         
            -
               */
         
     | 
| 
       135 
     | 
    
         
            -
              BLAZE_SYM_UNDEF,
         
     | 
| 
       136 
     | 
    
         
            -
              /**
         
     | 
| 
       137 
     | 
    
         
            -
               * The symbol is a function.
         
     | 
| 
       138 
     | 
    
         
            -
               */
         
     | 
| 
       139 
     | 
    
         
            -
              BLAZE_SYM_FUNC,
         
     | 
| 
       140 
     | 
    
         
            -
              /**
         
     | 
| 
       141 
     | 
    
         
            -
               * The symbol is a variable.
         
     | 
| 
       142 
     | 
    
         
            -
               */
         
     | 
| 
       143 
     | 
    
         
            -
              BLAZE_SYM_VAR,
         
     | 
| 
       144 
     | 
    
         
            -
            };
         
     | 
| 
       145 
     | 
    
         
            -
            #ifndef __cplusplus
         
     | 
| 
       146 
91 
     | 
    
         
             
            typedef uint8_t blaze_sym_type;
         
     | 
| 
       147 
     | 
    
         
            -
            #endif // __cplusplus
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
92 
     | 
    
         
             
            /**
         
     | 
| 
       150 
     | 
    
         
            -
             * The  
     | 
| 
      
 93 
     | 
    
         
            +
             * The symbol type is unspecified or unknown.
         
     | 
| 
       151 
94 
     | 
    
         
             
             *
         
     | 
| 
       152 
     | 
    
         
            -
             *  
     | 
| 
       153 
     | 
    
         
            -
             *  
     | 
| 
       154 
     | 
    
         
            -
             *  
     | 
| 
      
 95 
     | 
    
         
            +
             * In input contexts this variant can be used to encompass all
         
     | 
| 
      
 96 
     | 
    
         
            +
             * other variants (functions and variables), whereas in output
         
     | 
| 
      
 97 
     | 
    
         
            +
             * contexts it means that the type is not known.
         
     | 
| 
       155 
98 
     | 
    
         
             
             */
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
            #ifdef __cplusplus
         
     | 
| 
       158 
     | 
    
         
            -
              : uint8_t
         
     | 
| 
       159 
     | 
    
         
            -
            #endif // __cplusplus
         
     | 
| 
       160 
     | 
    
         
            -
             {
         
     | 
| 
       161 
     | 
    
         
            -
              /**
         
     | 
| 
       162 
     | 
    
         
            -
               * Symbolization was successful.
         
     | 
| 
       163 
     | 
    
         
            -
               */
         
     | 
| 
       164 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_SUCCESS = 0,
         
     | 
| 
       165 
     | 
    
         
            -
              /**
         
     | 
| 
       166 
     | 
    
         
            -
               * The absolute address was not found in the corresponding process'
         
     | 
| 
       167 
     | 
    
         
            -
               * virtual memory map.
         
     | 
| 
       168 
     | 
    
         
            -
               */
         
     | 
| 
       169 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_UNMAPPED,
         
     | 
| 
       170 
     | 
    
         
            -
              /**
         
     | 
| 
       171 
     | 
    
         
            -
               * The file offset does not map to a valid piece of code/data.
         
     | 
| 
       172 
     | 
    
         
            -
               */
         
     | 
| 
       173 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_INVALID_FILE_OFFSET,
         
     | 
| 
       174 
     | 
    
         
            -
              /**
         
     | 
| 
       175 
     | 
    
         
            -
               * The `/proc/<pid>/maps` entry corresponding to the address does
         
     | 
| 
       176 
     | 
    
         
            -
               * not have a component (file system path, object, ...) associated
         
     | 
| 
       177 
     | 
    
         
            -
               * with it.
         
     | 
| 
       178 
     | 
    
         
            -
               */
         
     | 
| 
       179 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_MISSING_COMPONENT,
         
     | 
| 
       180 
     | 
    
         
            -
              /**
         
     | 
| 
       181 
     | 
    
         
            -
               * The symbolization source has no or no relevant symbols.
         
     | 
| 
       182 
     | 
    
         
            -
               */
         
     | 
| 
       183 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_MISSING_SYMS,
         
     | 
| 
       184 
     | 
    
         
            -
              /**
         
     | 
| 
       185 
     | 
    
         
            -
               * The address could not be found in the symbolization source.
         
     | 
| 
       186 
     | 
    
         
            -
               */
         
     | 
| 
       187 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_UNKNOWN_ADDR,
         
     | 
| 
       188 
     | 
    
         
            -
              /**
         
     | 
| 
       189 
     | 
    
         
            -
               * The address belonged to an entity that is currently unsupported.
         
     | 
| 
       190 
     | 
    
         
            -
               */
         
     | 
| 
       191 
     | 
    
         
            -
              BLAZE_SYMBOLIZE_REASON_UNSUPPORTED,
         
     | 
| 
       192 
     | 
    
         
            -
            };
         
     | 
| 
       193 
     | 
    
         
            -
            #ifndef __cplusplus
         
     | 
| 
       194 
     | 
    
         
            -
            typedef uint8_t blaze_symbolize_reason;
         
     | 
| 
       195 
     | 
    
         
            -
            #endif // __cplusplus
         
     | 
| 
       196 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
            #define BLAZE_SYM_TYPE_UNDEF 0
         
     | 
| 
       197 
100 
     | 
    
         
             
            /**
         
     | 
| 
       198 
     | 
    
         
            -
             * The  
     | 
| 
      
 101 
     | 
    
         
            +
             * The symbol is a function.
         
     | 
| 
       199 
102 
     | 
    
         
             
             */
         
     | 
| 
       200 
     | 
    
         
            -
             
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
       202 
     | 
    
         
            -
             
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
             
     | 
| 
       205 
     | 
    
         
            -
              /**
         
     | 
| 
       206 
     | 
    
         
            -
               * [`blaze_user_meta_variant::apk`] is valid.
         
     | 
| 
       207 
     | 
    
         
            -
               */
         
     | 
| 
       208 
     | 
    
         
            -
              BLAZE_USER_META_APK,
         
     | 
| 
       209 
     | 
    
         
            -
              /**
         
     | 
| 
       210 
     | 
    
         
            -
               * [`blaze_user_meta_variant::elf`] is valid.
         
     | 
| 
       211 
     | 
    
         
            -
               */
         
     | 
| 
       212 
     | 
    
         
            -
              BLAZE_USER_META_ELF,
         
     | 
| 
       213 
     | 
    
         
            -
            } blaze_user_meta_kind;
         
     | 
| 
      
 103 
     | 
    
         
            +
            #define BLAZE_SYM_TYPE_FUNC 1
         
     | 
| 
      
 104 
     | 
    
         
            +
            /**
         
     | 
| 
      
 105 
     | 
    
         
            +
             * The symbol is a variable.
         
     | 
| 
      
 106 
     | 
    
         
            +
             */
         
     | 
| 
      
 107 
     | 
    
         
            +
            #define BLAZE_SYM_TYPE_VAR 2
         
     | 
| 
       214 
108 
     | 
    
         | 
| 
       215 
109 
     | 
    
         
             
            /**
         
     | 
| 
       216 
110 
     | 
    
         
             
             * Information about a looked up symbol.
         
     | 
| 
         @@ -226,16 +120,21 @@ typedef struct blaze_sym_info { 
     | 
|
| 
       226 
120 
     | 
    
         
             
              uint64_t addr;
         
     | 
| 
       227 
121 
     | 
    
         
             
              /**
         
     | 
| 
       228 
122 
     | 
    
         
             
               * See [`inspect::SymInfo::size`].
         
     | 
| 
      
 123 
     | 
    
         
            +
               *
         
     | 
| 
      
 124 
     | 
    
         
            +
               * If the symbol's size is not available, this member will be `-1`.
         
     | 
| 
      
 125 
     | 
    
         
            +
               * Note that some symbol sources may not distinguish between
         
     | 
| 
      
 126 
     | 
    
         
            +
               * "unknown" size and `0`. In that case the size will be reported
         
     | 
| 
      
 127 
     | 
    
         
            +
               * as `0` here as well.
         
     | 
| 
       229 
128 
     | 
    
         
             
               */
         
     | 
| 
       230 
     | 
    
         
            -
               
     | 
| 
      
 129 
     | 
    
         
            +
              ptrdiff_t size;
         
     | 
| 
       231 
130 
     | 
    
         
             
              /**
         
     | 
| 
       232 
131 
     | 
    
         
             
               * See [`inspect::SymInfo::file_offset`].
         
     | 
| 
       233 
132 
     | 
    
         
             
               */
         
     | 
| 
       234 
133 
     | 
    
         
             
              uint64_t file_offset;
         
     | 
| 
       235 
134 
     | 
    
         
             
              /**
         
     | 
| 
       236 
     | 
    
         
            -
               * See [`inspect::SymInfo:: 
     | 
| 
      
 135 
     | 
    
         
            +
               * See [`inspect::SymInfo::module`].
         
     | 
| 
       237 
136 
     | 
    
         
             
               */
         
     | 
| 
       238 
     | 
    
         
            -
              const char * 
     | 
| 
      
 137 
     | 
    
         
            +
              const char *module;
         
     | 
| 
       239 
138 
     | 
    
         
             
              /**
         
     | 
| 
       240 
139 
     | 
    
         
             
               * See [`inspect::SymInfo::sym_type`].
         
     | 
| 
       241 
140 
     | 
    
         
             
               */
         
     | 
| 
         @@ -243,7 +142,7 @@ typedef struct blaze_sym_info { 
     | 
|
| 
       243 
142 
     | 
    
         
             
              /**
         
     | 
| 
       244 
143 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       245 
144 
     | 
    
         
             
               */
         
     | 
| 
       246 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 145 
     | 
    
         
            +
              uint8_t reserved[23];
         
     | 
| 
       247 
146 
     | 
    
         
             
            } blaze_sym_info;
         
     | 
| 
       248 
147 
     | 
    
         | 
| 
       249 
148 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -254,7 +153,7 @@ typedef struct blaze_inspector blaze_inspector; 
     | 
|
| 
       254 
153 
     | 
    
         
             
            /**
         
     | 
| 
       255 
154 
     | 
    
         
             
             * An object representing an ELF inspection source.
         
     | 
| 
       256 
155 
     | 
    
         
             
             *
         
     | 
| 
       257 
     | 
    
         
            -
             * C ABI compatible version of [`inspect::Elf`].
         
     | 
| 
      
 156 
     | 
    
         
            +
             * C ABI compatible version of [`inspect::source::Elf`].
         
     | 
| 
       258 
157 
     | 
    
         
             
             */
         
     | 
| 
       259 
158 
     | 
    
         
             
            typedef struct blaze_inspect_elf_src {
         
     | 
| 
       260 
159 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -277,7 +176,7 @@ typedef struct blaze_inspect_elf_src { 
     | 
|
| 
       277 
176 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       278 
177 
     | 
    
         
             
               * to zero.
         
     | 
| 
       279 
178 
     | 
    
         
             
               */
         
     | 
| 
       280 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 179 
     | 
    
         
            +
              uint8_t reserved[23];
         
     | 
| 
       281 
180 
     | 
    
         
             
            } blaze_inspect_elf_src;
         
     | 
| 
       282 
181 
     | 
    
         | 
| 
       283 
182 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -343,9 +242,49 @@ typedef struct blaze_normalizer_opts { 
     | 
|
| 
       343 
242 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       344 
243 
     | 
    
         
             
               * to zero.
         
     | 
| 
       345 
244 
     | 
    
         
             
               */
         
     | 
| 
       346 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 245 
     | 
    
         
            +
              uint8_t reserved[20];
         
     | 
| 
       347 
246 
     | 
    
         
             
            } blaze_normalizer_opts;
         
     | 
| 
       348 
247 
     | 
    
         | 
| 
      
 248 
     | 
    
         
            +
            /**
         
     | 
| 
      
 249 
     | 
    
         
            +
             * The reason why normalization failed.
         
     | 
| 
      
 250 
     | 
    
         
            +
             *
         
     | 
| 
      
 251 
     | 
    
         
            +
             * The reason is generally only meant as a hint. Reasons reported may change
         
     | 
| 
      
 252 
     | 
    
         
            +
             * over time and, hence, should not be relied upon for the correctness of the
         
     | 
| 
      
 253 
     | 
    
         
            +
             * application.
         
     | 
| 
      
 254 
     | 
    
         
            +
             */
         
     | 
| 
      
 255 
     | 
    
         
            +
            typedef uint8_t blaze_normalize_reason;
         
     | 
| 
      
 256 
     | 
    
         
            +
            /**
         
     | 
| 
      
 257 
     | 
    
         
            +
             * The absolute address was not found in the corresponding process' virtual
         
     | 
| 
      
 258 
     | 
    
         
            +
             * memory map.
         
     | 
| 
      
 259 
     | 
    
         
            +
             */
         
     | 
| 
      
 260 
     | 
    
         
            +
            #define BLAZE_NORMALIZE_REASON_UNMAPPED 0
         
     | 
| 
      
 261 
     | 
    
         
            +
            /**
         
     | 
| 
      
 262 
     | 
    
         
            +
             * The `/proc/<pid>/maps` entry corresponding to the address does not have
         
     | 
| 
      
 263 
     | 
    
         
            +
             * a component (file system path, object, ...) associated with it.
         
     | 
| 
      
 264 
     | 
    
         
            +
             */
         
     | 
| 
      
 265 
     | 
    
         
            +
            #define BLAZE_NORMALIZE_REASON_MISSING_COMPONENT 1
         
     | 
| 
      
 266 
     | 
    
         
            +
            /**
         
     | 
| 
      
 267 
     | 
    
         
            +
             * The address belonged to an entity that is currently unsupported.
         
     | 
| 
      
 268 
     | 
    
         
            +
             */
         
     | 
| 
      
 269 
     | 
    
         
            +
            #define BLAZE_NORMALIZE_REASON_UNSUPPORTED 2
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
            /**
         
     | 
| 
      
 272 
     | 
    
         
            +
             * The valid variant kind in [`blaze_user_meta`].
         
     | 
| 
      
 273 
     | 
    
         
            +
             */
         
     | 
| 
      
 274 
     | 
    
         
            +
            typedef uint8_t blaze_user_meta_kind;
         
     | 
| 
      
 275 
     | 
    
         
            +
            /**
         
     | 
| 
      
 276 
     | 
    
         
            +
             * [`blaze_user_meta_variant::unknown`] is valid.
         
     | 
| 
      
 277 
     | 
    
         
            +
             */
         
     | 
| 
      
 278 
     | 
    
         
            +
            #define BLAZE_USER_META_KIND_BLAZE_USER_META_UNKNOWN 0
         
     | 
| 
      
 279 
     | 
    
         
            +
            /**
         
     | 
| 
      
 280 
     | 
    
         
            +
             * [`blaze_user_meta_variant::apk`] is valid.
         
     | 
| 
      
 281 
     | 
    
         
            +
             */
         
     | 
| 
      
 282 
     | 
    
         
            +
            #define BLAZE_USER_META_KIND_BLAZE_USER_META_APK 1
         
     | 
| 
      
 283 
     | 
    
         
            +
            /**
         
     | 
| 
      
 284 
     | 
    
         
            +
             * [`blaze_user_meta_variant::elf`] is valid.
         
     | 
| 
      
 285 
     | 
    
         
            +
             */
         
     | 
| 
      
 286 
     | 
    
         
            +
            #define BLAZE_USER_META_KIND_BLAZE_USER_META_ELF 2
         
     | 
| 
      
 287 
     | 
    
         
            +
             
     | 
| 
       349 
288 
     | 
    
         
             
            /**
         
     | 
| 
       350 
289 
     | 
    
         
             
             * C compatible version of [`Apk`].
         
     | 
| 
       351 
290 
     | 
    
         
             
             */
         
     | 
| 
         @@ -358,7 +297,7 @@ typedef struct blaze_user_meta_apk { 
     | 
|
| 
       358 
297 
     | 
    
         
             
              /**
         
     | 
| 
       359 
298 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       360 
299 
     | 
    
         
             
               */
         
     | 
| 
       361 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 300 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       362 
301 
     | 
    
         
             
            } blaze_user_meta_apk;
         
     | 
| 
       363 
302 
     | 
    
         | 
| 
       364 
303 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -366,7 +305,13 @@ typedef struct blaze_user_meta_apk { 
     | 
|
| 
       366 
305 
     | 
    
         
             
             */
         
     | 
| 
       367 
306 
     | 
    
         
             
            typedef struct blaze_user_meta_elf {
         
     | 
| 
       368 
307 
     | 
    
         
             
              /**
         
     | 
| 
       369 
     | 
    
         
            -
               *  
     | 
| 
      
 308 
     | 
    
         
            +
               * Ordinarily, the canonical absolute path to the ELF file,
         
     | 
| 
      
 309 
     | 
    
         
            +
               * including its name. In case of an ELF file contained inside an
         
     | 
| 
      
 310 
     | 
    
         
            +
               * APK (see [`blaze_normalize_opts::apk_to_elf`]) this will be an
         
     | 
| 
      
 311 
     | 
    
         
            +
               * Android style path of the form `<apk>!<elf-in-apk>`. E.g.,
         
     | 
| 
      
 312 
     | 
    
         
            +
               * `/root/test.apk!/lib/libc.so`.
         
     | 
| 
      
 313 
     | 
    
         
            +
               *
         
     | 
| 
      
 314 
     | 
    
         
            +
               * This member is always present.
         
     | 
| 
       370 
315 
     | 
    
         
             
               */
         
     | 
| 
       371 
316 
     | 
    
         
             
              char *path;
         
     | 
| 
       372 
317 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -380,7 +325,7 @@ typedef struct blaze_user_meta_elf { 
     | 
|
| 
       380 
325 
     | 
    
         
             
              /**
         
     | 
| 
       381 
326 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       382 
327 
     | 
    
         
             
               */
         
     | 
| 
       383 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 328 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       384 
329 
     | 
    
         
             
            } blaze_user_meta_elf;
         
     | 
| 
       385 
330 
     | 
    
         | 
| 
       386 
331 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -397,7 +342,7 @@ typedef struct blaze_user_meta_unknown { 
     | 
|
| 
       397 
342 
     | 
    
         
             
              /**
         
     | 
| 
       398 
343 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       399 
344 
     | 
    
         
             
               */
         
     | 
| 
       400 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 345 
     | 
    
         
            +
              uint8_t reserved[15];
         
     | 
| 
       401 
346 
     | 
    
         
             
            } blaze_user_meta_unknown;
         
     | 
| 
       402 
347 
     | 
    
         | 
| 
       403 
348 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -425,11 +370,20 @@ typedef struct blaze_user_meta { 
     | 
|
| 
       425 
370 
     | 
    
         
             
              /**
         
     | 
| 
       426 
371 
     | 
    
         
             
               * The variant kind that is present.
         
     | 
| 
       427 
372 
     | 
    
         
             
               */
         
     | 
| 
       428 
     | 
    
         
            -
               
     | 
| 
      
 373 
     | 
    
         
            +
              blaze_user_meta_kind kind;
         
     | 
| 
      
 374 
     | 
    
         
            +
              /**
         
     | 
| 
      
 375 
     | 
    
         
            +
               * Currently unused bytes.
         
     | 
| 
      
 376 
     | 
    
         
            +
               */
         
     | 
| 
      
 377 
     | 
    
         
            +
              uint8_t unused[7];
         
     | 
| 
       429 
378 
     | 
    
         
             
              /**
         
     | 
| 
       430 
379 
     | 
    
         
             
               * The actual variant with its data.
         
     | 
| 
       431 
380 
     | 
    
         
             
               */
         
     | 
| 
       432 
381 
     | 
    
         
             
              union blaze_user_meta_variant variant;
         
     | 
| 
      
 382 
     | 
    
         
            +
              /**
         
     | 
| 
      
 383 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 384 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 385 
     | 
    
         
            +
               */
         
     | 
| 
      
 386 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       433 
387 
     | 
    
         
             
            } blaze_user_meta;
         
     | 
| 
       434 
388 
     | 
    
         | 
| 
       435 
389 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -446,6 +400,11 @@ typedef struct blaze_normalized_output { 
     | 
|
| 
       446 
400 
     | 
    
         
             
               * The index into the associated [`blaze_user_meta`] array.
         
     | 
| 
       447 
401 
     | 
    
         
             
               */
         
     | 
| 
       448 
402 
     | 
    
         
             
              size_t meta_idx;
         
     | 
| 
      
 403 
     | 
    
         
            +
              /**
         
     | 
| 
      
 404 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 405 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 406 
     | 
    
         
            +
               */
         
     | 
| 
      
 407 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       449 
408 
     | 
    
         
             
            } blaze_normalized_output;
         
     | 
| 
       450 
409 
     | 
    
         | 
| 
       451 
410 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -473,7 +432,7 @@ typedef struct blaze_normalized_user_output { 
     | 
|
| 
       473 
432 
     | 
    
         
             
              /**
         
     | 
| 
       474 
433 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       475 
434 
     | 
    
         
             
               */
         
     | 
| 
       476 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 435 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       477 
436 
     | 
    
         
             
            } blaze_normalized_user_output;
         
     | 
| 
       478 
437 
     | 
    
         | 
| 
       479 
438 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -507,13 +466,63 @@ typedef struct blaze_normalize_opts { 
     | 
|
| 
       507 
466 
     | 
    
         
             
               * better choice.
         
     | 
| 
       508 
467 
     | 
    
         
             
               */
         
     | 
| 
       509 
468 
     | 
    
         
             
              bool map_files;
         
     | 
| 
      
 469 
     | 
    
         
            +
              /**
         
     | 
| 
      
 470 
     | 
    
         
            +
               * Normalize addresses inside APKs to the contained ELF file and
         
     | 
| 
      
 471 
     | 
    
         
            +
               * report a regular
         
     | 
| 
      
 472 
     | 
    
         
            +
               * [`BLAZE_USER_META_ELF`][blaze_user_meta_kind::BLAZE_USER_META_ELF]
         
     | 
| 
      
 473 
     | 
    
         
            +
               * meta data entry instead of an
         
     | 
| 
      
 474 
     | 
    
         
            +
               * [`BLAZE_USER_META_APK`][blaze_user_meta_kind::BLAZE_USER_META_APK]
         
     | 
| 
      
 475 
     | 
    
         
            +
               * one. As a result, the reported file offset will also be relative
         
     | 
| 
      
 476 
     | 
    
         
            +
               * to the contained ELF file and not to the APK itself.
         
     | 
| 
      
 477 
     | 
    
         
            +
               */
         
     | 
| 
      
 478 
     | 
    
         
            +
              bool apk_to_elf;
         
     | 
| 
       510 
479 
     | 
    
         
             
              /**
         
     | 
| 
       511 
480 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       512 
481 
     | 
    
         
             
               * to zero.
         
     | 
| 
       513 
482 
     | 
    
         
             
               */
         
     | 
| 
       514 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 483 
     | 
    
         
            +
              uint8_t reserved[21];
         
     | 
| 
       515 
484 
     | 
    
         
             
            } blaze_normalize_opts;
         
     | 
| 
       516 
485 
     | 
    
         | 
| 
      
 486 
     | 
    
         
            +
            /**
         
     | 
| 
      
 487 
     | 
    
         
            +
             * The reason why symbolization failed.
         
     | 
| 
      
 488 
     | 
    
         
            +
             *
         
     | 
| 
      
 489 
     | 
    
         
            +
             * The reason is generally only meant as a hint. Reasons reported may
         
     | 
| 
      
 490 
     | 
    
         
            +
             * change over time and, hence, should not be relied upon for the
         
     | 
| 
      
 491 
     | 
    
         
            +
             * correctness of the application.
         
     | 
| 
      
 492 
     | 
    
         
            +
             */
         
     | 
| 
      
 493 
     | 
    
         
            +
            typedef uint8_t blaze_symbolize_reason;
         
     | 
| 
      
 494 
     | 
    
         
            +
            /**
         
     | 
| 
      
 495 
     | 
    
         
            +
             * Symbolization was successful.
         
     | 
| 
      
 496 
     | 
    
         
            +
             */
         
     | 
| 
      
 497 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_SUCCESS 0
         
     | 
| 
      
 498 
     | 
    
         
            +
            /**
         
     | 
| 
      
 499 
     | 
    
         
            +
             * The absolute address was not found in the corresponding process'
         
     | 
| 
      
 500 
     | 
    
         
            +
             * virtual memory map.
         
     | 
| 
      
 501 
     | 
    
         
            +
             */
         
     | 
| 
      
 502 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_UNMAPPED 1
         
     | 
| 
      
 503 
     | 
    
         
            +
            /**
         
     | 
| 
      
 504 
     | 
    
         
            +
             * The file offset does not map to a valid piece of code/data.
         
     | 
| 
      
 505 
     | 
    
         
            +
             */
         
     | 
| 
      
 506 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_INVALID_FILE_OFFSET 2
         
     | 
| 
      
 507 
     | 
    
         
            +
            /**
         
     | 
| 
      
 508 
     | 
    
         
            +
             * The `/proc/<pid>/maps` entry corresponding to the address does
         
     | 
| 
      
 509 
     | 
    
         
            +
             * not have a component (file system path, object, ...) associated
         
     | 
| 
      
 510 
     | 
    
         
            +
             * with it.
         
     | 
| 
      
 511 
     | 
    
         
            +
             */
         
     | 
| 
      
 512 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_MISSING_COMPONENT 3
         
     | 
| 
      
 513 
     | 
    
         
            +
            /**
         
     | 
| 
      
 514 
     | 
    
         
            +
             * The symbolization source has no or no relevant symbols.
         
     | 
| 
      
 515 
     | 
    
         
            +
             */
         
     | 
| 
      
 516 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_MISSING_SYMS 4
         
     | 
| 
      
 517 
     | 
    
         
            +
            /**
         
     | 
| 
      
 518 
     | 
    
         
            +
             * The address could not be found in the symbolization source.
         
     | 
| 
      
 519 
     | 
    
         
            +
             */
         
     | 
| 
      
 520 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_UNKNOWN_ADDR 5
         
     | 
| 
      
 521 
     | 
    
         
            +
            /**
         
     | 
| 
      
 522 
     | 
    
         
            +
             * The address belonged to an entity that is currently unsupported.
         
     | 
| 
      
 523 
     | 
    
         
            +
             */
         
     | 
| 
      
 524 
     | 
    
         
            +
            #define BLAZE_SYMBOLIZE_REASON_UNSUPPORTED 6
         
     | 
| 
      
 525 
     | 
    
         
            +
             
     | 
| 
       517 
526 
     | 
    
         
             
            /**
         
     | 
| 
       518 
527 
     | 
    
         
             
             * C ABI compatible version of [`blazesym::symbolize::Symbolizer`].
         
     | 
| 
       519 
528 
     | 
    
         
             
             *
         
     | 
| 
         @@ -578,9 +587,74 @@ typedef struct blaze_symbolizer_opts { 
     | 
|
| 
       578 
587 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       579 
588 
     | 
    
         
             
               * to zero.
         
     | 
| 
       580 
589 
     | 
    
         
             
               */
         
     | 
| 
       581 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 590 
     | 
    
         
            +
              uint8_t reserved[20];
         
     | 
| 
       582 
591 
     | 
    
         
             
            } blaze_symbolizer_opts;
         
     | 
| 
       583 
592 
     | 
    
         | 
| 
      
 593 
     | 
    
         
            +
            /**
         
     | 
| 
      
 594 
     | 
    
         
            +
             * Configuration for caching of ELF symbolization data.
         
     | 
| 
      
 595 
     | 
    
         
            +
             */
         
     | 
| 
      
 596 
     | 
    
         
            +
            typedef struct blaze_cache_src_elf {
         
     | 
| 
      
 597 
     | 
    
         
            +
              /**
         
     | 
| 
      
 598 
     | 
    
         
            +
               * The size of this object's type.
         
     | 
| 
      
 599 
     | 
    
         
            +
               *
         
     | 
| 
      
 600 
     | 
    
         
            +
               * Make sure to initialize it to `sizeof(<type>)`. This member is used to
         
     | 
| 
      
 601 
     | 
    
         
            +
               * ensure compatibility in the presence of member additions.
         
     | 
| 
      
 602 
     | 
    
         
            +
               */
         
     | 
| 
      
 603 
     | 
    
         
            +
              size_t type_size;
         
     | 
| 
      
 604 
     | 
    
         
            +
              /**
         
     | 
| 
      
 605 
     | 
    
         
            +
               * The path to the ELF file.
         
     | 
| 
      
 606 
     | 
    
         
            +
               */
         
     | 
| 
      
 607 
     | 
    
         
            +
              const char *path;
         
     | 
| 
      
 608 
     | 
    
         
            +
              /**
         
     | 
| 
      
 609 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 610 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 611 
     | 
    
         
            +
               */
         
     | 
| 
      
 612 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
      
 613 
     | 
    
         
            +
            } blaze_cache_src_elf;
         
     | 
| 
      
 614 
     | 
    
         
            +
             
     | 
| 
      
 615 
     | 
    
         
            +
            /**
         
     | 
| 
      
 616 
     | 
    
         
            +
             * Configuration for caching of process-level data.
         
     | 
| 
      
 617 
     | 
    
         
            +
             */
         
     | 
| 
      
 618 
     | 
    
         
            +
            typedef struct blaze_cache_src_process {
         
     | 
| 
      
 619 
     | 
    
         
            +
              /**
         
     | 
| 
      
 620 
     | 
    
         
            +
               * The size of this object's type.
         
     | 
| 
      
 621 
     | 
    
         
            +
               *
         
     | 
| 
      
 622 
     | 
    
         
            +
               * Make sure to initialize it to `sizeof(<type>)`. This member is used to
         
     | 
| 
      
 623 
     | 
    
         
            +
               * ensure compatibility in the presence of member additions.
         
     | 
| 
      
 624 
     | 
    
         
            +
               */
         
     | 
| 
      
 625 
     | 
    
         
            +
              size_t type_size;
         
     | 
| 
      
 626 
     | 
    
         
            +
              /**
         
     | 
| 
      
 627 
     | 
    
         
            +
               * The referenced process' ID.
         
     | 
| 
      
 628 
     | 
    
         
            +
               */
         
     | 
| 
      
 629 
     | 
    
         
            +
              uint32_t pid;
         
     | 
| 
      
 630 
     | 
    
         
            +
              /**
         
     | 
| 
      
 631 
     | 
    
         
            +
               * Whether to cache the process' VMAs for later use.
         
     | 
| 
      
 632 
     | 
    
         
            +
               *
         
     | 
| 
      
 633 
     | 
    
         
            +
               * Caching VMAs can be useful, because it conceptually enables the
         
     | 
| 
      
 634 
     | 
    
         
            +
               * library to serve a symbolization request targeting a process
         
     | 
| 
      
 635 
     | 
    
         
            +
               * even if said process has since exited the system.
         
     | 
| 
      
 636 
     | 
    
         
            +
               *
         
     | 
| 
      
 637 
     | 
    
         
            +
               * Note that once VMAs have been cached this way, the library will
         
     | 
| 
      
 638 
     | 
    
         
            +
               * refrain from re-reading updated VMAs unless instructed to.
         
     | 
| 
      
 639 
     | 
    
         
            +
               * Hence, if you have reason to believe that a process may have
         
     | 
| 
      
 640 
     | 
    
         
            +
               * changed its memory regions (by loading a new shared object, for
         
     | 
| 
      
 641 
     | 
    
         
            +
               * example), you would have to make another request to cache them
         
     | 
| 
      
 642 
     | 
    
         
            +
               * yourself.
         
     | 
| 
      
 643 
     | 
    
         
            +
               *
         
     | 
| 
      
 644 
     | 
    
         
            +
               * Note furthermore that if you cache VMAs to later symbolize
         
     | 
| 
      
 645 
     | 
    
         
            +
               * addresses after the original process has already exited, you
         
     | 
| 
      
 646 
     | 
    
         
            +
               * will have to opt-out of usage of `/proc/<pid>/map_files/` as
         
     | 
| 
      
 647 
     | 
    
         
            +
               * part of the symbolization request. Refer to
         
     | 
| 
      
 648 
     | 
    
         
            +
               * [`blaze_symbolize_src_process::no_map_files`].
         
     | 
| 
      
 649 
     | 
    
         
            +
               */
         
     | 
| 
      
 650 
     | 
    
         
            +
              bool cache_vmas;
         
     | 
| 
      
 651 
     | 
    
         
            +
              /**
         
     | 
| 
      
 652 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 653 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 654 
     | 
    
         
            +
               */
         
     | 
| 
      
 655 
     | 
    
         
            +
              uint8_t reserved[19];
         
     | 
| 
      
 656 
     | 
    
         
            +
            } blaze_cache_src_process;
         
     | 
| 
      
 657 
     | 
    
         
            +
             
     | 
| 
       584 
658 
     | 
    
         
             
            /**
         
     | 
| 
       585 
659 
     | 
    
         
             
             * Source code location information for a symbol or inlined function.
         
     | 
| 
       586 
660 
     | 
    
         
             
             */
         
     | 
| 
         @@ -642,8 +716,21 @@ typedef struct blaze_sym { 
     | 
|
| 
       642 
716 
     | 
    
         
             
               * The symbol name is where the given address should belong to.
         
     | 
| 
       643 
717 
     | 
    
         
             
               *
         
     | 
| 
       644 
718 
     | 
    
         
             
               * If an address could not be symbolized, this member will be NULL.
         
     | 
| 
      
 719 
     | 
    
         
            +
               * Check the `reason` member for additional information pertaining
         
     | 
| 
      
 720 
     | 
    
         
            +
               * the failure.
         
     | 
| 
       645 
721 
     | 
    
         
             
               */
         
     | 
| 
       646 
722 
     | 
    
         
             
              const char *name;
         
     | 
| 
      
 723 
     | 
    
         
            +
              /**
         
     | 
| 
      
 724 
     | 
    
         
            +
               * The path to or name of the module containing the symbol.
         
     | 
| 
      
 725 
     | 
    
         
            +
               *
         
     | 
| 
      
 726 
     | 
    
         
            +
               * Typically this would be the path to a executable or shared
         
     | 
| 
      
 727 
     | 
    
         
            +
               * object. Depending on the symbol source this member may not be
         
     | 
| 
      
 728 
     | 
    
         
            +
               * present or it could also just be a file name without path. In
         
     | 
| 
      
 729 
     | 
    
         
            +
               * case of an ELF file contained inside an APK, this will be an
         
     | 
| 
      
 730 
     | 
    
         
            +
               * Android style path of the form `<apk>!<elf-in-apk>`. E.g.,
         
     | 
| 
      
 731 
     | 
    
         
            +
               * `/root/test.apk!/lib/libc.so`.
         
     | 
| 
      
 732 
     | 
    
         
            +
               */
         
     | 
| 
      
 733 
     | 
    
         
            +
              const char *module;
         
     | 
| 
       647 
734 
     | 
    
         
             
              /**
         
     | 
| 
       648 
735 
     | 
    
         
             
               * The address at which the symbol is located (i.e., its "start").
         
     | 
| 
       649 
736 
     | 
    
         
             
               *
         
     | 
| 
         @@ -664,6 +751,15 @@ typedef struct blaze_sym { 
     | 
|
| 
       664 
751 
     | 
    
         
             
               * applied).
         
     | 
| 
       665 
752 
     | 
    
         
             
               */
         
     | 
| 
       666 
753 
     | 
    
         
             
              size_t offset;
         
     | 
| 
      
 754 
     | 
    
         
            +
              /**
         
     | 
| 
      
 755 
     | 
    
         
            +
               * The size of the symbol.
         
     | 
| 
      
 756 
     | 
    
         
            +
               *
         
     | 
| 
      
 757 
     | 
    
         
            +
               * If the symbol's size is not available, this member will be `-1`.
         
     | 
| 
      
 758 
     | 
    
         
            +
               * Note that some symbol sources may not distinguish between
         
     | 
| 
      
 759 
     | 
    
         
            +
               * "unknown" size and `0`. In that case the size will be reported
         
     | 
| 
      
 760 
     | 
    
         
            +
               * as `0` here as well.
         
     | 
| 
      
 761 
     | 
    
         
            +
               */
         
     | 
| 
      
 762 
     | 
    
         
            +
              ptrdiff_t size;
         
     | 
| 
       667 
763 
     | 
    
         
             
              /**
         
     | 
| 
       668 
764 
     | 
    
         
             
               * Source code location information for the symbol.
         
     | 
| 
       669 
765 
     | 
    
         
             
               */
         
     | 
| 
         @@ -684,7 +780,7 @@ typedef struct blaze_sym { 
     | 
|
| 
       684 
780 
     | 
    
         
             
              /**
         
     | 
| 
       685 
781 
     | 
    
         
             
               * Unused member available for future expansion.
         
     | 
| 
       686 
782 
     | 
    
         
             
               */
         
     | 
| 
       687 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 783 
     | 
    
         
            +
              uint8_t reserved[15];
         
     | 
| 
       688 
784 
     | 
    
         
             
            } blaze_sym;
         
     | 
| 
       689 
785 
     | 
    
         | 
| 
       690 
786 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -722,10 +818,7 @@ typedef struct blaze_symbolize_src_process { 
     | 
|
| 
       722 
818 
     | 
    
         
             
               */
         
     | 
| 
       723 
819 
     | 
    
         
             
              size_t type_size;
         
     | 
| 
       724 
820 
     | 
    
         
             
              /**
         
     | 
| 
       725 
     | 
    
         
            -
               *  
     | 
| 
       726 
     | 
    
         
            -
               *
         
     | 
| 
       727 
     | 
    
         
            -
               * blazesym will parse `/proc/<pid>/maps` and load all the object
         
     | 
| 
       728 
     | 
    
         
            -
               * files.
         
     | 
| 
      
 821 
     | 
    
         
            +
               * The referenced process' ID.
         
     | 
| 
       729 
822 
     | 
    
         
             
               */
         
     | 
| 
       730 
823 
     | 
    
         
             
              uint32_t pid;
         
     | 
| 
       731 
824 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -741,25 +834,23 @@ typedef struct blaze_symbolize_src_process { 
     | 
|
| 
       741 
834 
     | 
    
         
             
              /**
         
     | 
| 
       742 
835 
     | 
    
         
             
               * Whether to work with `/proc/<pid>/map_files/` entries or with
         
     | 
| 
       743 
836 
     | 
    
         
             
               * symbolic paths mentioned in `/proc/<pid>/maps` instead.
         
     | 
| 
       744 
     | 
    
         
            -
               * 
     | 
| 
       745 
     | 
    
         
            -
               *  
     | 
| 
       746 
     | 
    
         
            -
               *  
     | 
| 
       747 
     | 
    
         
            -
               *  
     | 
| 
       748 
     | 
    
         
            -
               * ` 
     | 
| 
      
 837 
     | 
    
         
            +
               *
         
     | 
| 
      
 838 
     | 
    
         
            +
               * `no_map_files` usage is generally discouraged, as symbolic paths
         
     | 
| 
      
 839 
     | 
    
         
            +
               * are unlikely to work reliably in mount namespace contexts or
         
     | 
| 
      
 840 
     | 
    
         
            +
               * when files have been deleted from the file system. However, by
         
     | 
| 
      
 841 
     | 
    
         
            +
               * using symbolic paths (i.e., with `no_map_files` being `true`)
         
     | 
| 
      
 842 
     | 
    
         
            +
               * the need for requiring the `SYS_ADMIN` capability is eliminated.
         
     | 
| 
       749 
843 
     | 
    
         
             
               */
         
     | 
| 
       750 
     | 
    
         
            -
              bool  
     | 
| 
      
 844 
     | 
    
         
            +
              bool no_map_files;
         
     | 
| 
       751 
845 
     | 
    
         
             
              /**
         
     | 
| 
       752 
846 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       753 
847 
     | 
    
         
             
               * to zero.
         
     | 
| 
       754 
848 
     | 
    
         
             
               */
         
     | 
| 
       755 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 849 
     | 
    
         
            +
              uint8_t reserved[17];
         
     | 
| 
       756 
850 
     | 
    
         
             
            } blaze_symbolize_src_process;
         
     | 
| 
       757 
851 
     | 
    
         | 
| 
       758 
852 
     | 
    
         
             
            /**
         
     | 
| 
       759 
853 
     | 
    
         
             
             * The parameters to load symbols and debug information from a kernel.
         
     | 
| 
       760 
     | 
    
         
            -
             *
         
     | 
| 
       761 
     | 
    
         
            -
             * Use a kernel image and a snapshot of its kallsyms as a source of symbols and
         
     | 
| 
       762 
     | 
    
         
            -
             * debug information.
         
     | 
| 
       763 
854 
     | 
    
         
             
             */
         
     | 
| 
       764 
855 
     | 
    
         
             
            typedef struct blaze_symbolize_src_kernel {
         
     | 
| 
       765 
856 
     | 
    
         
             
              /**
         
     | 
| 
         @@ -770,33 +861,45 @@ typedef struct blaze_symbolize_src_kernel { 
     | 
|
| 
       770 
861 
     | 
    
         
             
               */
         
     | 
| 
       771 
862 
     | 
    
         
             
              size_t type_size;
         
     | 
| 
       772 
863 
     | 
    
         
             
              /**
         
     | 
| 
       773 
     | 
    
         
            -
               * The path of a  
     | 
| 
      
 864 
     | 
    
         
            +
               * The path of a `kallsyms` file to use.
         
     | 
| 
      
 865 
     | 
    
         
            +
               *
         
     | 
| 
      
 866 
     | 
    
         
            +
               * When `NULL`, this will refer to `kallsyms` of the running kernel.
         
     | 
| 
      
 867 
     | 
    
         
            +
               * If set to `'\0'` (`""`) usage of `kallsyms` will be disabled.
         
     | 
| 
      
 868 
     | 
    
         
            +
               * Otherwise the copy at the given path will be used.
         
     | 
| 
       774 
869 
     | 
    
         
             
               *
         
     | 
| 
       775 
     | 
    
         
            -
               *  
     | 
| 
       776 
     | 
    
         
            -
               *  
     | 
| 
       777 
     | 
    
         
            -
               *  
     | 
| 
       778 
     | 
    
         
            -
               * Passing a `NULL`, by default, will result in `"/proc/kallsyms"`.
         
     | 
| 
      
 870 
     | 
    
         
            +
               * If both a `vmlinux` as well as a `kallsyms` file are found,
         
     | 
| 
      
 871 
     | 
    
         
            +
               * `vmlinux` will generally be given preference and `kallsyms` acts
         
     | 
| 
      
 872 
     | 
    
         
            +
               * as a fallback.
         
     | 
| 
       779 
873 
     | 
    
         
             
               */
         
     | 
| 
       780 
874 
     | 
    
         
             
              const char *kallsyms;
         
     | 
| 
       781 
875 
     | 
    
         
             
              /**
         
     | 
| 
       782 
     | 
    
         
            -
               * The path of  
     | 
| 
      
 876 
     | 
    
         
            +
               * The path of the `vmlinux` file to use.
         
     | 
| 
       783 
877 
     | 
    
         
             
               *
         
     | 
| 
       784 
     | 
    
         
            -
               *  
     | 
| 
       785 
     | 
    
         
            -
               *  
     | 
| 
       786 
     | 
    
         
            -
               *  
     | 
| 
       787 
     | 
    
         
            -
               * 
     | 
| 
      
 878 
     | 
    
         
            +
               * `vmlinux` is generally an uncompressed and unstripped object
         
     | 
| 
      
 879 
     | 
    
         
            +
               * file that is typically used in debugging, profiling, and
         
     | 
| 
      
 880 
     | 
    
         
            +
               * similar use cases.
         
     | 
| 
      
 881 
     | 
    
         
            +
               *
         
     | 
| 
      
 882 
     | 
    
         
            +
               * When `NULL`, the library will search for `vmlinux` candidates in
         
     | 
| 
      
 883 
     | 
    
         
            +
               * various locations, taking into account the currently running
         
     | 
| 
      
 884 
     | 
    
         
            +
               * kernel version. If set to `'\0'` (`""`) discovery and usage of a
         
     | 
| 
      
 885 
     | 
    
         
            +
               * `vmlinux` will be disabled. Otherwise the copy at the given path
         
     | 
| 
      
 886 
     | 
    
         
            +
               * will be used.
         
     | 
| 
      
 887 
     | 
    
         
            +
               *
         
     | 
| 
      
 888 
     | 
    
         
            +
               * If both a `vmlinux` as well as a `kallsyms` file are found,
         
     | 
| 
      
 889 
     | 
    
         
            +
               * `vmlinux` will generally be given preference and `kallsyms` acts
         
     | 
| 
      
 890 
     | 
    
         
            +
               * as a fallback.
         
     | 
| 
       788 
891 
     | 
    
         
             
               */
         
     | 
| 
       789 
     | 
    
         
            -
              const char * 
     | 
| 
      
 892 
     | 
    
         
            +
              const char *vmlinux;
         
     | 
| 
       790 
893 
     | 
    
         
             
              /**
         
     | 
| 
       791 
     | 
    
         
            -
               * Whether or not to consult debug symbols from ` 
     | 
| 
       792 
     | 
    
         
            -
               *  
     | 
| 
      
 894 
     | 
    
         
            +
               * Whether or not to consult debug symbols from `vmlinux` to
         
     | 
| 
      
 895 
     | 
    
         
            +
               * satisfy the request (if present).
         
     | 
| 
       793 
896 
     | 
    
         
             
               */
         
     | 
| 
       794 
897 
     | 
    
         
             
              bool debug_syms;
         
     | 
| 
       795 
898 
     | 
    
         
             
              /**
         
     | 
| 
       796 
899 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       797 
900 
     | 
    
         
             
               * to zero.
         
     | 
| 
       798 
901 
     | 
    
         
             
               */
         
     | 
| 
       799 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 902 
     | 
    
         
            +
              uint8_t reserved[23];
         
     | 
| 
       800 
903 
     | 
    
         
             
            } blaze_symbolize_src_kernel;
         
     | 
| 
       801 
904 
     | 
    
         | 
| 
       802 
905 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -831,7 +934,7 @@ typedef struct blaze_symbolize_src_elf { 
     | 
|
| 
       831 
934 
     | 
    
         
             
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
       832 
935 
     | 
    
         
             
               * to zero.
         
     | 
| 
       833 
936 
     | 
    
         
             
               */
         
     | 
| 
       834 
     | 
    
         
            -
              uint8_t reserved[ 
     | 
| 
      
 937 
     | 
    
         
            +
              uint8_t reserved[23];
         
     | 
| 
       835 
938 
     | 
    
         
             
            } blaze_symbolize_src_elf;
         
     | 
| 
       836 
939 
     | 
    
         | 
| 
       837 
940 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -853,6 +956,11 @@ typedef struct blaze_symbolize_src_gsym_data { 
     | 
|
| 
       853 
956 
     | 
    
         
             
               * The size of the Gsym data.
         
     | 
| 
       854 
957 
     | 
    
         
             
               */
         
     | 
| 
       855 
958 
     | 
    
         
             
              size_t data_len;
         
     | 
| 
      
 959 
     | 
    
         
            +
              /**
         
     | 
| 
      
 960 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 961 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 962 
     | 
    
         
            +
               */
         
     | 
| 
      
 963 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       856 
964 
     | 
    
         
             
            } blaze_symbolize_src_gsym_data;
         
     | 
| 
       857 
965 
     | 
    
         | 
| 
       858 
966 
     | 
    
         
             
            /**
         
     | 
| 
         @@ -870,8 +978,46 @@ typedef struct blaze_symbolize_src_gsym_file { 
     | 
|
| 
       870 
978 
     | 
    
         
             
               * The path to a gsym file.
         
     | 
| 
       871 
979 
     | 
    
         
             
               */
         
     | 
| 
       872 
980 
     | 
    
         
             
              const char *path;
         
     | 
| 
      
 981 
     | 
    
         
            +
              /**
         
     | 
| 
      
 982 
     | 
    
         
            +
               * Unused member available for future expansion. Must be initialized
         
     | 
| 
      
 983 
     | 
    
         
            +
               * to zero.
         
     | 
| 
      
 984 
     | 
    
         
            +
               */
         
     | 
| 
      
 985 
     | 
    
         
            +
              uint8_t reserved[16];
         
     | 
| 
       873 
986 
     | 
    
         
             
            } blaze_symbolize_src_gsym_file;
         
     | 
| 
       874 
987 
     | 
    
         | 
| 
      
 988 
     | 
    
         
            +
            /**
         
     | 
| 
      
 989 
     | 
    
         
            +
             * The level at which to emit traces.
         
     | 
| 
      
 990 
     | 
    
         
            +
             */
         
     | 
| 
      
 991 
     | 
    
         
            +
            typedef uint8_t blaze_trace_lvl;
         
     | 
| 
      
 992 
     | 
    
         
            +
            /**
         
     | 
| 
      
 993 
     | 
    
         
            +
             * Emit all trace events.
         
     | 
| 
      
 994 
     | 
    
         
            +
             *
         
     | 
| 
      
 995 
     | 
    
         
            +
             * This is the most verbose level and includes all others.
         
     | 
| 
      
 996 
     | 
    
         
            +
             */
         
     | 
| 
      
 997 
     | 
    
         
            +
            #define BLAZE_TRACE_LVL_TRACE 0
         
     | 
| 
      
 998 
     | 
    
         
            +
            /**
         
     | 
| 
      
 999 
     | 
    
         
            +
             * Emit debug traces and above.
         
     | 
| 
      
 1000 
     | 
    
         
            +
             *
         
     | 
| 
      
 1001 
     | 
    
         
            +
             * This level excludes traces emitted with "TRACE" verbosity.
         
     | 
| 
      
 1002 
     | 
    
         
            +
             */
         
     | 
| 
      
 1003 
     | 
    
         
            +
            #define BLAZE_TRACE_LVL_DEBUG 1
         
     | 
| 
      
 1004 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1005 
     | 
    
         
            +
             * Emit info level traces and above.
         
     | 
| 
      
 1006 
     | 
    
         
            +
             *
         
     | 
| 
      
 1007 
     | 
    
         
            +
             * This level excludes traces emitted with "TRACE" or "DEBUG"
         
     | 
| 
      
 1008 
     | 
    
         
            +
             * verbosity.
         
     | 
| 
      
 1009 
     | 
    
         
            +
             */
         
     | 
| 
      
 1010 
     | 
    
         
            +
            #define BLAZE_TRACE_LVL_INFO 2
         
     | 
| 
      
 1011 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1012 
     | 
    
         
            +
             * Only emit warnings.
         
     | 
| 
      
 1013 
     | 
    
         
            +
             */
         
     | 
| 
      
 1014 
     | 
    
         
            +
            #define BLAZE_TRACE_LVL_WARN 3
         
     | 
| 
      
 1015 
     | 
    
         
            +
             
     | 
| 
      
 1016 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1017 
     | 
    
         
            +
             * The signature of a callback function as passed to [`blaze_trace`].
         
     | 
| 
      
 1018 
     | 
    
         
            +
             */
         
     | 
| 
      
 1019 
     | 
    
         
            +
            typedef void (*blaze_trace_cb)(const char*);
         
     | 
| 
      
 1020 
     | 
    
         
            +
             
     | 
| 
       875 
1021 
     | 
    
         
             
            #ifdef __cplusplus
         
     | 
| 
       876 
1022 
     | 
    
         
             
            extern "C" {
         
     | 
| 
       877 
1023 
     | 
    
         
             
            #endif // __cplusplus
         
     | 
| 
         @@ -879,12 +1025,12 @@ extern "C" { 
     | 
|
| 
       879 
1025 
     | 
    
         
             
            /**
         
     | 
| 
       880 
1026 
     | 
    
         
             
             * Retrieve the error reported by the last fallible API function invoked.
         
     | 
| 
       881 
1027 
     | 
    
         
             
             */
         
     | 
| 
       882 
     | 
    
         
            -
             
     | 
| 
      
 1028 
     | 
    
         
            +
            blaze_err blaze_err_last(void);
         
     | 
| 
       883 
1029 
     | 
    
         | 
| 
       884 
1030 
     | 
    
         
             
            /**
         
     | 
| 
       885 
1031 
     | 
    
         
             
             * Retrieve a textual representation of the error code.
         
     | 
| 
       886 
1032 
     | 
    
         
             
             */
         
     | 
| 
       887 
     | 
    
         
            -
            const char *blaze_err_str( 
     | 
| 
      
 1033 
     | 
    
         
            +
            const char *blaze_err_str(blaze_err err);
         
     | 
| 
       888 
1034 
     | 
    
         | 
| 
       889 
1035 
     | 
    
         
             
            /**
         
     | 
| 
       890 
1036 
     | 
    
         
             
             * Check whether the `PROCMAP_QUERY` ioctl is supported by the system.
         
     | 
| 
         @@ -915,7 +1061,7 @@ bool blaze_supports_procmap_query(void); 
     | 
|
| 
       915 
1061 
     | 
    
         
             
             * retrieve this error.
         
     | 
| 
       916 
1062 
     | 
    
         
             
             *
         
     | 
| 
       917 
1063 
     | 
    
         
             
             * Similarly, if no build ID is present `NULL` is returned and the last
         
     | 
| 
       918 
     | 
    
         
            -
             * error will be set to [` 
     | 
| 
      
 1064 
     | 
    
         
            +
             * error will be set to [`blaze_err::OK`].
         
     | 
| 
       919 
1065 
     | 
    
         
             
             *
         
     | 
| 
       920 
1066 
     | 
    
         
             
             * # Safety
         
     | 
| 
       921 
1067 
     | 
    
         
             
             * - `path` needs to be a valid pointer to a NUL terminated string
         
     | 
| 
         @@ -1137,12 +1283,52 @@ blaze_symbolizer *blaze_symbolizer_new_opts(const struct blaze_symbolizer_opts * 
     | 
|
| 
       1137 
1283 
     | 
    
         
             
             * Free an instance of blazesym a symbolizer for C API.
         
     | 
| 
       1138 
1284 
     | 
    
         
             
             *
         
     | 
| 
       1139 
1285 
     | 
    
         
             
             * # Safety
         
     | 
| 
       1140 
     | 
    
         
            -
             *
         
     | 
| 
       1141 
1286 
     | 
    
         
             
             * The pointer must have been returned by [`blaze_symbolizer_new`] or
         
     | 
| 
       1142 
1287 
     | 
    
         
             
             * [`blaze_symbolizer_new_opts`].
         
     | 
| 
       1143 
1288 
     | 
    
         
             
             */
         
     | 
| 
       1144 
1289 
     | 
    
         
             
            void blaze_symbolizer_free(blaze_symbolizer *symbolizer);
         
     | 
| 
       1145 
1290 
     | 
    
         | 
| 
      
 1291 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1292 
     | 
    
         
            +
             * Cache an ELF symbolization source.
         
     | 
| 
      
 1293 
     | 
    
         
            +
             *
         
     | 
| 
      
 1294 
     | 
    
         
            +
             * Cache symbolization data of an ELF file.
         
     | 
| 
      
 1295 
     | 
    
         
            +
             *
         
     | 
| 
      
 1296 
     | 
    
         
            +
             * The function sets the thread's last error to either
         
     | 
| 
      
 1297 
     | 
    
         
            +
             * [`blaze_err::OK`] to indicate success or a different error code
         
     | 
| 
      
 1298 
     | 
    
         
            +
             * associated with the problem encountered. Use [`blaze_err_last`] to
         
     | 
| 
      
 1299 
     | 
    
         
            +
             * retrieve this error.
         
     | 
| 
      
 1300 
     | 
    
         
            +
             *
         
     | 
| 
      
 1301 
     | 
    
         
            +
             * # Safety
         
     | 
| 
      
 1302 
     | 
    
         
            +
             * - `symbolizer` needs to point to a valid [`blaze_symbolizer`] object
         
     | 
| 
      
 1303 
     | 
    
         
            +
             * - `cache` needs to point to a valid [`blaze_cache_src_process`] object
         
     | 
| 
      
 1304 
     | 
    
         
            +
             */
         
     | 
| 
      
 1305 
     | 
    
         
            +
            void blaze_symbolize_cache_elf(blaze_symbolizer *symbolizer,
         
     | 
| 
      
 1306 
     | 
    
         
            +
                                           const struct blaze_cache_src_elf *cache);
         
     | 
| 
      
 1307 
     | 
    
         
            +
             
     | 
| 
      
 1308 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1309 
     | 
    
         
            +
             * Cache VMA meta data associated with a process.
         
     | 
| 
      
 1310 
     | 
    
         
            +
             *
         
     | 
| 
      
 1311 
     | 
    
         
            +
             * Cache VMA meta data associated with a process. This will speed up
         
     | 
| 
      
 1312 
     | 
    
         
            +
             * subsequent symbolization requests while also enabling symbolization
         
     | 
| 
      
 1313 
     | 
    
         
            +
             * of addresses belonging to processes that exited after being cache
         
     | 
| 
      
 1314 
     | 
    
         
            +
             * this way.
         
     | 
| 
      
 1315 
     | 
    
         
            +
             *
         
     | 
| 
      
 1316 
     | 
    
         
            +
             * If this method fails, any previously cached data is left untouched
         
     | 
| 
      
 1317 
     | 
    
         
            +
             * and will be used subsequently as if no failure occurred. Put
         
     | 
| 
      
 1318 
     | 
    
         
            +
             * differently, this method is only effectful on the happy path.
         
     | 
| 
      
 1319 
     | 
    
         
            +
             *
         
     | 
| 
      
 1320 
     | 
    
         
            +
             * The function sets the thread's last error to either
         
     | 
| 
      
 1321 
     | 
    
         
            +
             * [`blaze_err::OK`] to indicate success or a different error code
         
     | 
| 
      
 1322 
     | 
    
         
            +
             * associated with the problem encountered. Use [`blaze_err_last`] to
         
     | 
| 
      
 1323 
     | 
    
         
            +
             * retrieve this error.
         
     | 
| 
      
 1324 
     | 
    
         
            +
             *
         
     | 
| 
      
 1325 
     | 
    
         
            +
             * # Safety
         
     | 
| 
      
 1326 
     | 
    
         
            +
             * - `symbolizer` needs to point to a valid [`blaze_symbolizer`] object
         
     | 
| 
      
 1327 
     | 
    
         
            +
             * - `cache` needs to point to a valid [`blaze_cache_src_process`] object
         
     | 
| 
      
 1328 
     | 
    
         
            +
             */
         
     | 
| 
      
 1329 
     | 
    
         
            +
            void blaze_symbolize_cache_process(blaze_symbolizer *symbolizer,
         
     | 
| 
      
 1330 
     | 
    
         
            +
                                               const struct blaze_cache_src_process *cache);
         
     | 
| 
      
 1331 
     | 
    
         
            +
             
     | 
| 
       1146 
1332 
     | 
    
         
             
            /**
         
     | 
| 
       1147 
1333 
     | 
    
         
             
             * Symbolize a list of process absolute addresses.
         
     | 
| 
       1148 
1334 
     | 
    
         
             
             *
         
     | 
| 
         @@ -1284,8 +1470,28 @@ const struct blaze_syms *blaze_symbolize_gsym_file_virt_offsets(blaze_symbolizer 
     | 
|
| 
       1284 
1470 
     | 
    
         
             
             */
         
     | 
| 
       1285 
1471 
     | 
    
         
             
            void blaze_syms_free(const struct blaze_syms *syms);
         
     | 
| 
       1286 
1472 
     | 
    
         | 
| 
      
 1473 
     | 
    
         
            +
            /**
         
     | 
| 
      
 1474 
     | 
    
         
            +
             * Enable the main library's tracing infrastructure and invoke a
         
     | 
| 
      
 1475 
     | 
    
         
            +
             * callback function for each emitted trace line.
         
     | 
| 
      
 1476 
     | 
    
         
            +
             *
         
     | 
| 
      
 1477 
     | 
    
         
            +
             * The provided [`blaze_trace_lvl`] determines what kind of traces are
         
     | 
| 
      
 1478 
     | 
    
         
            +
             * emitted.
         
     | 
| 
      
 1479 
     | 
    
         
            +
             *
         
     | 
| 
      
 1480 
     | 
    
         
            +
             * This function should be invoked at most once. Subsequent invocations
         
     | 
| 
      
 1481 
     | 
    
         
            +
             * will not affect tracing behavior.
         
     | 
| 
      
 1482 
     | 
    
         
            +
             *
         
     | 
| 
      
 1483 
     | 
    
         
            +
             * On error the function sets the thread's last error to indicate the
         
     | 
| 
      
 1484 
     | 
    
         
            +
             * problem encountered. Use [`blaze_err_last`] to retrieve this error.
         
     | 
| 
      
 1485 
     | 
    
         
            +
             *
         
     | 
| 
      
 1486 
     | 
    
         
            +
             * # Notes
         
     | 
| 
      
 1487 
     | 
    
         
            +
             * - the format of emitted lines is unspecified and subject to change; it is
         
     | 
| 
      
 1488 
     | 
    
         
            +
             *   meant for human consumption and not programmatic evaluation
         
     | 
| 
      
 1489 
     | 
    
         
            +
             */
         
     | 
| 
      
 1490 
     | 
    
         
            +
            void blaze_trace(blaze_trace_lvl lvl,
         
     | 
| 
      
 1491 
     | 
    
         
            +
                             blaze_trace_cb cb);
         
     | 
| 
      
 1492 
     | 
    
         
            +
             
     | 
| 
       1287 
1493 
     | 
    
         
             
            #ifdef __cplusplus
         
     | 
| 
       1288 
1494 
     | 
    
         
             
            }  // extern "C"
         
     | 
| 
       1289 
1495 
     | 
    
         
             
            #endif  // __cplusplus
         
     | 
| 
       1290 
1496 
     | 
    
         | 
| 
       1291 
     | 
    
         
            -
            #endif  /* __blazesym_h_ */
         
     | 
| 
      
 1497 
     | 
    
         
            +
            #endif  /* __blazesym_h_ */
         
     |