From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 68498 invoked by alias); 6 Feb 2017 00:46:33 -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 68487 invoked by uid 89); 6 Feb 2017 00:46:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=JIT, sendmail, Lookup X-HELO: mail-qt0-f194.google.com Received: from mail-qt0-f194.google.com (HELO mail-qt0-f194.google.com) (209.85.216.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 06 Feb 2017 00:46:22 +0000 Received: by mail-qt0-f194.google.com with SMTP id w20so12881330qtb.1 for ; Sun, 05 Feb 2017 16:46:22 -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=ETeCyt+LoDYf6gvfHq4lSZxDnmt+7pnRytafn6xVRBY=; b=cdP2hvmQsgr16Z0R5mFE7sGvMed/vebdeykt3iPjfGRiNHhHsjF3sNINREvf+o/dso UNVZxWDOo5QCjQJ5Xf2bcWYJ0zQuXuvn9uWWqn1+KfwG4QlcFaIkwfPb4BC5uybgr9yX xIDnfaXPe6DXrTPWSLXqgoyxDiQUz+WSq2/oD0tCMNTh8MVecFB+jqHMLJFqefTZ9TZu Hq43qQz/EBtCyAA5/fss+o3i5A96H8Mjb/uyjovU8DHWjBjTgLQBpOsGJfdLrnylgKOi Oi171KjaLDCVIJfW2o4p/bSFID6YirJaxIwu73W/MC4SLAdYSQuCtGtxxII5Cyzx48h+ tEkA== X-Gm-Message-State: AMke39lQAM0ynJ31Az0YXWDAU7e73oLEKMH5WA9+6xkynb7CBCgJ+Sr7JBW9exPBwIVw+LGDi+si0QoGn1/2Fw== X-Received: by 10.237.44.103 with SMTP id f94mr7886670qtd.292.1486341981093; Sun, 05 Feb 2017 16:46:21 -0800 (PST) MIME-Version: 1.0 Received: by 10.55.116.198 with HTTP; Sun, 5 Feb 2017 16:46:00 -0800 (PST) In-Reply-To: References: <20170126202406.32412-1-yyc1992@gmail.com> From: Yichao Yu Date: Mon, 06 Feb 2017 00:46: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-02/txt/msg00000.txt.bz2 Ping. Can anyone please review this? Or is there a better place to post this? On Thu, Jan 26, 2017 at 3:31 PM, Yichao Yu wrote: > 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 >>