From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by sourceware.org (Postfix) with ESMTPS id 781813858D20 for ; Wed, 5 Apr 2023 16:33:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 781813858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=palves.net Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-f53.google.com with SMTP id q19so33742840wrc.5 for ; Wed, 05 Apr 2023 09:33:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680712409; h=content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rmNNYK6jE/7Ricz1F0zDnY1tpz+KR17MuCJXNMxfE6Y=; b=4UNjp5aOB22LxoU2QvQ2C8OZrn6qM/h9EuFAV8vLIuMEDlqvuEiK0GVVAJ/+ZpyZJg FbM94AxLYEdnc9riPUz13KxDgWxhf1968P22mYOwWApv0ahkuVWSnsPeIVMbenP8b/oQ Zegz33VrqZrYh1rm53RHSNo1TH/bDxyN1evWzYDs52L0U/qKqoS/908bjQECoNMiYIlZ m9ACWy79JOBY1tGRwK+g8bWkQ/b+mO55Gt6j+nNwYtkfOqce3FkPY+TXGEAC3Oaqx44g 0wdESAc0AEx44liDVxt9NZhL4AX6lx6jpFN+6oQkBvHYKZ1DMa/JVvmvFWfKPCmjFkft MxvQ== X-Gm-Message-State: AAQBX9eLEyeouNbJdWPB6ES7zM6h1xoUu3XX1tRLblg8XgBGa6+KYll7 XsHBCKHI6RqtQ6v4AWmZrO8Cy8dsj0i+5Q== X-Google-Smtp-Source: AKy350ZLVVuFBoWwmu2/ZLyLrOlLRTm4TegW7UTyQVtSsmqPruHWnxKaQqfJLSJrc+5quQZ6XPRTiA== X-Received: by 2002:adf:d84e:0:b0:2c6:e827:21c1 with SMTP id k14-20020adfd84e000000b002c6e82721c1mr4659805wrl.50.1680712408933; Wed, 05 Apr 2023 09:33:28 -0700 (PDT) Received: from ?IPv6:2001:8a0:f925:8700::1fe? ([2001:8a0:f925:8700::1fe]) by smtp.gmail.com with ESMTPSA id d7-20020adfe2c7000000b002d419f661d6sm15457659wrj.82.2023.04.05.09.33.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Apr 2023 09:33:28 -0700 (PDT) Subject: Re: [PATCH] Modify align-c/align-c++ test case for AIX To: Aditya Kamath1 , Ulrich Weigand , "gdb-patches@sourceware.org" , "tom@tromey.com" Cc: Sangamesh Mallayya , "simon.marchi@efficios.com" References: <87edpwmzpz.fsf@tromey.com> <3636157c35660e96f2da98eb70cbac597d0a092c.camel@de.ibm.com> <87r0tqchea.fsf@tromey.com> <87zg8bave2.fsf@tromey.com> <61289f79c8c08ebe15112711954e1b05d49c92be.camel@de.ibm.com> <877cvagpeh.fsf@tromey.com> <82c24017291c399d58fc87d7ae7fc1b17c665295.camel@de.ibm.com> From: Pedro Alves Message-ID: <488d8a7c-1144-c78e-7ba7-e9be3db6c19a@palves.net> Date: Wed, 5 Apr 2023 17:33:25 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------1720BE35771BED149D42BB80" Content-Language: en-US X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------1720BE35771BED149D42BB80 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit On 2023-03-31 1:29 p.m., Aditya Kamath1 wrote: > Hi Pedro, Ulrich, Tom and community members, > > Thank you for your feedback. Please find attached the patch. {See: 0001-Modify-align-c-align-c-test-case-for-AIX.patch} > >>Like below.  Does this work for AIX? > > Hi Pedro and Respected community members. Kindly allow me to disagree with you all for the patch diff that was pasted in the previous email reply thread. > > Consider a smaller piece of the test case pasted > #include > > using namespace std; > > struct align_pair_char_x_char {char one; char two;}; > > struct align_pair_char_x_char item_char_x_char; > > *char align_pair_char_x_char::one = 0;* > > unsigned a_char_x_char > >   = alignof (struct align_pair_char_x_char); > > int main() { > >   printf ("%d \n", a_char_x_char); > > }   > > So the line highlighted in bold is a problem. This line is also there in the patch diff that was pasted in the previous email reply thread.  This is not allowed. We are trying to access something we should not. In case we want to initialise any data member, we need to do it via a constructor. I'm super confused. I don't get a line like the one you highlighted in the generated code at all. > > In AIX, I can see 'char align_pair_char_x_unsigned_char::one' is not a static data member of 'struct align_pair_char_x_unsigned_char' error How did you get that line in the generated code after my patch? Note the patch has: > diff --git a/gdb/testsuite/gdb.base/align.exp.tcl b/gdb/testsuite/gdb.base/align.exp.tcl > index 6a75a14d887..550afe1c47d 100644 > --- a/gdb/testsuite/gdb.base/align.exp.tcl > +++ b/gdb/testsuite/gdb.base/align.exp.tcl > @@ -94,12 +94,15 @@ proc prepare_test_source_file { lang } { > puts $outfile "DEF_WITH_1_STATIC ($utype, $uinner);" > set joined "static_${utype}_x_${uinner}" > puts $outfile "struct align_pair_$joined item_${joined};" > + puts $outfile "$utype align_pair_${joined}::one = 0;" > puts $outfile "unsigned a_${joined}" > puts $outfile " = ${align_func} (struct align_pair_${joined});" > > puts $outfile "DEF_WITH_2_STATIC ($utype, $uinner);" > set joined "static_${utype}_x_static_${uinner}" > puts $outfile "struct align_pair_$joined item_${joined};" > + puts $outfile "$utype align_pair_${joined}::one = 0;" > + puts $outfile "$uinner align_pair_${joined}::two = 0;" > puts $outfile "unsigned a_${joined}" > puts $outfile " = ${align_func} (struct align_pair_${joined});" > } DEF_WITH_1_STATIC and DEF_WITH_2_STATIC look like this: #define DEF_WITH_1_STATIC(T,U) struct align_pair_static_ ## T ## _x_ ## U { static T one; U two; } #define DEF_WITH_2_STATIC(T,U) struct align_pair_static_ ## T ## _x_static_ ## U { static T one; static U two; } The first has one static field, the second has two static fields. The lines I added in the patch hunk above are meant to initialize those static fields. That's why I have: Initialize one static field here: puts $outfile "DEF_WITH_1_STATIC ($utype, $uinner);" ... puts $outfile "$utype align_pair_${joined}::one = 0;" Initialize two static fields here: puts $outfile "DEF_WITH_2_STATIC ($utype, $uinner);" ... puts $outfile "$utype align_pair_${joined}::one = 0;" puts $outfile "$uinner align_pair_${joined}::two = 0;" Both of these commands came out empty for me, meaning the "::one" and "::two" initializations are only done on lines with types that have "static" in their name: $ grep "::one" testsuite/outputs/gdb.base/align-c++/align.cpp | grep -v static $ grep "::two" testsuite/outputs/gdb.base/align-c++/align.cpp | grep -v static Diffing the align.cpp file generated before my patch against a align.cpp file generated after my patch, I get a lot of changes that looks like this: --- align.cpp 2023-04-05 17:20:54.002858720 +0100 +++ align-pedro.cpp 2023-04-05 17:20:33.228766715 +0100 @@ -28,10 +28,13 @@ unsigned a_char_x_char = alignof (struct align_pair_char_x_char); DEF_WITH_1_STATIC (char, char); struct align_pair_static_char_x_char item_static_char_x_char; +char align_pair_static_char_x_char::one = 0; unsigned a_static_char_x_char = alignof (struct align_pair_static_char_x_char); DEF_WITH_2_STATIC (char, char); struct align_pair_static_char_x_static_char item_static_char_x_static_char; +char align_pair_static_char_x_static_char::one = 0; +char align_pair_static_char_x_static_char::two = 0; ... Again, the "::one" and "::one" lines only appear on types that have "static" in their name. > > > I did not try in PowerPc Linux or another Linux machine. But from the little knowledge I have, it should not work there as well. Someone needs to check this in Linux. May be you or Ulrich or Tom can confirm this from your experience in Linux.  Let me know. > I had tested my patch on Linux before sending it. It works here just fine, like so: $ make check TESTS="gdb.*/align*.exp" Running /home/pedro/rocm/gdb/build-master/gdb/testsuite/../../../src/gdb/testsuite/gdb.base/align-c++.exp ... Running /home/pedro/rocm/gdb/build-master/gdb/testsuite/../../../src/gdb/testsuite/gdb.cp/align.exp ... Running /home/pedro/rocm/gdb/build-master/gdb/testsuite/../../../src/gdb/testsuite/gdb.base/align-c.exp ... === gdb Summary === # of expected passes 3450 Your patch doesn't fix the issue I pointed at in the commit log, this one: For the C++ test, that reveals that the static variable members of the generated structs are not defined anywhere, leading to undefined references. Fixed by emitting initialization for all static members. I.e., if I test with: $ make check TESTS="gdb.*/align-*.exp" RUNTESTFLAGS="CC_FOR_TARGET='clang -flto' CXX_FOR_TARGET='clang++ -flto'" then I see hundreds of failures like these: print /d a_static_char_x_char Missing ELF symbol "a_static_char_x_char". (gdb) FAIL: gdb.base/align-c++.exp: get integer valueof "a_static_char_x_char" ... Going back to this: > So the line highlighted in bold is a problem. This line is also there in the patch diff that was pasted in the previous email reply thread. This is not allowed. We are trying to access something we should not. In case we want to initialise any data member, we need to do it via a constructor. I'm attaching the attach.cpp file that the testsuite generates for me. --------------1720BE35771BED149D42BB80 Content-Type: application/gzip; name="align.cpp.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="align.cpp.gz" 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 --------------1720BE35771BED149D42BB80--