Serene Runtime
1.0.0-dev
C runtime for the Serene programming language
Loading...
Searching...
No Matches
srn_dbg_sym.h
Go to the documentation of this file.
1
/* -*- C -*-
2
* Serene programming language
3
* Copyright (C) 2019-2026 Sameer Rahmani <lxsameer@lxsameer.com>
4
*
5
* This library is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU Lesser General Public License as published by
7
* the Free Software Foundation, either version 3 of the License, or
8
* (at your option) any later version.
9
*
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU Lesser General Public License for more details.
14
*
15
* You should have received a copy of the GNU Lesser General Public License
16
* along with this library. If not, see <https://www.gnu.org/licenses/>.
17
*/
18
19
/** @file
20
21
Portable symbol resolution for error trace printing.
22
23
Given a return address captured by `__builtin_return_address(0)`,
24
`srn_dbg_sym_name` writes the nearest symbol name into a caller-supplied buffer.
25
On POSIX it uses `dladdr`; on Windows it uses `SymFromAddr` from DbgHelp.
26
27
Resolution is best-effort: when the binary is stripped or the platform has
28
no debug info, the buffer is left empty and the function returns null. Raw
29
addresses are still useful; the caller can pass them to `llvm-symbolizer`
30
offline.
31
*/
32
33
#pragma once
34
35
#include <stddef.h>
36
37
#if (defined(_WIN32)) && !defined(__CYGWIN__)
38
# define SRN_DBG_SYM_WIN32 1
39
#else
40
# define SRN_DBG_SYM_WIN32 0
41
#endif
42
43
/**
44
* Resolve `addr` to a symbol name and write it into `buf` (null-terminated,
45
* at most `buflen` bytes including the terminator). Returns `buf` on success,
46
* `nullptr` when resolution fails or `buflen` is zero.
47
*/
48
extern
const
char
*
srn_dbg_sym_name
(
void
*addr,
char
*buf,
size_t
buflen);
srn_dbg_sym_name
const char * srn_dbg_sym_name(void *addr, char *buf, size_t buflen)
Resolve addr to a symbol name and write it into buf (null-terminated, at most buflen bytes including ...
Definition
srn_dbg_sym.c:26
serene
utils
srn_dbg_sym.h
Serene Runtime is free software, licensed under the
GNU LGPL v3
License.