diff --git a/librz/asm/arch/hexagon/hexagon_arch.h b/librz/asm/arch/hexagon/hexagon_arch.h index 2665d151b61..f1fb6d93889 100644 --- a/librz/asm/arch/hexagon/hexagon_arch.h +++ b/librz/asm/arch/hexagon/hexagon_arch.h @@ -43,31 +43,18 @@ typedef struct { #define HEX_PKT_UNK "? " #define HEX_PKT_SINGLE "[ " #define HEX_PKT_SINGLE_UTF8 "[ " -#if __WINDOWS__ -// regex matching doesn't work on Windows with UTF-8 characters -#define HEX_PKT_FIRST_UTF8 "/ " -#define HEX_PKT_MID_UTF8 "| " -#define HEX_PKT_LAST_UTF8 "\\ " -#else #define HEX_PKT_FIRST_UTF8 "┌ " #define HEX_PKT_MID_UTF8 "│ " #define HEX_PKT_LAST_UTF8 "└ " -#endif #define HEX_PKT_FIRST_SDK "{ " #define HEX_PKT_SDK_PADDING " " #define HEX_PKT_LAST_SDK " }" #define HEX_PKT_FIRST "/ " #define HEX_PKT_MID "| " #define HEX_PKT_LAST "\\ " -#if __WINDOWS__ -#define HEX_PKT_ELOOP_01_UTF8 " < endloop01" -#define HEX_PKT_ELOOP_1_UTF8 " < endloop1" -#define HEX_PKT_ELOOP_0_UTF8 " < endloop0" -#else #define HEX_PKT_ELOOP_01_UTF8 " ∎ endloop01" #define HEX_PKT_ELOOP_1_UTF8 " ∎ endloop1" #define HEX_PKT_ELOOP_0_UTF8 " ∎ endloop0" -#endif #define HEX_PKT_ELOOP_01 " < endloop01" #define HEX_PKT_ELOOP_1 " < endloop1" #define HEX_PKT_ELOOP_0 " < endloop0" diff --git a/librz/asm/p/asm_hexagon.c b/librz/asm/p/asm_hexagon.c index f9f0ceb19f8..cf6e8ef6617 100644 --- a/librz/asm/p/asm_hexagon.c +++ b/librz/asm/p/asm_hexagon.c @@ -30,27 +30,15 @@ static RZ_OWN RzPVector /* RzAsmTokenPattern */ *get_token_patterns() { RzAsmTokenPattern *pat = RZ_NEW0(RzAsmTokenPattern); pat->type = RZ_ASM_TOKEN_META; pat->pattern = strdup( -#if __WINDOWS__ - // regex matching doesn't work on Windows with UTF-8 characters - "(^[\\[\\?\\/\\|\\\\\\{])|" - "[<\\}][ :](endloop[01]{1,2})" -#else "(^[\\[\\?\\/\\|\\\\\\{])|(┌)|(│)|(└)|" // Packet prefix "((∎)|[<\\}])([ :])(endloop[01]{1,2})" // Endloop markers -#endif - ); - rz_pvector_push(pvec, pat); - - pat = RZ_NEW0(RzAsmTokenPattern); - pat->type = RZ_ASM_TOKEN_META; - pat->pattern = strdup( - "(#{1,2})|(\\}$)" // Immediate prefix, Closing packet bracket ); rz_pvector_push(pvec, pat); pat = RZ_NEW0(RzAsmTokenPattern); pat->type = RZ_ASM_TOKEN_META; pat->pattern = strdup( + "(#{1,2})|(\\}$)|" // Immediate prefix, Closing packet bracket "\\.new|:n?t|:raw|" // .new and jump hints ); rz_pvector_push(pvec, pat); diff --git a/test/unit/test_tokens.c b/test/unit/test_tokens.c index ca78c8555cf..02950d1d4a0 100644 --- a/test/unit/test_tokens.c +++ b/test/unit/test_tokens.c @@ -538,22 +538,18 @@ static bool test_rz_colorize_custom_hexagon_2(void) { RzStrBuf *colored_asm; RzStrBuf *expected; char err_msg[2048]; + // ? memd(R0++#0x8) = R19:18 + // ┌ R7:6 = valignb(R13:12,R11:10,P2) + // │ P0 = cmp.gtu(R4,##0x1) + // │ R11:10 = memd(R1++#0x8) // └ memd(R0++#0x8) = R7:6 ∎ endloop0 ut8 buf[] = "\x08\xd2\xc0\xab\x46\x8c\x0a\xc2\x20\x40\x84\x75\x2a\x40\xc1\x9b\x08\xc6\xc0\xab"; const char *expected_str[] = { -#if __WINDOWS__ - "\x1b[90m[\x1b[0m\x1b[37m \x1b[0m\x1b[37mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR0\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[36mR19:18\x1b[0m", - "\x1b[90m/\x1b[0m\x1b[37m \x1b[0m\x1b[36mR7:6\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mvalignb\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR13:12\x1b[0m\x1b[37m,\x1b[0m\x1b[36mR11:10\x1b[0m\x1b[37m,\x1b[0m\x1b[36mP2\x1b[0m\x1b[37m)\x1b[0m", - "\x1b[90m|\x1b[0m\x1b[37m \x1b[0m\x1b[36mP0\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mcmp\x1b[0m\x1b[37m.\x1b[0m\x1b[37mgtu\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR4\x1b[0m\x1b[37m,\x1b[0m\x1b[90m##\x1b[0m\x1b[33m0x1\x1b[0m\x1b[37m)\x1b[0m", - "\x1b[90m|\x1b[0m\x1b[37m \x1b[0m\x1b[36mR11:10\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR1\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m", - "\x1b[90m\\\x1b[0m\x1b[37m \x1b[0m\x1b[32mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR0\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[36mR7:6\x1b[0m\x1b[37m \x1b[0m\x1b[90m< endloop0\x1b[0m" -#else "\x1b[90m[\x1b[0m\x1b[37m \x1b[0m\x1b[37mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR0\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[36mR19:18\x1b[0m", "\x1b[90m┌\x1b[0m\x1b[37m \x1b[0m\x1b[36mR7:6\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mvalignb\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR13:12\x1b[0m\x1b[37m,\x1b[0m\x1b[36mR11:10\x1b[0m\x1b[37m,\x1b[0m\x1b[36mP2\x1b[0m\x1b[37m)\x1b[0m", "\x1b[90m│\x1b[0m\x1b[37m \x1b[0m\x1b[36mP0\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mcmp\x1b[0m\x1b[37m.\x1b[0m\x1b[37mgtu\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR4\x1b[0m\x1b[37m,\x1b[0m\x1b[90m##\x1b[0m\x1b[33m0x1\x1b[0m\x1b[37m)\x1b[0m", "\x1b[90m│\x1b[0m\x1b[37m \x1b[0m\x1b[36mR11:10\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[37mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR1\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m", "\x1b[90m└\x1b[0m\x1b[37m \x1b[0m\x1b[32mmemd\x1b[0m\x1b[37m(\x1b[0m\x1b[36mR0\x1b[0m\x1b[37m+\x1b[0m\x1b[37m+\x1b[0m\x1b[90m#\x1b[0m\x1b[33m0x8\x1b[0m\x1b[37m)\x1b[0m\x1b[37m \x1b[0m\x1b[37m=\x1b[0m\x1b[37m \x1b[0m\x1b[36mR7:6\x1b[0m\x1b[37m \x1b[0m\x1b[90m∎ endloop0\x1b[0m" -#endif }; for (int i = 0; i < 0x14; i += 4) {