Rizin
unix-like reverse engineering framework and cli tools
labels.c
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2014-2020 pancake <pancake@nopcode.org>
2 // SPDX-FileCopyrightText: 2014-2020 thestr4ng3r <info@florianmaerkl.de>
3 // SPDX-License-Identifier: LGPL-3.0-only
4 
5 #include <rz_analysis.h>
6 
8 
11  ut64 *addr = ht_pp_find(fcn->label_addrs, name, NULL);
12  return addr ? *addr : UT64_MAX;
13 }
14 
17  return ht_up_find(fcn->labels, addr, NULL);
18 }
19 
21  rz_return_val_if_fail(fcn && name, false);
22  if (ht_pp_find(fcn->label_addrs, name, NULL)) {
23  return false;
24  }
25  char *n = strdup(name);
26  if (!ht_up_insert(fcn->labels, addr, n)) {
27  free(n);
28  return false;
29  }
30  ht_pp_insert(fcn->label_addrs, name, ut64_new(addr));
31  return true;
32 }
33 
35  rz_return_val_if_fail(fcn && name, false);
36  ut64 *addr = ht_pp_find(fcn->label_addrs, name, NULL);
37  if (!addr) {
38  return false;
39  }
40  ht_up_delete(fcn->labels, *addr);
41  ht_pp_delete(fcn->label_addrs, name);
42  return true;
43 }
44 
46  rz_return_val_if_fail(fcn, false);
47  char *name = ht_up_find(fcn->labels, addr, NULL);
48  if (!name) {
49  return false;
50  }
51  ht_pp_delete(fcn->label_addrs, name);
52  ht_up_delete(fcn->labels, addr);
53  return true;
54 }
#define RZ_API
#define NULL
Definition: cris-opc.c:27
RZ_API void Ht_() free(HtName_(Ht) *ht)
Definition: ht_inc.c:130
HEAPTYPE(ut64)
RZ_API bool rz_analysis_function_delete_label(RzAnalysisFunction *fcn, const char *name)
Definition: labels.c:34
RZ_API const char * rz_analysis_function_get_label_at(RzAnalysisFunction *fcn, ut64 addr)
Definition: labels.c:15
RZ_API ut64 rz_analysis_function_get_label(RzAnalysisFunction *fcn, const char *name)
Definition: labels.c:9
RZ_API bool rz_analysis_function_delete_label_at(RzAnalysisFunction *fcn, ut64 addr)
Definition: labels.c:45
RZ_API bool rz_analysis_function_set_label(RzAnalysisFunction *fcn, const char *name, ut64 addr)
Definition: labels.c:20
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
int n
Definition: mipsasm.c:19
#define rz_return_val_if_fail(expr, val)
Definition: rz_assert.h:108
#define UT64_MAX
Definition: rz_types_base.h:86
Definition: z80asm.h:102
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static int addr
Definition: z80asm.c:58