From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45688 invoked by alias); 2 Feb 2016 02:56:02 -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 45672 invoked by uid 89); 2 Feb 2016 02:56:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=mhf X-HELO: mx2.suse.de Received: from mx2.suse.de (HELO mx2.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (CAMELLIA256-SHA encrypted) ESMTPS; Tue, 02 Feb 2016 02:55:59 +0000 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 66F2FAB45; Tue, 2 Feb 2016 02:55:56 +0000 (UTC) Subject: Re: [PATCH 2/4] Add Jeff Mahoney's py-crash patches. To: Doug Evans , Ales Novak References: <1454276692-7119-1-git-send-email-alnovak@suse.cz> <1454276692-7119-3-git-send-email-alnovak@suse.cz> Cc: gdb-patches From: Jeff Mahoney X-Enigmail-Draft-Status: N1110 Message-ID: <56B01AB9.90005@suse.com> Date: Tue, 02 Feb 2016 02:56:00 -0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2016-02/txt/msg00038.txt.bz2 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 2/1/16 5:22 PM, Doug Evans wrote: > On Sun, Jan 31, 2016 at 1:44 PM, Ales Novak > wrote: >> --- gdb/Makefile.in | 12 ++ >> gdb/python/py-minsymbol.c | 353 >> +++++++++++++++++++++++++++++++++++++ gdb/python/py-objfile.c >> | 29 +++- gdb/python/py-section.c | 401 >> +++++++++++++++++++++++++++++++++++++++++++ >> gdb/python/py-symbol.c | 52 ++++-- >> gdb/python/python-internal.h | 14 ++ gdb/python/python.c >> | 7 +- 7 files changed, 853 insertions(+), 15 deletions(-) >> create mode 100644 gdb/python/py-minsymbol.c create mode 100644 >> gdb/python/py-section.c > > > Hi. Hi Doug - > Part of what this patch is doing is exporting bfd to python. E.g., > all the SEC_* constants. > > As a rule we absolutely discourage people from using bfd outside > of the the binutils+gdb source tree. Either this rule needs to > change, or I don't think we can allow this patch. I'd be interested > to hear what others in the community think. That's unfortunate. The Linux kernel uses ELF sections for a number of purposes. Most notably is the definition of per-cpu variables. Without the ELF section, we can't resolve the addresses for the variables. So, from our perspective, it's a requirement. > For myself, I would much rather export ELF separately (e.g., a > separate python API one can use independent of any particular tool, > including gdb), and then have gdb provide the necessary glue to use > this API. [I can imagine some compromises being needed, at least > for now; e.g., it'd be cumbersome to read in all ELF symbols > twice. But fixing that is just an optimization.] Ok, that's doable. As it is, the section code mixes GDB and BFD pretty heavily. It shouldn't be too difficult to separate the two out and push the section stuff into a new BFD python interface and associate the objfiles with it. - -Jeff > >> ... + if (PyModule_AddIntConstant (gdb_module, "SEC_NO_FLAGS", >> SEC_NO_FLAGS) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_ALLOC", SEC_ALLOC) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_LOAD", SEC_LOAD) < 0 + || >> PyModule_AddIntConstant (gdb_module, "SEC_RELOC", SEC_RELOC) < 0 >> + || PyModule_AddIntConstant (gdb_module, "SEC_READONLY", >> SEC_READONLY) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_CODE", SEC_CODE) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_DATA", SEC_DATA) < 0 + || >> PyModule_AddIntConstant (gdb_module, "SEC_ROM", SEC_ROM) < 0 + >> || PyModule_AddIntConstant (gdb_module, "SEC_CONSTRUCTOR", + >> SEC_CONSTRUCTOR) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_HAS_CONTENTS", + >> SEC_HAS_CONTENTS) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_NEVER_LOAD", + >> SEC_NEVER_LOAD) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_THREAD_LOCAL", + >> SEC_THREAD_LOCAL) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_HAS_GOT_REF", + >> SEC_HAS_GOT_REF) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_IS_COMMON", + >> SEC_IS_COMMON) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_DEBUGGING", + SEC_DEBUGGING) >> < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_IN_MEMORY", + SEC_IN_MEMORY) >> < 0 + || PyModule_AddIntConstant (gdb_module, "SEC_EXCLUDE", >> SEC_EXCLUDE) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_SORT_ENTRIES", + >> SEC_SORT_ENTRIES) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_LINK_ONCE", + >> SEC_LINK_ONCE) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_LINK_DUPLICATES", + >> SEC_LINK_DUPLICATES) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_LINK_DUPLICATES_DISCARD", + >> SEC_LINK_DUPLICATES_DISCARD) < 0 + || >> PyModule_AddIntConstant (gdb_module, >> "SEC_LINK_DUPLICATES_ONE_ONLY", + >> SEC_LINK_DUPLICATES_ONE_ONLY) < 0 + || >> PyModule_AddIntConstant (gdb_module, >> "SEC_LINK_DUPLICATES_SAME_SIZE", + >> SEC_LINK_DUPLICATES_SAME_SIZE) < 0 + || >> PyModule_AddIntConstant (gdb_module, "SEC_LINKER_CREATED", + >> SEC_LINKER_CREATED) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_KEEP", SEC_KEEP) < 0 + || >> PyModule_AddIntConstant (gdb_module, "SEC_SMALL_DATA", + >> SEC_SMALL_DATA) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_MERGE", SEC_MERGE) < 0 + || >> PyModule_AddIntConstant (gdb_module, "SEC_STRNGS", SEC_STRINGS) < >> 0 + || PyModule_AddIntConstant (gdb_module, "SEC_GROUP", >> SEC_GROUP) < 0 + || PyModule_AddIntConstant (gdb_module, >> "SEC_COFF_SHARED_LIBRARY", + >> SEC_COFF_SHARED_LIBRARY) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_ELF_REVERSE_COPY", + >> SEC_ELF_REVERSE_COPY) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_COFF_SHARED", + >> SEC_COFF_SHARED) < 0 + || PyModule_AddIntConstant >> (gdb_module, "SEC_COFF_NOREAD", + >> SEC_COFF_NOREAD) < 0) + return -1; ... > - -- Jeff Mahoney SUSE Labs -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.19 (Darwin) Comment: GPGTools - http://gpgtools.org iQIcBAEBAgAGBQJWsBq4AAoJEB57S2MheeWyiNkP/ihEmdfSciKJ1oZjW8bFM3pb IopJO86jZWhLMdG5CcDvoc/Mhf/xbGGeCvPgJOVvgdhLOqBR+8H3xT4ot0TzPfba yCas29vKis2+wLEFBGoFVWXzxhYF6SZ4YjZSlUleD7kGvja2kWAj173Oj8q9xuy5 A88hWy/+bTTxVuaBE4NW9RNy+2kt+XwneP2ccBRdaVK2FUUHk62znEAcs/SmAoeN 20Nq8a24pYl+6T/GM1E2lnA2OdBtadcY3G3zXKGtw3JExaNpytlndvdRaDUUJLFV 0TbAE1WsaK5LzOxZzfgn43MLr5y1APdihvGJN1voSnz6mmnmQ6q008z4M7eKVhf6 GuQAMNW8lI4Ki+WwEIOJHiORDNjummRHrzvI8PY5ci9xbD0JEpf3cQVOwGW9Wlqz M7tLdREWll4fm85V8W8wdq7ETsMmoL5SUaAGVn2ZucJLoNDif0jNoLsOeee0YPEa 2EjgB7hleE3GkFgpwPa/75FRANO2AnxzDQPCELoJJ1bMRFONMT46A7T3zbfzijwf +MZWY9h40QUewtLJlqCpVcXWWhNPpNCuzRhwrpKLYAXnT2dBT0zhRRNxKaFzeQo6 YfmFEDWapK97biwKen6/snNSfWpZJAEGprSsU5uqv2iLVzITtlr9euaL9bR9p1fq geG2m6SRtR9JUzIvUn71 =7HLd -----END PGP SIGNATURE-----