public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "chefmax at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug sanitizer/66908] Uninitialized variable when compiled with UBsan
Date: Wed, 22 Jul 2015 17:47:00 -0000	[thread overview]
Message-ID: <bug-66908-4-brxwBQFEhs@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-66908-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66908

--- Comment #12 from Maxim Ostapenko <chefmax at gcc dot gnu.org> ---
(In reply to Marek Polacek from comment #11)
> Hmm, still can't reproduce even with vanilla trunk:
> 
>   A = A.0;
>   D.2679 = get.__pfn;
>   D.2680 = (long int) D.2679;
>   D.2681 = D.2680 & 1;
>   if (D.2681 == 0) goto <D.2682>; else goto <D.2683>;
>   <D.2682>:
>   iftmp.1 = get.__pfn;
>   goto <D.2684>;
>   <D.2683>:
>   D.2685 = get.__delta;
>   D.2686 = (sizetype) D.2685;
>   D.2687 = A + D.2686;
>   D.2688 = MEM[(int (*__vtbl_ptr_type) () * *)D.2687];
>   D.2689 = get.__pfn;
>   D.2690 = (long int) D.2689;
>   D.2691 = D.2690 + -1; 
>   D.2692 = (sizetype) D.2691;
>   D.2693 = D.2688 + D.2692;
>   iftmp.1 = *D.2693;
>   <D.2684>:
>   D.2694 = get.__delta;
>   D.2695 = (sizetype) D.2694;
>   D.2696 = A + D.2695;
>   result = iftmp.1 (D.2696);
>   operator delete (A);
>   D.2697 = result;
>   return D.2697;
> 
> I don't see the shifts at all.

And you should not, this is ARM - specific. From C++ ABI for the ARM
Architecture:

"3.2.1 Representation of pointer to member function
The generic C++ ABI [GC++ABI] specifies that a pointer to member function is a
pair of words <ptr, adj>. The least significant bit of ptr discriminates
between (0) the address of a non-virtual member function and (1) the offset in
the class’s virtual table of the address of a virtual function.

This encoding cannot work for the ARM-Thumb instruction set where code
addresses use all 32 bits of ptr.

This ABI specifies that adj contains twice the this adjustment, plus 1 if the
member function is virtual. The least significant bit of adj then makes exactly
the same discrimination as the least significant bit of ptr does for Itanium.
A pointer to member function is NULL when ptr = 0 and the least significant bit
of adj is zero."

Perhaps I should cook x86 reproducer.
>From gcc-bugs-return-493044-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Wed Jul 22 18:02:10 2015
Return-Path: <gcc-bugs-return-493044-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 72956 invoked by alias); 22 Jul 2015 18:02:09 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 72913 invoked by uid 55); 22 Jul 2015 18:02:05 -0000
From: "uros at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/66954] function multiversioning fails for target "aes"
Date: Wed, 22 Jul 2015 18:02:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.2.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: enhancement
X-Bugzilla-Who: uros at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Resolution:
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-66954-4-PRkKHd2zVI@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-66954-4@http.gcc.gnu.org/bugzilla/>
References: <bug-66954-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2015-07/txt/msg01934.txt.bz2
Content-length: 972

https://gcc.gnu.org/bugzilla/show_bug.cgi?idf954

--- Comment #2 from uros at gcc dot gnu.org ---
Author: uros
Date: Wed Jul 22 18:01:33 2015
New Revision: 226081

URL: https://gcc.gnu.org/viewcvs?rev"6081&root=gcc&view=rev
Log:
libgcc/ChangeLog:

        PR target/66954
        * config/i386/cpuinfo.c (enum processor_features): Add FEATURE_AES.
        (get_available_features): Handle FEATURE_AES.

gcc/ChangeLog:

        PR target/66954
        * config/i386/i386.c (get_builtin_code_for_version): Add P_AES
        to enum feature_priority and feature_list.
        (fold_builtin_cpu): Add F_AES to enum processor_features
        and isa_names_table.

gcc/testsuite/ChangeLog:

        PR target/66954
        * g++.dg/ext/mv24.C: New test.


Added:
    trunk/gcc/testsuite/g++.dg/ext/mv24.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/testsuite/ChangeLog
    trunk/libgcc/ChangeLog
    trunk/libgcc/config/i386/cpuinfo.c


  parent reply	other threads:[~2015-07-22 17:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-17 10:48 [Bug sanitizer/66908] New: " m.guseva at samsung dot com
2015-07-20 18:20 ` [Bug sanitizer/66908] " y.gribov at samsung dot com
2015-07-21 12:34 ` mpolacek at gcc dot gnu.org
2015-07-21 13:48 ` mpolacek at gcc dot gnu.org
2015-07-21 14:40 ` mpolacek at gcc dot gnu.org
2015-07-22  7:38 ` chefmax at gcc dot gnu.org
2015-07-22  8:21 ` mpolacek at gcc dot gnu.org
2015-07-22 12:07 ` mpolacek at gcc dot gnu.org
2015-07-22 12:40 ` mpolacek at gcc dot gnu.org
2015-07-22 14:36 ` mpolacek at gcc dot gnu.org
2015-07-22 15:03 ` chefmax at gcc dot gnu.org
2015-07-22 15:26 ` mpolacek at gcc dot gnu.org
2015-07-22 17:47 ` chefmax at gcc dot gnu.org [this message]
2015-07-23 13:56 ` mpolacek at gcc dot gnu.org
2015-07-23 13:58 ` chefmax at gcc dot gnu.org
2015-08-11 15:47 ` mpolacek at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-66908-4-brxwBQFEhs@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).