r360998 - Fix crash if, during evaluation of __builtin_object_size, we try to load

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Fri May 17 10:31:21 PDT 2019


I attempted to fix this in 361054.

*From: *Nico Weber <thakis at chromium.org>
*Date: *Fri, May 17, 2019 at 1:16 PM
*To: *Richard Smith
*Cc: *cfe-commits

Also on the LLVM waterfall:
> http://lab.llvm.org:8011/builders/clang-x64-windows-msvc
>
> http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/6937/steps/stage%201%20check/logs/stdio
>
> (Same error.)
>
> *From: *Nico Weber <thakis at chromium.org>
> *Date: *Fri, May 17, 2019 at 1:14 PM
> *To: *Richard Smith
> *Cc: *cfe-commits
>
> -- Testing: 49966 tests, 32 threads --
>> Testing: 0 .. 10.. 20..
>> FAIL: Clang :: SemaCXX/builtin-object-size-cxx14.cpp (14324 of 49966)
>> ******************** TEST 'Clang ::
>> SemaCXX/builtin-object-size-cxx14.cpp' FAILED ********************
>> Script:
>> --
>> : 'RUN: at line 1';
>> c:\b\s\w\ir\k\src\third_party\llvm-bootstrap\bin\clang.exe -cc1
>> -internal-isystem
>> c:\b\s\w\ir\k\src\third_party\llvm-bootstrap\lib\clang\9.0.0\include
>> -nostdsysteminc -fsyntax-only -verify -std=c++14
>> C:\b\s\w\ir\k\src\third_party\llvm\tools\clang\test\SemaCXX\builtin-object-size-cxx14.cpp
>> --
>> Exit Code: 1
>>
>> Command Output (stdout):
>> --
>> $ ":" "RUN: at line 1"
>> $ "c:\b\s\w\ir\k\src\third_party\llvm-bootstrap\bin\clang.exe" "-cc1"
>> "-internal-isystem"
>> "c:\b\s\w\ir\k\src\third_party\llvm-bootstrap\lib\clang\9.0.0\include"
>> "-nostdsysteminc" "-fsyntax-only" "-verify" "-std=c++14"
>> "C:\b\s\w\ir\k\src\third_party\llvm\tools\clang\test\SemaCXX\builtin-object-size-cxx14.cpp"
>> # command stderr:
>> error: 'warning' diagnostics seen but not expected:
>>   File
>> C:\b\s\w\ir\k\src\third_party\llvm\tools\clang\test\SemaCXX\builtin-object-size-cxx14.cpp
>> Line 105: implicit conversion from 'unsigned long long' to 'const long'
>> changes value from 18446744073709551615 to -1
>> 1 error generated.
>>
>> error: command failed with exit status: 1
>>
>>
>> https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket.appspot.com/8913196957157807760/+/steps/package_clang/0/stdout
>>
>> *From: *Nico Weber <thakis at chromium.org>
>> *Date: *Fri, May 17, 2019 at 1:13 PM
>> *To: *Richard Smith
>> *Cc: *cfe-commits
>>
>> The test fails on Windows:
>>>
>>>
>>> *From: *Richard Smith via cfe-commits <cfe-commits at lists.llvm.org>
>>> *Date: *Fri, May 17, 2019 at 3:58 AM
>>> *To: * <cfe-commits at lists.llvm.org>
>>>
>>> Author: rsmith
>>>> Date: Fri May 17 01:01:34 2019
>>>> New Revision: 360998
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=360998&view=rev
>>>> Log:
>>>> Fix crash if, during evaluation of __builtin_object_size, we try to load
>>>> through an invalid base.
>>>>
>>>> Modified:
>>>>     cfe/trunk/lib/AST/ExprConstant.cpp
>>>>     cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp
>>>>
>>>> Modified: cfe/trunk/lib/AST/ExprConstant.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=360998&r1=360997&r2=360998&view=diff
>>>>
>>>> ==============================================================================
>>>> --- cfe/trunk/lib/AST/ExprConstant.cpp (original)
>>>> +++ cfe/trunk/lib/AST/ExprConstant.cpp Fri May 17 01:01:34 2019
>>>> @@ -3285,6 +3285,11 @@ static bool AreElementsOfSameArray(QualT
>>>>  static CompleteObject findCompleteObject(EvalInfo &Info, const Expr *E,
>>>>                                           AccessKinds AK, const LValue
>>>> &LVal,
>>>>                                           QualType LValType) {
>>>> +  if (LVal.InvalidBase) {
>>>> +    Info.FFDiag(E);
>>>> +    return CompleteObject();
>>>> +  }
>>>> +
>>>>    if (!LVal.Base) {
>>>>      Info.FFDiag(E, diag::note_constexpr_access_null) << AK;
>>>>      return CompleteObject();
>>>>
>>>> Modified: cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp?rev=360998&r1=360997&r2=360998&view=diff
>>>>
>>>> ==============================================================================
>>>> --- cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp (original)
>>>> +++ cfe/trunk/test/SemaCXX/builtin-object-size-cxx14.cpp Fri May 17
>>>> 01:01:34 2019
>>>> @@ -97,3 +97,10 @@ void tooSmallBuf() {
>>>>    copy5CharsIntoStrict(small.buf); // expected-error{{no matching
>>>> function for call}}
>>>>  }
>>>>  }
>>>> +
>>>> +namespace InvalidBase {
>>>> +  // Ensure this doesn't crash.
>>>> +  struct S { const char *name; };
>>>> +  S invalid_base();
>>>> +  constexpr long bos_name = __builtin_object_size(invalid_base().name,
>>>> 1);
>>>> +}
>>>>
>>>>
>>>> _______________________________________________
>>>> cfe-commits mailing list
>>>> cfe-commits at lists.llvm.org
>>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>
>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190517/ca43ea3b/attachment-0001.html>


More information about the cfe-commits mailing list