Serene Runtime
1.0.0-dev
C runtime for the Serene programming language
Loading...
Searching...
No Matches
srn_dbg_sym.c
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
#include "
serene/utils/srn_dbg_sym.h
"
20
21
#if !SRN_DBG_SYM_WIN32
22
23
# include <dlfcn.h>
24
# include <string.h>
25
26
const
char
*
srn_dbg_sym_name
(
void
*addr,
char
*buf,
size_t
buflen) {
27
if
(buflen == 0) {
28
return
nullptr
;
29
}
30
31
Dl_info info;
32
if
(dladdr(addr, &info) && info.dli_sname !=
nullptr
) {
33
strncpy(buf, info.dli_sname, buflen - 1);
34
buf[buflen - 1] =
'\0'
;
35
return
buf;
36
}
37
38
return
nullptr
;
39
}
40
41
#endif
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
srn_dbg_sym.h
Portable symbol resolution for error trace printing.
utils
posix
srn_dbg_sym.c
Serene Runtime is free software, licensed under the
GNU LGPL v3
License.