From patchwork Fri Jan 13 11:11:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 43172 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp208317wrt; Fri, 13 Jan 2023 03:11:18 -0800 (PST) X-Google-Smtp-Source: AMrXdXtRw7Ty+oqQn5rSnrLKdpdHA1tFolNQy17utpV1iV7tDFyYloWMefdE9fdRRGKsodxQQkZc X-Received: by 2002:a17:906:2857:b0:7c1:8f53:83a0 with SMTP id s23-20020a170906285700b007c18f5383a0mr63146344ejc.13.1673608278664; Fri, 13 Jan 2023 03:11:18 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id xc2-20020a170907074200b00780636887fesi21684301ejb.797.2023.01.13.03.11.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jan 2023 03:11:18 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=EwVYlmNK; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 42956385ED7A for ; Fri, 13 Jan 2023 11:11:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 42956385ED7A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1673608274; bh=lyS5SyEcjEYIJTKqe5xIhX73Jff/UZQYoZ1SsGsLo9g=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=EwVYlmNKAC+NGuNa/Y7Ey0fH4nj5Gcph2kz0Zxl1D0e2Fp66k/RJ0fPbdxtCriYVo rc3cKezoZdkD7lxpdk9Ylg2DSsodc4oOVoHpXoYV14WSEgj/hrj7cmtcTuKiG83s9+ e8DeSyRK5ErO4iwTAJyuyPhf33c2w0rgYcIncOx0= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2086.outbound.protection.outlook.com [40.107.22.86]) by sourceware.org (Postfix) with ESMTPS id 818AA38543B0 for ; Fri, 13 Jan 2023 11:11:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 818AA38543B0 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EYoNC5W8nx23/tKlJkMg2xYWUPvMHDaVb+T9JHJ9ab87PpGLZ9EU/ONkQfO2+jpuxkdB4hopDffGew0ZFMVNzsg15N0kxOrQfMKwzPsAvJZ+tTlcCboPGaA5r+XizA3O7APu1oTCjfLolQ0lP+tx41FH65xAF9PTHNG6hdTNLBu9vyvdpFM3c5TIdqan/2BHLRHNs5cCauMjykRk6My435rID3lARX0RJOo9/v8gfc2D1P1GfwOKC/HFB4hkrPqaGwr7odFGbrwMSVN0JhYPfWLyfaCmAjynLW7Lr7pSNnBt0OU0xJTyCZkamx9owazc/4h6AaFqZUDOQ5tCOWJJog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lyS5SyEcjEYIJTKqe5xIhX73Jff/UZQYoZ1SsGsLo9g=; b=cg//OKqlVqKykwVfRVrM4OGhisoMfai/8xzIfyPCVJtOj8GQ5BeK5eX4xt7D0+lulytOP/UUtwoy0LF2JYy2vyCuhC8CXjV1fQpBThv62oxZbxawpO+3u8k8cLqUZJ089bdbPZ2jbtqrLJoQfFSDtofq91ZGaSlogfInfJuXDRAqT20dAOPH2umCCmt2LuA47eU9PiROzksrGVI8gFd/8GkGxmElkYBL3OTi88Hpc3f8lX17im1lMlnsbQQztOSoekidbE0M5SMkFppm36cgwa3tWay+2ZLabmXmeHk6PObVLxrqLQXEVXzcZzuqaDj0/fOyU29zfV8fVM2PnqzeTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by AS8PR04MB8401.eurprd04.prod.outlook.com (2603:10a6:20b:3f3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.13; Fri, 13 Jan 2023 11:11:03 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::2991:58a4:e308:4389%7]) with mapi id 15.20.6002.012; Fri, 13 Jan 2023 11:11:03 +0000 Message-ID: <8a6f1fce-435a-b8fa-44a3-c7ae2c621968@suse.com> Date: Fri, 13 Jan 2023 12:11:01 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: [PATCH 7/8] x86: embed register and alike names in disassembler Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR0P281CA0114.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::16) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8401:EE_ X-MS-Office365-Filtering-Correlation-Id: 8318ffff-df8b-4d78-4d94-08daf556dbdd X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XbwMdty7rWcxVSUEO79hIxR4FRa9ncxc/CyoLEsR+RXzVdJPpwoC2GM5lq5wSoiJuLu/cmm8dv/IubFnm493nwaa8nhBRUwmrlFdyarNl0Nu9n6JSXuRPQQzwgYg67PcbKlmQdMmnl22ow536+iLZMFgBmQLoyVhtual6K+/+sbqkMu7nzxtHa27AmwaXQ3HeJMfogo9GmafYV0pG76V/yNyiO1OR+y81pXF8hWtgy8GYg1lKcrEqajNBnKeRSIFFG/D/qHAAxDwLyigSnDsT2JD77/oyFI601xLodd2nnzuw/uJuZ3U2cyKnlgpE/N5o13H/cXZ0duEtkVrbcjTeQs71TpiETONN1f5YTXQfAycRTUfF0NjQGNCKEmEDBPv5lj9aC2xaYGN3VNafczHn7MLAjrNuivcXAjIuCXr0P8x9k56Q1xBYBZGZaCnDrELuc4XCQc3s6CspE7fIoKubYzpYG9LmVRF96GKlBSWOwTgzZTjoSdUQO+lyaOwsKtT1sdfBmOJupi35uQrcABqh+wLlD/xcumxErOGfe0H/bLE+/Bsuh1/EDxPctvfbpbkmRsSNMigUEliFFwbMP1zBZuks21rTLdiCokggcMDx6OiE9yVrn9b+GMxEAG6zymbfz6oHdfPtsOpilGt0KsQ3J+IW+67Agv4eUfRm45GAGnd0BWizptE23VDTR5938jvpd7BP5ahDjuakbSNeUqJJZ074Dk2aTuqA+rypjchxIo= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(136003)(39860400002)(346002)(366004)(396003)(376002)(451199015)(6486002)(86362001)(36756003)(478600001)(31696002)(6506007)(2616005)(26005)(38100700002)(6512007)(186003)(83380400001)(316002)(66946007)(66476007)(66556008)(8676002)(31686004)(6916009)(4326008)(5660300002)(2906002)(8936002)(41300700001)(45980500001)(43740500002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?eVB3G9LP2KWuJYCLumK3wo0xXdzn?= =?utf-8?q?3FZ3JaDCMnFntYvqktdmRnv1ldUVp+631YYJ2pAL8fWenmcwS8CU17xElhHyZRS+U?= =?utf-8?q?xUAOWiORDD2cg2dkMz0nazvOZtNxHfAAXVKqr8W/lgua57X3rf6L8L9nvEz4Df1SU?= =?utf-8?q?Gt5FR6Gm3ejfzWmF5UflSUrEAri9xLkOpsEuyMiCeMBic/VJ4foAeb6t1tEPLMsfW?= =?utf-8?q?Kxhpm+BCahGt/z4s/Dxe7ZzFzQr0wgUs8wvf1u+tg1nct8Z5B1Cfio8FKedQ5nTgH?= =?utf-8?q?w5sA8fGE4RiV8BmLP9XfHL2TEmx7qAlxK1A/xp7rrV7tApNRwoGORFQvP0+U2gBsg?= =?utf-8?q?wOx2HBerKS+nxKFKWylf0IDkOb0e1soen78Avjg/ZqmKXxe5HIqUJvcwwGIApNjzC?= =?utf-8?q?f2A7upIiCCpKiFZNFbM45WaVfXUdoBRCxBBNW1xHyY9Wq7OgheSdNFLVG6JaAPlFc?= =?utf-8?q?QRyCOWSX+/ilXhzHh+CPaJ7O9OLTA4NvcDCErokXNrf7MdZD40BHBI2/5hp0+r55c?= =?utf-8?q?Ql+usfxA1Lw76WVP/05ZIdotCUAVIqzltvN/CoGWXc9mw3DWyn1AYx3+dVhsqbk/8?= =?utf-8?q?0xSOuZM4qamMSdwJJCNpph0AgPADPlSuRULTUdV46+RDU4p/0wyESomO7qb5d12Yu?= =?utf-8?q?GwJMR/VaRnckmyLjk1h9tuJt/H6o5ljodJf7uwPHp2zFeDKnkoO1x98s8KT5oeqVe?= =?utf-8?q?fHhfCbL1qe1yvzL0K26H4eb21lGDwrJ5K4u1dHl4bbDovROnG/72PK/oqReOFHE24?= =?utf-8?q?iUEyEq+GPRowZlWtjOeRr3JZHIMDvxTFskoHorYlmZm2hnwHW7CV5ROnmiL32ihUr?= =?utf-8?q?rBF5Z7xtAOwhlZpyQ0G9EXjMtGMak+1WvwtKylsyWmPAWJPMJi130fu64VbzMRDuW?= =?utf-8?q?5nl4ndcaJpJCa+5esgpsaP1MkoOWj7LMnRe4G8POG2tnS8BE9DFLIAlhYBF64auYt?= =?utf-8?q?BRu/DUKEkMxHX+86BP7uswgW71DzSWq0Eioqm+wcCO7uUW99nNoK95kwAKqK/NdHN?= =?utf-8?q?J0gY5BnYgScRzBKEq8lxjKFkYHZ5mElrnh/QSNTeCuOXgGOrmSRCzymayhmoHMWEN?= =?utf-8?q?R8/1A5V9gEhK41+oyTTXZySAOQiw/j+zf/T0KdfS9x21+kgoAhjJEonsO1fnEMHiS?= =?utf-8?q?UIWZl1pVEDLDlG3j+s1J+p2ZTujBRHV+dNrGW2U+3DHD9/xooJUgJs9iHvzPqRVto?= =?utf-8?q?4wgY1YajB3h/iIO6egCZUX/A1ZX7df7gfoZBLRTzRznceZJnpuOQqKn9QfC/8Mrmg?= =?utf-8?q?xfO80IIdUrs3d5VtKWz74EZQ1sMXZ0ImABs7PydB/ROCeDabCRJluJ0bJpmxtLthx?= =?utf-8?q?E2xLEQRCIsXD7woAOZ+jiExEFOos79MILfZhtpu5xGPmst2tlo9Gk2fMrmCQMJa6w?= =?utf-8?q?nO1twG30J03rJ+yXzqN0bnqBCi0VdJbrEl7I+bNt7YXJyvB5oTuBlUH9qDJQWBxpy?= =?utf-8?q?cmHBLgLDUUre+BiHP266/z25hAEDfJ8Yi5/iiqy+jJuJMfE1L7rjRjrugd0lgb6VO?= =?utf-8?q?8gcq9R43dq54?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8318ffff-df8b-4d78-4d94-08daf556dbdd X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2023 11:11:03.5583 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fDT9iGyBbLM9QqnKpjdthXItZqWI+hZYtCraZyrKZDcASI2XIqn1Uml8PAvcDcKmMRz+fKdbIS9KOZJZjCSqWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8401 X-Spam-Status: No, score=-3028.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754905474438361635?= X-GMAIL-MSGID: =?utf-8?q?1754905474438361635?= Register names are (including their nul terminators) on average almost 4 bytes long. Otoh no register name is longer than 8 bytes. Hence even for 32-bit builds using a pointer is only slightly more space efficient than embedding the strings. A level of indirection can be also avoided by embedding the names as an array of 8 characters directly in the arrays, and the number of base relocations in libopcodes.so (or PIE builds of statically linked executables) goes down as well. To amortize for the otherwise reduced folding of string literals by the linker, use att_names_seg[] in place of string literals in append_seg() and OP_ESreg(). --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -2462,48 +2462,48 @@ struct op need to update onebyte_has_modrm or twobyte_has_modrm. */ #define MODRM_CHECK if (!ins->need_modrm) abort () -static const char *const intel_index16[] = { +static const char intel_index16[][6] = { "bx+si", "bx+di", "bp+si", "bp+di", "si", "di", "bp", "bx" }; -static const char *const att_names64[] = { +static const char att_names64[][8] = { "%rax", "%rcx", "%rdx", "%rbx", "%rsp", "%rbp", "%rsi", "%rdi", "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15" }; -static const char *const att_names32[] = { +static const char att_names32[][8] = { "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi", "%r8d", "%r9d", "%r10d", "%r11d", "%r12d", "%r13d", "%r14d", "%r15d" }; -static const char *const att_names16[] = { +static const char att_names16[][8] = { "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di", "%r8w", "%r9w", "%r10w", "%r11w", "%r12w", "%r13w", "%r14w", "%r15w" }; -static const char *const att_names8[] = { +static const char att_names8[][8] = { "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh", }; -static const char *const att_names8rex[] = { +static const char att_names8rex[][8] = { "%al", "%cl", "%dl", "%bl", "%spl", "%bpl", "%sil", "%dil", "%r8b", "%r9b", "%r10b", "%r11b", "%r12b", "%r13b", "%r14b", "%r15b" }; -static const char *const att_names_seg[] = { +static const char att_names_seg[][4] = { "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "%?", "%?", }; static const char att_index64[] = "%riz"; static const char att_index32[] = "%eiz"; -static const char *const att_index16[] = { +static const char att_index16[][8] = { "%bx,%si", "%bx,%di", "%bp,%si", "%bp,%di", "%si", "%di", "%bp", "%bx" }; -static const char *const att_names_mm[] = { +static const char att_names_mm[][8] = { "%mm0", "%mm1", "%mm2", "%mm3", "%mm4", "%mm5", "%mm6", "%mm7" }; -static const char *const att_names_bnd[] = { +static const char att_names_bnd[][8] = { "%bnd0", "%bnd1", "%bnd2", "%bnd3" }; -static const char *const att_names_xmm[] = { +static const char att_names_xmm[][8] = { "%xmm0", "%xmm1", "%xmm2", "%xmm3", "%xmm4", "%xmm5", "%xmm6", "%xmm7", "%xmm8", "%xmm9", "%xmm10", "%xmm11", @@ -2514,7 +2514,7 @@ static const char *const att_names_xmm[] "%xmm28", "%xmm29", "%xmm30", "%xmm31" }; -static const char *const att_names_ymm[] = { +static const char att_names_ymm[][8] = { "%ymm0", "%ymm1", "%ymm2", "%ymm3", "%ymm4", "%ymm5", "%ymm6", "%ymm7", "%ymm8", "%ymm9", "%ymm10", "%ymm11", @@ -2525,7 +2525,7 @@ static const char *const att_names_ymm[] "%ymm28", "%ymm29", "%ymm30", "%ymm31" }; -static const char *const att_names_zmm[] = { +static const char att_names_zmm[][8] = { "%zmm0", "%zmm1", "%zmm2", "%zmm3", "%zmm4", "%zmm5", "%zmm6", "%zmm7", "%zmm8", "%zmm9", "%zmm10", "%zmm11", @@ -2536,12 +2536,12 @@ static const char *const att_names_zmm[] "%zmm28", "%zmm29", "%zmm30", "%zmm31" }; -static const char *const att_names_tmm[] = { +static const char att_names_tmm[][8] = { "%tmm0", "%tmm1", "%tmm2", "%tmm3", "%tmm4", "%tmm5", "%tmm6", "%tmm7" }; -static const char *const att_names_mask[] = { +static const char att_names_mask[][8] = { "%k0", "%k1", "%k2", "%k3", "%k4", "%k5", "%k6", "%k7" }; @@ -11291,22 +11291,22 @@ append_seg (instr_info *ins) switch (ins->active_seg_prefix) { case PREFIX_CS: - oappend_register (ins, "%cs"); + oappend_register (ins, att_names_seg[1]); break; case PREFIX_DS: - oappend_register (ins, "%ds"); + oappend_register (ins, att_names_seg[3]); break; case PREFIX_SS: - oappend_register (ins, "%ss"); + oappend_register (ins, att_names_seg[2]); break; case PREFIX_ES: - oappend_register (ins, "%es"); + oappend_register (ins, att_names_seg[0]); break; case PREFIX_FS: - oappend_register (ins, "%fs"); + oappend_register (ins, att_names_seg[4]); break; case PREFIX_GS: - oappend_register (ins, "%gs"); + oappend_register (ins, att_names_seg[5]); break; default: break; @@ -11649,7 +11649,7 @@ static void print_register (instr_info *ins, unsigned int reg, unsigned int rexmask, int bytemode, int sizeflag) { - const char *const *names; + const char (*names)[8]; USED_REX (rexmask); if (ins->rex & rexmask) @@ -11888,7 +11888,7 @@ OP_E_memory (instr_info *ins, int bytemo || bytemode == bnd_mode || bytemode == bnd_swap_mode); bool check_gather = false; - const char *const *indexes = NULL; + const char (*indexes)[8] = NULL; havebase = 1; base = ins->modrm.rm; @@ -12177,8 +12177,8 @@ OP_E_memory (instr_info *ins, int bytemo if (ins->modrm.mod != 0 || ins->modrm.rm != 6) { oappend_char (ins, ins->open_char); - oappend (ins, (ins->intel_syntax ? intel_index16 - : att_index16)[ins->modrm.rm]); + oappend (ins, ins->intel_syntax ? intel_index16[ins->modrm.rm] + : att_index16[ins->modrm.rm]); if (ins->intel_syntax && (disp || ins->modrm.mod != 0 || ins->modrm.rm == 6)) { @@ -12801,7 +12801,7 @@ OP_ESreg (instr_info *ins, int code, int intel_operand_size (ins, b_mode, sizeflag); } } - oappend_register (ins, "%es"); + oappend_register (ins, att_names_seg[0]); oappend_char (ins, ':'); ptr_reg (ins, code, sizeflag); } @@ -12898,7 +12898,7 @@ OP_MMX (instr_info *ins, int bytemode AT int sizeflag ATTRIBUTE_UNUSED) { int reg = ins->modrm.reg; - const char *const *names; + const char (*names)[8]; ins->used_prefixes |= (ins->prefixes & PREFIX_DATA); if (ins->prefixes & PREFIX_DATA) @@ -12916,7 +12916,7 @@ OP_MMX (instr_info *ins, int bytemode AT static void print_vector_reg (instr_info *ins, unsigned int reg, int bytemode) { - const char *const *names; + const char (*names)[8]; if (bytemode == xmmq_mode || bytemode == evex_half_bcst_xmmqh_mode @@ -13014,7 +13014,7 @@ static void OP_EM (instr_info *ins, int bytemode, int sizeflag) { int reg; - const char *const *names; + const char (*names)[8]; if (ins->modrm.mod != 3) { @@ -13370,8 +13370,8 @@ OP_Monitor (instr_info *ins, int bytemod /* monitor %{e,r,}ax,%ecx,%edx" */ if (!ins->intel_syntax) { - const char *const *names = (ins->address_mode == mode_64bit - ? att_names64 : att_names32); + const char (*names)[8] = (ins->address_mode == mode_64bit + ? att_names64 : att_names32); if (ins->prefixes & PREFIX_ADDR) { @@ -13547,7 +13547,7 @@ CMPXCHG8B_Fixup (instr_info *ins, int by static void XMM_Fixup (instr_info *ins, int reg, int sizeflag ATTRIBUTE_UNUSED) { - const char *const *names = att_names_xmm; + const char (*names)[8] = att_names_xmm; if (ins->need_vex) { @@ -13588,7 +13588,7 @@ static void OP_VEX (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED) { int reg, modrm_reg, sib_index = -1; - const char *const *names; + const char (*names)[8]; if (!ins->need_vex) abort (); @@ -13763,7 +13763,7 @@ static void OP_REG_VexI4 (instr_info *ins, int bytemode, int sizeflag ATTRIBUTE_UNUSED) { int reg; - const char *const *names = att_names_xmm; + const char (*names)[8] = att_names_xmm; FETCH_DATA (ins->info, ins->codep + 1); reg = *ins->codep++;