From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 69819 invoked by alias); 12 Jun 2017 08:42:06 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 69637 invoked by uid 89); 12 Jun 2017 08:42:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-11.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=H*r:sk:static. X-HELO: mail-it0-f45.google.com Received: from mail-it0-f45.google.com (HELO mail-it0-f45.google.com) (209.85.214.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Jun 2017 08:41:57 +0000 Received: by mail-it0-f45.google.com with SMTP id m47so20567997iti.1 for ; Mon, 12 Jun 2017 01:42:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=ypNwPSkg5TDsQaxwcvPAJZ/EuzF5l3BQuLQBjUjrEyY=; b=C2OvUB28PUWTOhVKKiG3mkwzDllgYZLSMQucmVbfGYU5Iqnud5wR/TwNh+FZOGnRNC Xaiq35hgti/NVBf9ZpiEdGluah3p4yjeEnDu/lStX85fk2Joq9qXBia9LABslSG7BGAV 774VxriNjdg/rqh3I0BxVW0jol0luK9tI7gcwJRMWX2b6UTKctU/2i0mNqzkNTYl2tv9 v58JT4mXNQkOLKAmG5Hqwp3Z+0d23voaxyz+93vAwFH76a1+9GAa2+SIOVsO19D1dOhL qzqGIjM/6G8Co3qzuASru693x8nrNHdoTEhV/XsLBP1/9LjH+/7bVPGLBFaLxoBIzu24 3PnA== X-Gm-Message-State: AODbwcC8sdmG2sjGj/Y4PM4GfF0i4nm+gBkqm1BXFQPnlB/dgMHSawTp Rp13I6Ga0gCch3GH X-Received: by 10.36.0.142 with SMTP id 136mr11406955ita.116.1497256919595; Mon, 12 Jun 2017 01:41:59 -0700 (PDT) Received: from E107787-LIN.cambridge.arm.com (static.42.136.251.148.clients.your-server.de. [148.251.136.42]) by smtp.gmail.com with ESMTPSA id u4sm5280289itu.1.2017.06.12.01.41.58 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 12 Jun 2017 01:41:59 -0700 (PDT) From: Yao Qi X-Google-Original-From: Yao Qi To: gdb-patches@sourceware.org Subject: [PATCH 00/25 V2] Make GDB builtin target descriptions more flexible Date: Mon, 12 Jun 2017 08:42:00 -0000 Message-Id: <1497256916-4958-1-git-send-email-yao.qi@linaro.org> X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg00293.txt.bz2 This patch series is to change GDB and GDBserver builtin target descriptions more flexible, by removing pre-generated ones. Instead, these builtin target descriptions can be got lazily and dynamically. GDB builtin target descriptions are created from initialize_tdesc_* functions in features/*.c files, while GDBserver builtin target descriptions are generated from regformats/*.dat files. This patch series changes both GDB and GDBserver to create target description dynamically from features, instead of using pre-generated target descriptions. This patch series only convert x86-linux ( including i386-linux, amd64-linux and x32-linux) target description to demonstrate the usefulness of the change. Once one target architecture switches to the new flexible target description, - only need xml feature files under gdb/features directory. All existing target description xml files can be kept for the tests. Add new xml feature file if we want to support the new feature, but don't need to add new target description xml files. - All existing gdb/regformats/*.dat are not used, but kept for the tests. This is the V2, and V1 is here https://sourceware.org/ml/gdb-patches/2017-05/msg00291.html, the differences are, - Change target descriptions for both GDB and GDBserver, - Generate functions creating features from xml feature file instead of feature name, so that don't have to worry about different features with the same name (different features with the same name still have different file names). - Extend the changes for i386-linux to x86-linux (including, {i386,amd64,x32}-linux) The big design change in V2 is that use generate c files from xml feature files, and use generate c files in both GDB and GDBserver. In next step, I want to remove the duplication of target descriptions in GDB and GDBserver, and share more code on creating x86-linux target descriptions in GDB and GDBserver. I also want people give comments on how to do unit/self tests in GDBserver, see patch 14. The purpose of this patch series is still to demonstrate the design, so the changelog, NEWS entry, and doc may be incomplete. I'll complete them later. Regression tested on x86_64-linux (both -m64 and -m32), native and gdbserver, on aarch64-linux native and gdbserver. ppc64-linux, native. *** BLURB HERE *** Yao Qi (25): Move initialize_tdesc_mips* calls from mips-linux-nat.c to mips-linux-tdep.c Adjust the order of 32bit-linux.xml and 32bit-sse.xml in i386/i386-linux.xml Class-fy tdesc_reg tdesc_type and tdesc_feature Centralize i386 linux target descriptions Use visitor pattern for "maint print c-tdesc" Generate c for feature instead of tdesc Lazily and dynamically create i386-linux target descriptions Add "maint check xml-descriptions" to test builtin xml target descriptions Use target_desc fields expedite_regs and xmltarget ifndef IN_PROCESS_AGENT Adjust code generated by regformats/regdat.sh Use VEC for target_desc.reg_defs [GDBserver] Centralize tdesc for i386-linux Dynamically create tdesc in GDBserver [RFC] GDBserver self test [RFC] GDBserver unit test to i386_tdesc Dynamically composite xml in reply to GDB Remove features/i386/i386-*linux.c [GDBserver] Use pre-generated tdesc as test GDBserver: remove srv_i386_linux_xmlfiles Centralize amd64-linux target descriptions Lazily and dynamically create amd64-linux target descriptions Regenerate two regformats/i386/.dat files [GDBserver] Convert amd64-linux target descriptions [GDBserver] Use pre-generated amd64-linux tdesc as test Remove features/i386/amd64-*linux.c and features/i386/x32-*linux.c gdb/amd64-linux-tdep.c | 165 ++- gdb/amd64-linux-tdep.h | 6 + gdb/cli/cli-cmds.c | 4 + gdb/doc/gdb.texinfo | 15 +- gdb/features/Makefile | 59 +- gdb/features/i386/32bit-avx.c | 27 + gdb/features/i386/32bit-avx512.c | 39 + gdb/features/i386/32bit-core.c | 72 ++ gdb/features/i386/32bit-linux.c | 21 + gdb/features/i386/32bit-mpx.c | 57 + gdb/features/i386/32bit-pkeys.c | 20 + gdb/features/i386/32bit-sse.c | 81 ++ gdb/features/i386/64bit-avx.c | 35 + gdb/features/i386/64bit-avx512.c | 130 +++ gdb/features/i386/64bit-core.c | 80 ++ gdb/features/i386/64bit-linux.c | 21 + gdb/features/i386/64bit-mpx.c | 57 + gdb/features/i386/64bit-pkeys.c | 20 + gdb/features/i386/64bit-segments.c | 21 + gdb/features/i386/64bit-sse.c | 89 ++ gdb/features/i386/amd64-avx-avx512-linux.c | 288 ----- gdb/features/i386/amd64-avx-linux.c | 177 ---- gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c | 329 ------ gdb/features/i386/amd64-avx-mpx-linux.c | 215 ---- gdb/features/i386/amd64-linux.c | 159 --- gdb/features/i386/amd64-mpx-linux.c | 197 ---- gdb/features/i386/i386-avx-avx512-linux.c | 170 --- gdb/features/i386/i386-avx-avx512.c | 8 +- gdb/features/i386/i386-avx-linux.c | 149 --- gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c | 211 ---- gdb/features/i386/i386-avx-mpx-avx512-pku.c | 8 +- gdb/features/i386/i386-avx-mpx-linux.c | 187 ---- gdb/features/i386/i386-avx-mpx.c | 8 +- gdb/features/i386/i386-avx.c | 8 +- gdb/features/i386/i386-linux.c | 139 --- gdb/features/i386/i386-linux.xml | 2 +- gdb/features/i386/i386-mmx-linux.c | 78 -- gdb/features/i386/i386-mmx.c | 8 +- gdb/features/i386/i386-mpx-linux.c | 177 ---- gdb/features/i386/i386-mpx.c | 8 +- gdb/features/i386/i386.c | 8 +- gdb/features/i386/x32-avx-avx512-linux.c | 288 ----- gdb/features/i386/x32-avx-linux.c | 177 ---- gdb/features/i386/x32-core.c | 80 ++ gdb/features/i386/x32-linux.c | 159 --- gdb/gdbcmd.h | 4 + gdb/gdbserver/Makefile.in | 2 +- gdb/gdbserver/config.in | 3 + gdb/gdbserver/configure | 12 +- gdb/gdbserver/configure.ac | 5 + gdb/gdbserver/configure.srv | 29 +- gdb/gdbserver/linux-amd64-ipa.c | 56 - gdb/gdbserver/linux-i386-ipa.c | 36 - gdb/gdbserver/linux-x86-low.c | 102 +- gdb/gdbserver/linux-x86-tdesc-selftest.c | 200 ++++ gdb/gdbserver/linux-x86-tdesc.c | 218 ++++ gdb/gdbserver/linux-x86-tdesc.h | 77 +- gdb/gdbserver/regcache.c | 34 +- gdb/gdbserver/server.c | 28 +- gdb/gdbserver/tdesc.c | 140 ++- gdb/gdbserver/tdesc.h | 131 ++- gdb/i386-linux-tdep.c | 119 ++- gdb/i386-linux-tdep.h | 10 +- gdb/maint.c | 18 + gdb/mips-linux-nat.c | 11 - gdb/mips-linux-tdep.c | 11 + gdb/mips-linux-tdep.h | 6 + .../i386/amd64-avx-mpx-avx512-pku-linux.dat | 1 + gdb/regformats/i386/amd64-avx-mpx-avx512-pku.dat | 3 - gdb/regformats/regdat.sh | 27 +- gdb/regformats/regdef.h | 12 + gdb/selftest.c | 18 +- gdb/target-descriptions.c | 1109 +++++++++++++------- gdb/target-descriptions.h | 13 +- gdb/testsuite/gdb.gdb/unittest.exp | 5 + gdb/x86-linux-nat.c | 59 +- 76 files changed, 2763 insertions(+), 3993 deletions(-) create mode 100644 gdb/features/i386/32bit-avx.c create mode 100644 gdb/features/i386/32bit-avx512.c create mode 100644 gdb/features/i386/32bit-core.c create mode 100644 gdb/features/i386/32bit-linux.c create mode 100644 gdb/features/i386/32bit-mpx.c create mode 100644 gdb/features/i386/32bit-pkeys.c create mode 100644 gdb/features/i386/32bit-sse.c create mode 100644 gdb/features/i386/64bit-avx.c create mode 100644 gdb/features/i386/64bit-avx512.c create mode 100644 gdb/features/i386/64bit-core.c create mode 100644 gdb/features/i386/64bit-linux.c create mode 100644 gdb/features/i386/64bit-mpx.c create mode 100644 gdb/features/i386/64bit-pkeys.c create mode 100644 gdb/features/i386/64bit-segments.c create mode 100644 gdb/features/i386/64bit-sse.c delete mode 100644 gdb/features/i386/amd64-avx-avx512-linux.c delete mode 100644 gdb/features/i386/amd64-avx-linux.c delete mode 100644 gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c delete mode 100644 gdb/features/i386/amd64-avx-mpx-linux.c delete mode 100644 gdb/features/i386/amd64-linux.c delete mode 100644 gdb/features/i386/amd64-mpx-linux.c delete mode 100644 gdb/features/i386/i386-avx-avx512-linux.c delete mode 100644 gdb/features/i386/i386-avx-linux.c delete mode 100644 gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c delete mode 100644 gdb/features/i386/i386-avx-mpx-linux.c delete mode 100644 gdb/features/i386/i386-linux.c delete mode 100644 gdb/features/i386/i386-mmx-linux.c delete mode 100644 gdb/features/i386/i386-mpx-linux.c delete mode 100644 gdb/features/i386/x32-avx-avx512-linux.c delete mode 100644 gdb/features/i386/x32-avx-linux.c create mode 100644 gdb/features/i386/x32-core.c delete mode 100644 gdb/features/i386/x32-linux.c create mode 100644 gdb/gdbserver/linux-x86-tdesc-selftest.c create mode 100644 gdb/gdbserver/linux-x86-tdesc.c -- 1.9.1