From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 102775 invoked by alias); 26 Jan 2017 20:31:59 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 102765 invoked by uid 89); 26 Jan 2017 20:31:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.8 required=5.0 tests=AWL,BAYES_50,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KAM_STOCKGEN,RCVD_IN_DNSWL_LOW,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=20633, ps_data, UD:.d6eb800, jit.c X-HELO: mail-qt0-f195.google.com Received: from mail-qt0-f195.google.com (HELO mail-qt0-f195.google.com) (209.85.216.195) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 26 Jan 2017 20:31:48 +0000 Received: by mail-qt0-f195.google.com with SMTP id w20so7695296qtb.1 for ; Thu, 26 Jan 2017 12:31:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vO+VKbQa/NHephQIhiATUlQLk4qseZDtHKMw9Ba6JpE=; b=sfBEa+/PIZkrILtOAWc+2iROjadSFNJ6oFi9jmisXNRMEqlnfOfOKHSiB0THpCRtZr b5P5TT0kqFWvhMjpOhE0jFYFNAFH0bklVKv4IM/Yn4JVP0LQdaXOiTEzTZ8xENvxISh8 6xA3g/83wJdGELAwqNp3YwO9ot9FUJYd9duCGaxZ+Onmr7CV4f6hzAbzDiGrxRyK7fL1 YlfxIwB7Qav3Yig+7vfFoQptZqBtUQUjgrcheS0i8BgHNBj9yqyJ2ovxRTIAomqNur4z V3TFC6rGo5GpuiQ0j4tDJfZ4+6s7l6yMJsq9fbcTpyz5O+Hzlhv1BKLZT/Zk+3PAwP7w PNKw== X-Gm-Message-State: AIkVDXKplL8rtlRGyjRmrloHAFZfEjeD8FtRcrSE0184Xoe3fuBjwIb1Relv/0YpIupyvT83l/KGkuA3xwbJJA== X-Received: by 10.200.45.177 with SMTP id p46mr4364005qta.240.1485462707022; Thu, 26 Jan 2017 12:31:47 -0800 (PST) MIME-Version: 1.0 Received: by 10.55.212.149 with HTTP; Thu, 26 Jan 2017 12:31:26 -0800 (PST) In-Reply-To: <20170126202406.32412-1-yyc1992@gmail.com> References: <20170126202406.32412-1-yyc1992@gmail.com> From: Yichao Yu Date: Thu, 26 Jan 2017 20:31:00 -0000 Message-ID: Subject: Re: [PATCH] Lookup the JIT descriptor symbol first to avoid finding the PLT entry of the breakpoint in the wrong object file. To: gdb@sourceware.org Cc: Yichao Yu Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2017-01/txt/msg00051.txt.bz2 On Thu, Jan 26, 2017 at 3:24 PM, Yichao Yu wrote: > Fix 20633 ..... I don't use git send-mail very often and missed the chance to type more comments.... The link to the bug report is https://sourceware.org/bugzilla/show_bug.cgi?id=20633 . I think ideally the interface should find all the global and local symbols and breakpoint on all of them since there isn't an agreement on who will provide it AFAICT (and for example,a process can load multiple copies of statically linked LLVM each providing a jit debugging interface). However, I'm not really sure what's the right function to use for that and it'll probably be a much bigger change so I went for this smaller change that fixes the original issue. Not sure how this should be tested....... =( > --- > gdb/jit.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/gdb/jit.c b/gdb/jit.c > index 158d6d8..d6eb800 100644 > --- a/gdb/jit.c > +++ b/gdb/jit.c > @@ -1051,18 +1051,21 @@ jit_breakpoint_re_set_internal (struct gdbarch *gdbarch, > if (ps_data->objfile == NULL) > { > /* Lookup the registration symbol. If it is missing, then we > - assume we are not attached to a JIT. */ > - reg_symbol = lookup_minimal_symbol_and_objfile (jit_break_name); > - if (reg_symbol.minsym == NULL > - || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0) > - return 1; > + assume we are not attached to a JIT. > + Lookup the descriptor first since looking up the breakpoint might > + return a PLT entry in the wrong file. */ > > - desc_symbol = lookup_minimal_symbol (jit_descriptor_name, NULL, > - reg_symbol.objfile); > + desc_symbol = lookup_minimal_symbol_and_objfile (jit_descriptor_name); > if (desc_symbol.minsym == NULL > || BMSYMBOL_VALUE_ADDRESS (desc_symbol) == 0) > return 1; > > + reg_symbol = lookup_minimal_symbol (jit_break_name, NULL, > + desc_symbol.objfile); > + if (reg_symbol.minsym == NULL > + || BMSYMBOL_VALUE_ADDRESS (reg_symbol) == 0) > + return 1; > + > objf_data = get_jit_objfile_data (reg_symbol.objfile); > objf_data->register_code = reg_symbol.minsym; > objf_data->descriptor = desc_symbol.minsym; > -- > 2.10.2 >