From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3962 invoked by alias); 4 Jun 2013 20:36:47 -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 3876 invoked by uid 89); 4 Jun 2013 20:36:41 -0000 X-Spam-SWARE-Status: No, score=-3.6 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.1 Received: from mail-ob0-f181.google.com (HELO mail-ob0-f181.google.com) (209.85.214.181) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Tue, 04 Jun 2013 20:36:40 +0000 Received: by mail-ob0-f181.google.com with SMTP id 16so1238211obc.26 for ; Tue, 04 Jun 2013 13:36:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=bKU0WvevFONzP41OQLbOPHeCx6ScGitIz3wX6ycUJO8=; b=cUxYo1CS3zDiopF0rAv9maOR/MLM4OMlM2zMtZzrdEkLE1/Rz0N1HWa2QBfORhfC3d jmn385YH33/6Y45w7aMSRP+3HxPS0ajvwgqeWrwRaCn8vbVIB+gu8OXyhaWUcJwlNZM8 KcDZgQo3+7ngqLowmg364zhKDKNmrmZyi9GMDsPwr2I6yYXUESIiGGW0CFxRbvJbB5yG oXpNdkQAWcp9oPBh5xg6KXq1UlNx861hNSg5n/9w+NDk+3aXmJYiN/9K4FxsHjzGan8m c8RLheHIqFWUHfJ+b//wah2ar2zBGXGdax3xZUk42C0A7W1MXI2kNxXWvm3gortSCZ5b fsLg== MIME-Version: 1.0 X-Received: by 10.60.98.134 with SMTP id ei6mr13318212oeb.21.1370378198432; Tue, 04 Jun 2013 13:36:38 -0700 (PDT) Received: by 10.182.22.49 with HTTP; Tue, 4 Jun 2013 13:36:38 -0700 (PDT) In-Reply-To: <20130604202301.GA8999@host2.jankratochvil.net> References: <20130604180722.GA23588@host2.jankratochvil.net> <20130604202301.GA8999@host2.jankratochvil.net> Date: Tue, 04 Jun 2013 20:36:00 -0000 Message-ID: Subject: Re: [PATCH] Ignore the first entry returned by svr4_current_sos_via_xfer_libraries for dynamically linked programs From: Ben Cheng To: Jan Kratochvil Cc: gdb-patches@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 X-Gm-Message-State: ALoCoQkqeb6Q4uejIv4rS7sqvmYOQLCOG1fisAZZEO6d9ISx8eyEZGGXDNYfDqZSEF9mt1YNSZxOoiztvpO9pjmHC5QMXaA/M11sHGCwIwn2SawpC/+RFazUg1w8DqKsi/JN1nzTHCARM5HvU8O9N8HmyFfNLRUb1Ghcxr1dWiBvEH0zPSSIhUDkJylD9XTzeieL7CvXmiEyMZ/H9sb9rzfcN/GEL2hBVw== X-SW-Source: 2013-06/txt/msg00057.txt.bz2 Perfect timing. :) I was playing with Android's dynamic linker and fount out that after setting the l_name field to NULL for the first entry gdb/gdbserver 7.6 start to work on Android. diff --git a/linker/linker.cpp b/linker/linker.cpp index c97b712..ddc16d8 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -1644,7 +1644,8 @@ static Elf32_Addr __linker_init_post_relocation(KernelArgu link_map_t* map = &(si->link_map); map->l_addr = 0; - map->l_name = args.argv[0]; + //map->l_name = args.argv[0]; + map->l_name = NULL; map->l_prev = NULL; map->l_next = NULL; Thanks, -Ben On Tue, Jun 4, 2013 at 1:23 PM, Jan Kratochvil wrote: > On Tue, 04 Jun 2013 20:18:10 +0200, Ben Cheng wrote: >> Hmm this problem only shows up after I refresh gdbserver from the >> unmodified gdb 7.6 tree. As you mentioned, gdb 7.1 did not support >> library-list-svr4, so when I paired gdbserver 7.1 with gdb 7.6 they >> also work fine. > > In such case there is a bug in FSF gdbserver as it ignores only entries with > name "". Normal glibc uses name "" for the first entry for the executable but > Android Bionic apparently uses "" as the first entry instead. > > The bug is in gdbserver/linux-low.c linux_qxfer_libraries_svr4() which should > always ignore the first entry, even if it is not "". > > The test IGNORE_FIRST does not need to be done there. The check > /* Assume that everything is a library if the dynamic loader was loaded > late by a static executable. */ > if (exec_bfd && bfd_get_section_by_name (exec_bfd, ".dynamic") == NULL) > > is in fact already done by gdbserver/linux-low.c get_dynamic(): If PT_DYNAMIC > (".dynamic") is not found gdbserver will never send and > solib-svr4.c falls back to the memory reads where it copes with static > executables fine. > > > Thanks, > Jan