Changeset 40eab9f in mainline for kernel/generic/src/debug/util.h


Ignore:
Timestamp:
2023-11-03T18:47:41Z (15 months ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, topic/msim-upgrade, topic/simplify-dev-export
Children:
b1397ab
Parents:
dcd8214
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-11-03 18:46:22)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-11-03 18:47:41)
Message:

Print symbol names and line numbers in stacktraces for init tasks

Only useful in select few situations, but useful nonetheless.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/debug/util.h

    rdcd8214 r40eab9f  
    3333#include <stdint.h>
    3434#include <debug/constants.h>
     35#include <debug/sections.h>
    3536#include <debug.h>
    3637
     
    3940extern bool skip_data(unsigned, const uint8_t **const, const uint8_t *, unsigned);
    4041extern void print_format(const char *, const uint8_t *, const uint8_t *);
    41 extern void print_formatted_list(const char *, const uint8_t *, const uint8_t *,
    42     const uint8_t *, const uint8_t *, unsigned);
     42extern void print_formatted_list(debug_sections_t *, const char *,
     43    const uint8_t *, const uint8_t *, const uint8_t *, const uint8_t *, unsigned);
    4344
    4445extern void print_block(const uint8_t **, const uint8_t *, unsigned);
    45 extern void print_formed_data(unsigned, const uint8_t **const, const uint8_t *, unsigned);
    46 
    47 inline uint8_t read_byte(const uint8_t **data, const uint8_t *data_end)
     46extern void print_formed_data(debug_sections_t *scs, unsigned, const uint8_t **const, const uint8_t *, unsigned);
     47
     48static inline uint8_t read_byte(const uint8_t **data, const uint8_t *data_end)
    4849{
    4950        if (*data >= data_end) {
     
    6768} __attribute__((packed));
    6869
    69 inline uint16_t read_uint16(const uint8_t **data, const uint8_t *data_end)
     70static inline uint16_t read_uint16(const uint8_t **data, const uint8_t *data_end)
    7071{
    7172        if (*data + 2 > data_end) {
     
    8081}
    8182
    82 inline uint32_t read_uint24(const uint8_t **data, const uint8_t *data_end)
     83static inline uint32_t read_uint24(const uint8_t **data, const uint8_t *data_end)
    8384{
    8485        if (*data + 3 > data_end) {
     
    9899}
    99100
    100 inline uint32_t read_uint32(const uint8_t **data, const uint8_t *data_end)
     101static inline uint32_t read_uint32(const uint8_t **data, const uint8_t *data_end)
    101102{
    102103        if (*data + 4 > data_end) {
     
    111112}
    112113
    113 inline uint64_t read_uint64(const uint8_t **data, const uint8_t *data_end)
     114static inline uint64_t read_uint64(const uint8_t **data, const uint8_t *data_end)
    114115{
    115116        if (*data + 8 > data_end) {
     
    124125}
    125126
    126 inline uint64_t read_uint(const uint8_t **data, const uint8_t *data_end, unsigned bytes)
     127static inline uint64_t read_uint(const uint8_t **data, const uint8_t *data_end, unsigned bytes)
    127128{
    128129        switch (bytes) {
     
    140141}
    141142
    142 inline uint64_t read_uleb128(const uint8_t **data, const uint8_t *data_end)
     143static inline uint64_t read_uleb128(const uint8_t **data, const uint8_t *data_end)
    143144{
    144145        uint64_t result = 0;
     
    157158}
    158159
    159 inline int64_t read_sleb128(const uint8_t **data, const uint8_t *data_end)
     160static inline int64_t read_sleb128(const uint8_t **data, const uint8_t *data_end)
    160161{
    161162        uint64_t result = 0;
     
    179180}
    180181
    181 inline void skip_leb128(const uint8_t **data, const uint8_t *data_end)
     182static inline void skip_leb128(const uint8_t **data, const uint8_t *data_end)
    182183{
    183184        while (*data < data_end) {
     
    188189}
    189190
    190 inline uint64_t read_initial_length(const uint8_t **data, const uint8_t *data_end, unsigned *width)
     191static inline uint64_t read_initial_length(const uint8_t **data, const uint8_t *data_end, unsigned *width)
    191192{
    192193        uint32_t initial = read_uint32(data, data_end);
     
    200201}
    201202
    202 inline const char *read_string(const uint8_t **data, const uint8_t *data_end)
     203static inline const char *read_string(const uint8_t **data, const uint8_t *data_end)
    203204{
    204205        const char *start = (const char *) *data;
     
    218219}
    219220
    220 inline void skip_string(const uint8_t **data, const uint8_t *data_end)
     221static inline void skip_string(const uint8_t **data, const uint8_t *data_end)
    221222{
    222223        (void) read_string(data, data_end);
    223224}
    224225
    225 inline void safe_increment(const uint8_t **data,
     226static inline void safe_increment(const uint8_t **data,
    226227    const uint8_t *data_end, ptrdiff_t increment)
    227228{
     
    235236}
    236237
    237 inline void skip_format(const uint8_t **data, const uint8_t *const data_end,
     238static inline void skip_format(const uint8_t **data, const uint8_t *const data_end,
    238239    unsigned count)
    239240{
     
    244245}
    245246
    246 inline void skip_formatted_entry(const uint8_t **data, const uint8_t *const data_end,
     247static inline void skip_formatted_entry(const uint8_t **data, const uint8_t *const data_end,
    247248    const uint8_t *format, const uint8_t *format_end, unsigned width)
    248249{
     
    256257}
    257258
    258 inline void skip_formatted_list(const uint8_t **data, const uint8_t *const data_end,
     259static inline void skip_formatted_list(const uint8_t **data, const uint8_t *const data_end,
    259260    unsigned count,     const uint8_t *format, const uint8_t *format_end,
    260261    unsigned width)
Note: See TracChangeset for help on using the changeset viewer.