From patchwork Sun Sep 6 20:03:01 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Pluzhnikov X-Patchwork-Id: 8588 Received: (qmail 57456 invoked by alias); 6 Sep 2015 20:03:36 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 57434 invoked by uid 89); 6 Sep 2015 20:03:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f178.google.com Received: from mail-wi0-f178.google.com (HELO mail-wi0-f178.google.com) (209.85.212.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 06 Sep 2015 20:03:34 +0000 Received: by wiclk2 with SMTP id lk2so64264212wic.1 for ; Sun, 06 Sep 2015 13:03:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to:cc:content-type; bh=2Z5xrncL4j4gUES1YyTNkexgf5feZa/FkcogB/ypgy0=; b=JF9ABH9Ozszz7J8LBgEzcb/mE1rLsRubspn+1rJXatIALW6V0UMkJ+dbVtGuDh1IQp Eojr3vjAsj31DN+tWqSg1DYy2+D8B4YBVw1U74Bh32hrlkfCvsAAtIRjwIXRPOZWm20X jBGFow3RDv7XnW7/aP+MVpFgaeMBDtLn1pDtmUwsAqawrgFsA4coDBBj9y2xmrx9QhFv sZ9wAzkpHVrplxhPt4m/ycyZWQKzLhRyUHnTPvAjyfc4kO/KtgjD3BlUN8iMn0pMJqiu CvdN/kGs9tzGCgVxVVpwmYMhBeq6ZsAsYOhPHufPi+uI7DuzYmGsF1Oevn8+vDRGA/CP F26w== X-Gm-Message-State: ALoCoQmq2JLxzaxZBtnzGZ4Jbiv6dqJOyu0L5o4XKG5aMMFC3xw63mI6kAYNQCHH9gMC95BFb7ny X-Received: by 10.181.13.228 with SMTP id fb4mr28995237wid.10.1441569811214; Sun, 06 Sep 2015 13:03:31 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.157.6 with HTTP; Sun, 6 Sep 2015 13:03:01 -0700 (PDT) From: Paul Pluzhnikov Date: Sun, 6 Sep 2015 13:03:01 -0700 Message-ID: Subject: [patch] Fix BZ15121 -- x/a broken for addresses in shared libraries To: gdb-patches ml Cc: Paul Pluzhnikov X-IsSubscribed: yes Greetings, Attached patch fixes BZ #15121 -- x/a broken for addresses in shared libraries. Not adding a new test since this is already covered by gdb.base/long_long.exp Tested on Linux/x86_64, no new failures. Thanks, ChangeLog: 2015-09-06 Paul Pluzhnikov [BZ #15121] * gdb/value.c (unpack_pointer): Don't sign-extend. testsuite/ChangeLog: 2015-09-06 Paul Pluzhnikov * gdb.base/long_long.exp: Adjust. diff --git a/gdb/testsuite/gdb.base/long_long.exp b/gdb/testsuite/gdb.base/long_long.exp index 5eea391..f4f3961 100644 --- a/gdb/testsuite/gdb.base/long_long.exp +++ b/gdb/testsuite/gdb.base/long_long.exp @@ -255,7 +255,7 @@ gdb_test "x/2bd b" "1.*-89" gdb_test "x/2bu b" "1.*167" gdb_test "x/2bo b" "01.*0247" gdb_test "x/2bt b" "00000001.*10100111" -gdb_test_ptr "x/2ba b" "" "" "0x1.*0xffffffa7" "0x1.*0xffffffffffffffa7" +gdb_test_ptr "x/2ba b" "" "" "0x1.*0xa7" "0x1.*0xa7" gdb_test "x/2bc b" "1 '.001'.*-89 '.\[0-9\]*'" gdb_test "x/2bf b" "1.*-89" @@ -264,7 +264,7 @@ gdb_test "x/2hd h" "291.*-22738" gdb_test "x/2hu h" "291.*42798" gdb_test "x/2ho h" "0443.*0123456" gdb_test "x/2ht h" "0000000100100011.*1010011100101110" -gdb_test_ptr "x/2ha h" "" "" "0x123.*0xffffa72e" "0x123.*0xffffffffffffa72e" +gdb_test_ptr "x/2ha h" "" "" "0x123.*0xa72e" "0x123.*0xa72e" gdb_test "x/2hc h" "35 '.'.*46 '.'" gdb_test "x/2hf h" "291.*-22738" @@ -273,7 +273,7 @@ gdb_test "x/2wd w" "19088743.*-1490098887" gdb_test "x/2wu w" "19088743.*2804868409" gdb_test "x/2wo w" "0110642547.*024713562471" gdb_test "x/2wt w" "00000001001000110100010101100111.*10100111001011101110010100111001" -gdb_test_ptr "x/2wa w" "" "" "0x1234567.*0xa72ee539" "0x1234567.*0xffffffffa72ee539" +gdb_test_ptr "x/2wa w" "" "" "0x1234567.*0xa72ee539" "0x1234567.*0xa72ee539" gdb_test "x/2wc w" "103 'g'.*57 '9'" gdb_test "x/2wf w" "2.99881655e-0?38.*-2.42716126e-0?15" diff --git a/gdb/value.c b/gdb/value.c index 91bf49e..0624b90 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2927,7 +2927,13 @@ unpack_pointer (struct type *type, const gdb_byte *valaddr) { /* Assume a CORE_ADDR can fit in a LONGEST (for now). Not sure whether we want this to be true eventually. */ - return unpack_long (type, valaddr); + LONGEST ret = unpack_long (type, valaddr); + int len = TYPE_LENGTH (type); + if (sizeof (CORE_ADDR) > len && ret < 0) { + /* Don't sign-extend 32-bit pointer. BZ 15121. */ + return ret & ((1UL << (8 * len)) - 1); + } + return ret; }