MCPcopy Create free account
hub / github.com/boostorg/stacktrace / parse_proc_maps_line

Function parse_proc_maps_line

include/boost/stacktrace/detail/addr_base.hpp:51–74  ·  view source on GitHub ↗

parse line from /proc/ /maps format: 7fb60d1ea000-7fb60d20c000 r--p 00000000 103:02 120327460 /usr/lib/libc.so.6 only parts 0 and 2 are interesting, these are: 0. mapping address range 2. mapping offset from base

Source from the content-addressed store, hash-verified

49// 0. mapping address range
50// 2. mapping offset from base
51inline mapping_entry_t parse_proc_maps_line(const std::string& line) {
52 std::string mapping_range_str, permissions_str, offset_from_base_str;
53 std::istringstream line_stream(line);
54 if(!std::getline(line_stream, mapping_range_str, ' ') ||
55 !std::getline(line_stream, permissions_str, ' ') ||
56 !std::getline(line_stream, offset_from_base_str, ' ')) {
57 return mapping_entry_t{};
58 }
59 std::string mapping_start_str, mapping_end_str;
60 std::istringstream mapping_range_stream(mapping_range_str);
61 if(!std::getline(mapping_range_stream, mapping_start_str, '-') ||
62 !std::getline(mapping_range_stream, mapping_end_str)) {
63 return mapping_entry_t{};
64 }
65 mapping_entry_t mapping{};
66 try {
67 mapping.start = hex_str_to_int(mapping_start_str);
68 mapping.end = hex_str_to_int(mapping_end_str);
69 mapping.offset_from_base = hex_str_to_int(offset_from_base_str);
70 return mapping;
71 } catch(std::invalid_argument& e) {
72 return mapping_entry_t{};
73 }
74}
75
76inline uintptr_t get_own_proc_addr_base(const void* addr) {
77 std::ifstream maps_file("/proc/self/maps");

Callers 1

get_own_proc_addr_baseFunction · 0.85

Calls 1

hex_str_to_intFunction · 0.85

Tested by

no test coverage detected