Rizin
unix-like reverse engineering framework and cli tools
internal.h
Go to the documentation of this file.
1 /* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to
5  * deal in the Software without restriction, including without limitation the
6  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7  * sell copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19  * IN THE SOFTWARE.
20  */
21 
22 #ifndef UV_WIN_INTERNAL_H_
23 #define UV_WIN_INTERNAL_H_
24 
25 #include "uv.h"
26 #include "../uv-common.h"
27 
28 #include "uv/tree.h"
29 #include "winapi.h"
30 #include "winsock.h"
31 
32 #ifdef _MSC_VER
33 # define INLINE __inline
34 # define UV_THREAD_LOCAL __declspec( thread )
35 #else
36 # define INLINE inline
37 # define UV_THREAD_LOCAL __thread
38 #endif
39 
40 
41 #ifdef _DEBUG
42 
44 
45 #define UV_BEGIN_DISABLE_CRT_ASSERT() \
46  { \
47  int uv__saved_crt_assert_enabled = uv__crt_assert_enabled; \
48  uv__crt_assert_enabled = FALSE;
49 
50 
51 #define UV_END_DISABLE_CRT_ASSERT() \
52  uv__crt_assert_enabled = uv__saved_crt_assert_enabled; \
53  }
54 
55 #else
56 #define UV_BEGIN_DISABLE_CRT_ASSERT()
57 #define UV_END_DISABLE_CRT_ASSERT()
58 #endif
59 
60 /*
61  * TCP
62  */
63 
64 typedef enum {
69 
70 typedef struct {
71  WSAPROTOCOL_INFOW socket_info;
74 
75 int uv_tcp_listen(uv_tcp_t* handle, int backlog, uv_connection_cb cb);
76 int uv_tcp_accept(uv_tcp_t* server, uv_tcp_t* client);
78  uv_read_cb read_cb);
80  const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb);
82  unsigned int nbufs);
83 
86  uv_write_t* req);
88  uv_req_t* req);
90  uv_connect_t* req);
91 
92 void uv_tcp_close(uv_loop_t* loop, uv_tcp_t* tcp);
94 
96  int pid,
97  uv__ipc_socket_xfer_type_t* xfer_type,
98  uv__ipc_socket_xfer_info_t* xfer_info);
100  uv__ipc_socket_xfer_type_t xfer_type,
101  uv__ipc_socket_xfer_info_t* xfer_info);
102 
103 
104 /*
105  * UDP
106  */
109  uv_udp_send_t* req);
110 
113 
114 
115 /*
116  * Pipes
117  */
119  char* name, size_t nameSize);
120 
122 int uv_pipe_accept(uv_pipe_t* server, uv_stream_t* client);
124  uv_read_cb read_cb);
127  uv_write_t* req,
128  uv_pipe_t* handle,
129  const uv_buf_t bufs[],
130  size_t nbufs,
131  uv_stream_t* send_handle,
132  uv_write_cb cb);
133 
135  uv_req_t* req);
137  uv_write_t* req);
139  uv_req_t* raw_req);
141  uv_connect_t* req);
143  uv_shutdown_t* req);
144 
148 
149 
150 /*
151  * TTY
152  */
153 void uv_console_init(void);
154 
156  uv_read_cb read_cb);
159  const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb);
161  unsigned int nbufs);
163 
165  uv_req_t* req);
167  uv_write_t* req);
168 /*
169  * uv_process_tty_accept_req() is a stub to keep DELEGATE_STREAM_REQ working
170  * TODO: find a way to remove it
171  */
173  uv_req_t* raw_req);
174 /*
175  * uv_process_tty_connect_req() is a stub to keep DELEGATE_STREAM_REQ working
176  * TODO: find a way to remove it
177  */
179  uv_connect_t* req);
180 
182 
183 
184 /*
185  * Poll watchers
186  */
188  uv_req_t* req);
189 
192 
193 
194 /*
195  * Loop watchers
196  */
198 
202 
203 void uv__once_init(void);
204 
205 
206 /*
207  * Async watcher
208  */
211 
213  uv_req_t* req);
214 
215 
216 /*
217  * Signal watcher
218  */
219 void uv_signals_init(void);
220 int uv__signal_dispatch(int signum);
221 
224 
226  uv_req_t* req);
227 
228 
229 /*
230  * Spawn
231  */
235 
236 
237 /*
238  * Error
239  */
240 int uv_translate_sys_error(int sys_errno);
241 
242 
243 /*
244  * FS
245  */
246 void uv_fs_init(void);
247 
248 
249 /*
250  * FS Event
251  */
256 
257 
258 /*
259  * Stat poller.
260  */
262 
263 
264 /*
265  * Utilities.
266  */
267 void uv__util_init(void);
268 
269 uint64_t uv__hrtime(unsigned int scale);
270 __declspec(noreturn) void uv_fatal_error(const int errorno, const char* syscall);
271 int uv__getpwuid_r(uv_passwd_t* pwd);
272 int uv__convert_utf16_to_utf8(const WCHAR* utf16, int utf16len, char** utf8);
273 int uv__convert_utf8_to_utf16(const char* utf8, int utf8len, WCHAR** utf16);
274 
275 typedef int (WINAPI *uv__peersockfunc)(SOCKET, struct sockaddr*, int*);
276 
278  uv__peersockfunc func,
279  struct sockaddr* name,
280  int* namelen,
281  int delayed_error);
282 
283 int uv__random_rtlgenrandom(void* buf, size_t buflen);
284 
285 
286 /*
287  * Process stdio handles.
288  */
291  BYTE** buffer_ptr);
294 int uv__stdio_verify(BYTE* buffer, WORD size);
295 WORD uv__stdio_size(BYTE* buffer);
297 
298 
299 /*
300  * Winapi and ntapi utility functions
301  */
302 void uv_winapi_init(void);
303 
304 
305 /*
306  * Winsock utility functions
307  */
308 void uv_winsock_init(void);
309 
311 
312 BOOL uv_get_acceptex_function(SOCKET socket, LPFN_ACCEPTEX* target);
313 BOOL uv_get_connectex_function(SOCKET socket, LPFN_CONNECTEX* target);
314 
315 int WSAAPI uv_wsarecv_workaround(SOCKET socket, WSABUF* buffers,
316  DWORD buffer_count, DWORD* bytes, DWORD* flags, WSAOVERLAPPED *overlapped,
317  LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine);
318 int WSAAPI uv_wsarecvfrom_workaround(SOCKET socket, WSABUF* buffers,
319  DWORD buffer_count, DWORD* bytes, DWORD* flags, struct sockaddr* addr,
320  int* addr_len, WSAOVERLAPPED *overlapped,
321  LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine);
322 
323 int WSAAPI uv_msafd_poll(SOCKET socket, AFD_POLL_INFO* info_in,
324  AFD_POLL_INFO* info_out, OVERLAPPED* overlapped);
325 
326 /* Whether there are any non-IFS LSPs stacked on TCP */
327 extern int uv_tcp_non_ifs_lsp_ipv4;
328 extern int uv_tcp_non_ifs_lsp_ipv6;
329 
330 /* Ip address used to bind to any port at any interface */
331 extern struct sockaddr_in uv_addr_ip4_any_;
332 extern struct sockaddr_in6 uv_addr_ip6_any_;
333 
334 /*
335  * Wake all loops with fake message
336  */
337 void uv__wake_all_loops(void);
338 
339 /*
340  * Init system wake-up detection
341  */
343 
344 #endif /* UV_WIN_INTERNAL_H_ */
static ut8 bytes[32]
Definition: asm_arc.c:23
static mcore_handle handle
Definition: asm_mcore.c:8
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec req
Definition: sflib.h:128
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd socket
Definition: sflib.h:79
void uv_fatal_error(const int errorno, const char *syscall)
Definition: error.c:35
voidpf void uLong size
Definition: ioapi.h:138
voidpf void * buf
Definition: ioapi.h:138
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc pid
Definition: sflib.h:64
static static fork const void static count static fd const char static mode const char static pathname const char static path const char static dev const char static group static getpid static getuid void void static data static pause access
Definition: sflib.h:64
static const char struct stat static buf struct stat static buf static vhangup int options
Definition: sflib.h:145
static const char struct stat static buf struct stat static buf static vhangup int status
Definition: sflib.h:145
static static fork const void static count static fd const char static mode const char static pathname const char static path const char static dev const char static group static getpid static getuid void void static data static pause const char static mode static sync const char const char static newpath const char static pathname unsigned long static filedes void static end_data_segment signum
Definition: sflib.h:79
unsigned char BYTE
Definition: lz4.c:286
static struct sockaddr static addrlen static backlog const void static flags void flags
Definition: sfsocketcall.h:123
static int
Definition: sfsocketcall.h:114
unsigned int uint32_t
Definition: sftypes.h:29
unsigned long uint64_t
Definition: sftypes.h:28
Definition: buffer.h:15
Definition: z80asm.h:102
WSAPROTOCOL_INFOW socket_info
Definition: internal.h:71
Definition: uv.h:844
Definition: unix.h:123
Definition: uv.h:1780
Definition: uv.h:767
Definition: uv.h:793
Definition: uv.h:407
Definition: uv.h:547
Definition: uv.h:714
Definition: uv.h:638
Definition: uv.h:525
uv_loop_t * loop
Definition: main.c:7
int uv_pipe_listen(uv_pipe_t *handle, int backlog, uv_connection_cb cb)
Definition: pipe.c:94
uint64_t uv__hrtime(uv_clocktype_t type)
Definition: aix-common.c:43
int uv__getsockpeername(const uv_handle_t *handle, uv__peersockfunc func, struct sockaddr *name, int *namelen)
Definition: core.c:1490
int uv_tcp_listen(uv_tcp_t *tcp, int backlog, uv_connection_cb cb)
Definition: tcp.c:328
int uv__getpwuid_r(uv_passwd_t *pwd)
Definition: core.c:1146
int(* uv__peersockfunc)(int, struct sockaddr *, socklen_t *)
Definition: internal.h:321
UV_THREAD_LOCAL int uv__crt_assert_enabled
Definition: core.c:69
void uv_fs_event_endgame(uv_loop_t *loop, uv_fs_event_t *handle)
Definition: fs-event.c:597
__declspec(noreturn) void uv_fatal_error(const int errorno
void uv_pipe_close(uv_loop_t *loop, uv_pipe_t *handle)
Definition: pipe.c:818
void uv_tcp_endgame(uv_loop_t *loop, uv_tcp_t *handle)
Definition: tcp.c:208
int uv__tcp_xfer_import(uv_tcp_t *tcp, uv__ipc_socket_xfer_type_t xfer_type, uv__ipc_socket_xfer_info_t *xfer_info)
Definition: tcp.c:1277
struct sockaddr_in uv_addr_ip4_any_
Definition: winsock.c:34
void uv_process_close(uv_loop_t *loop, uv_process_t *handle)
Definition: process.c:903
void uv_poll_endgame(uv_loop_t *loop, uv_poll_t *handle)
Definition: poll.c:576
void uv_signal_close(uv_loop_t *loop, uv_signal_t *handle)
Definition: signal.c:262
const char * syscall
Definition: internal.h:270
void uv__stdio_noinherit(BYTE *buffer)
int uv_stdio_pipe_server(uv_loop_t *loop, uv_pipe_t *handle, DWORD access, char *name, size_t nameSize)
Definition: pipe.c:205
int uv__pipe_write(uv_loop_t *loop, uv_write_t *req, uv_pipe_t *handle, const uv_buf_t bufs[], size_t nbufs, uv_stream_t *send_handle, uv_write_cb cb)
Definition: pipe.c:1578
void uv_loop_watcher_endgame(uv_loop_t *loop, uv_handle_t *handle)
Definition: loop-watcher.c:29
void uv_pipe_endgame(uv_loop_t *loop, uv_pipe_t *handle)
Definition: pipe.c:382
int WSAAPI uv_wsarecv_workaround(SOCKET socket, WSABUF *buffers, DWORD buffer_count, DWORD *bytes, DWORD *flags, WSAOVERLAPPED *overlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine)
Definition: winsock.c:270
void uv__stdio_destroy(BYTE *buffer)
void uv__once_init(void)
Definition: core.c:329
int uv_tty_write(uv_loop_t *loop, uv_write_t *req, uv_tty_t *handle, const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb)
Definition: tty.c:2182
void uv__pipe_read_stop(uv_pipe_t *handle)
Definition: pipe.c:775
int uv__tcp_try_write(uv_tcp_t *handle, const uv_buf_t bufs[], unsigned int nbufs)
Definition: tcp.c:968
uv__ipc_socket_xfer_type_t
Definition: internal.h:64
@ UV__IPC_SOCKET_XFER_NONE
Definition: internal.h:65
@ UV__IPC_SOCKET_XFER_TCP_CONNECTION
Definition: internal.h:66
@ UV__IPC_SOCKET_XFER_TCP_SERVER
Definition: internal.h:67
void uv_signal_endgame(uv_loop_t *loop, uv_signal_t *handle)
Definition: signal.c:272
void uv_process_poll_req(uv_loop_t *loop, uv_poll_t *handle, uv_req_t *req)
Definition: poll.c:526
int uv__convert_utf16_to_utf8(const WCHAR *utf16, int utf16len, char **utf8)
Definition: util.c:1280
int uv_tty_read_stop(uv_tty_t *handle)
Definition: tty.c:1054
void uv_process_async_wakeup_req(uv_loop_t *loop, uv_async_t *handle, uv_req_t *req)
Definition: async.c:86
void uv__util_init(void)
Definition: util.c:79
void uv_process_pipe_read_req(uv_loop_t *loop, uv_pipe_t *handle, uv_req_t *req)
Definition: pipe.c:1789
void uv__fs_poll_endgame(uv_loop_t *loop, uv_fs_poll_t *handle)
void uv_process_pipe_write_req(uv_loop_t *loop, uv_pipe_t *handle, uv_write_t *req)
Definition: pipe.c:1856
void uv_process_pipe_shutdown_req(uv_loop_t *loop, uv_pipe_t *handle, uv_shutdown_t *req)
Definition: pipe.c:1967
void uv_tty_endgame(uv_loop_t *loop, uv_tty_t *handle)
Definition: tty.c:2270
BOOL uv_get_connectex_function(SOCKET socket, LPFN_CONNECTEX *target)
Definition: winsock.c:71
int uv__signal_dispatch(int signum)
Definition: signal.c:80
int WSAAPI uv_msafd_poll(SOCKET socket, AFD_POLL_INFO *info_in, AFD_POLL_INFO *info_out, OVERLAPPED *overlapped)
Definition: winsock.c:461
void uv_process_tty_write_req(uv_loop_t *loop, uv_tty_t *handle, uv_write_t *req)
Definition: tty.c:2227
WORD uv__stdio_size(BYTE *buffer)
int WSAAPI uv_wsarecvfrom_workaround(SOCKET socket, WSABUF *buffers, DWORD buffer_count, DWORD *bytes, DWORD *flags, struct sockaddr *addr, int *addr_len, WSAOVERLAPPED *overlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE completion_routine)
Definition: winsock.c:364
void uv_process_tty_connect_req(uv_loop_t *loop, uv_tty_t *handle, uv_connect_t *req)
Definition: tty.c:2318
void uv_process_tcp_connect_req(uv_loop_t *loop, uv_tcp_t *handle, uv_connect_t *req)
Definition: tcp.c:1209
int uv_tcp_non_ifs_lsp_ipv4
Definition: winsock.c:30
int uv__stdio_create(uv_loop_t *loop, const uv_process_options_t *options, BYTE **buffer_ptr)
void uv_tcp_close(uv_loop_t *loop, uv_tcp_t *tcp)
Definition: tcp.c:1426
int uv_poll_close(uv_loop_t *loop, uv_poll_t *handle)
Definition: poll.c:535
void uv_process_tty_accept_req(uv_loop_t *loop, uv_tty_t *handle, uv_req_t *raw_req)
Definition: tty.c:2308
void uv_udp_close(uv_loop_t *loop, uv_udp_t *handle)
Definition: udp.c:170
int uv_tcp_read_start(uv_tcp_t *handle, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
Definition: tcp.c:726
int uv__tty_try_write(uv_tty_t *handle, const uv_buf_t bufs[], unsigned int nbufs)
Definition: tty.c:2212
void uv_process_endgame(uv_loop_t *loop, uv_process_t *handle)
Definition: process.c:924
void uv_winapi_init(void)
Definition: winapi.c:49
void uv__init_detect_system_wakeup(void)
Definition: detect-wakeup.c:28
void uv_prepare_invoke(uv_loop_t *loop)
void uv_process_udp_recv_req(uv_loop_t *loop, uv_udp_t *handle, uv_req_t *req)
Definition: udp.c:453
int uv_pipe_read_start(uv_pipe_t *handle, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
Definition: pipe.c:1177
int uv_tcp_non_ifs_lsp_ipv6
Definition: winsock.c:31
void uv_process_proc_exit(uv_loop_t *loop, uv_process_t *handle)
Definition: process.c:865
void uv_process_tcp_write_req(uv_loop_t *loop, uv_tcp_t *handle, uv_write_t *req)
Definition: tcp.c:1120
int uv_tcp_accept(uv_tcp_t *server, uv_tcp_t *client)
Definition: tcp.c:657
int uv_pipe_accept(uv_pipe_t *server, uv_stream_t *client)
Definition: pipe.c:876
void uv_udp_endgame(uv_loop_t *loop, uv_udp_t *handle)
Definition: udp.c:183
void uv_check_invoke(uv_loop_t *loop)
BOOL uv_get_acceptex_function(SOCKET socket, LPFN_ACCEPTEX *target)
Definition: winsock.c:65
void uv_tty_close(uv_tty_t *handle)
Definition: tty.c:2249
void uv_process_pipe_accept_req(uv_loop_t *loop, uv_pipe_t *handle, uv_req_t *raw_req)
Definition: pipe.c:1910
void uv_process_udp_send_req(uv_loop_t *loop, uv_udp_t *handle, uv_udp_send_t *req)
Definition: udp.c:564
void uv_winsock_init(void)
Definition: winsock.c:78
void uv_process_signal_req(uv_loop_t *loop, uv_signal_t *handle, uv_req_t *req)
Definition: signal.c:234
int uv__convert_utf8_to_utf16(const char *utf8, int utf8len, WCHAR **utf16)
Definition: util.c:1335
struct sockaddr_in6 uv_addr_ip6_any_
Definition: winsock.c:35
int uv__tcp_xfer_export(uv_tcp_t *handle, int pid, uv__ipc_socket_xfer_type_t *xfer_type, uv__ipc_socket_xfer_info_t *xfer_info)
Definition: tcp.c:1242
void uv_async_close(uv_loop_t *loop, uv_async_t *handle)
Definition: async.c:57
int uv_tcp_write(uv_loop_t *loop, uv_write_t *req, uv_tcp_t *handle, const uv_buf_t bufs[], unsigned int nbufs, uv_write_cb cb)
Definition: tcp.c:901
int uv_tty_read_start(uv_tty_t *handle, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
Definition: tty.c:1018
int uv_translate_sys_error(int sys_errno)
Definition: core.c:1249
int uv_ntstatus_to_winsock_error(NTSTATUS status)
Definition: winsock.c:137
int uv__stdio_verify(BYTE *buffer, WORD size)
void uv__wake_all_loops(void)
Definition: core.c:162
void uv_process_tcp_read_req(uv_loop_t *loop, uv_tcp_t *handle, uv_req_t *req)
Definition: tcp.c:992
int uv__random_rtlgenrandom(void *buf, size_t buflen)
Definition: util.c:1965
void uv_console_init(void)
Definition: tty.c:166
void uv_signals_init(void)
Definition: signal.c:42
HANDLE uv__stdio_handle(BYTE *buffer, int fd)
void uv_pipe_cleanup(uv_loop_t *loop, uv_pipe_t *handle)
Definition: pipe.c:785
void uv_process_fs_event_req(uv_loop_t *loop, uv_req_t *req, uv_fs_event_t *handle)
Definition: fs-event.c:426
void uv_fs_event_close(uv_loop_t *loop, uv_fs_event_t *handle)
Definition: fs-event.c:585
void uv_process_pipe_connect_req(uv_loop_t *loop, uv_pipe_t *handle, uv_connect_t *req)
Definition: pipe.c:1945
#define UV_THREAD_LOCAL
Definition: internal.h:37
void uv_async_endgame(uv_loop_t *loop, uv_async_t *handle)
Definition: async.c:31
void uv_idle_invoke(uv_loop_t *loop)
void uv_fs_init(void)
Definition: fs.c:141
void uv_process_tcp_accept_req(uv_loop_t *loop, uv_tcp_t *handle, uv_req_t *req)
Definition: tcp.c:1161
void uv_process_tty_read_req(uv_loop_t *loop, uv_tty_t *handle, uv_req_t *req)
Definition: tty.c:1002
ut64 buflen
Definition: core.c:76
static char bufs[4][128]
Buffers for uint64_to_str() and uint64_to_nicestr()
Definition: util.c:18
void(* uv_write_cb)(uv_write_t *req, int status)
Definition: uv.h:315
void(* uv_connection_cb)(uv_stream_t *server, int status)
Definition: uv.h:318
void(* uv_read_cb)(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf)
Definition: uv.h:312
void(* uv_alloc_cb)(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
Definition: uv.h:309
LONG NTSTATUS
Definition: win.h:198
BOOL(PASCAL * LPFN_ACCEPTEX)(SOCKET sListenSocket, SOCKET sAcceptSocket, PVOID lpOutputBuffer, DWORD dwReceiveDataLength, DWORD dwLocalAddressLength, DWORD dwRemoteAddressLength, LPDWORD lpdwBytesReceived, LPOVERLAPPED lpOverlapped)
Definition: win.h:130
BOOL(PASCAL * LPFN_CONNECTEX)(SOCKET s, const struct sockaddr *name, int namelen, PVOID lpSendBuffer, DWORD dwSendDataLength, LPDWORD lpdwBytesSent, LPOVERLAPPED lpOverlapped)
Definition: win.h:140
DWORD * HANDLE
DWORD
static const z80_opcode fd[]
Definition: z80_tab.h:997
static const char * cb[]
Definition: z80_tab.h:176
static int addr
Definition: z80asm.c:58