<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>197920</bug_id>
          
          <creation_ts>2019-05-15 11:20:23 -0700</creation_ts>
          <short_desc>[CMake] Add support for building with CFI</short_desc>
          <delta_ts>2022-02-25 13:20:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CMake</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Christopher Reid">chris.reid</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>contact+bugs.webkit.org</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536503</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-05-15 11:20:23 -0700</bug_when>
    <thetext>Support building with CFI on clang in cmake builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536511</commentid>
    <comment_count>1</comment_count>
      <attachid>369974</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-05-15 11:36:54 -0700</bug_when>
    <thetext>Created attachment 369974
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536512</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-15 11:39:38 -0700</bug_when>
    <thetext>Attachment 369974 did not pass style-queue:


ERROR: Source/cmake/WebKitCompilerFlags.cmake:231:  One space between command &quot;endif&quot; and its parentheses, should be &quot;endif (&quot;  [whitespace/parentheses] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536516</commentid>
    <comment_count>3</comment_count>
      <attachid>369975</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-05-15 11:45:52 -0700</bug_when>
    <thetext>Created attachment 369975
style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536531</commentid>
    <comment_count>4</comment_count>
      <attachid>369975</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-15 12:06:37 -0700</bug_when>
    <thetext>Comment on attachment 369975
style fix

View in context: https://bugs.webkit.org/attachment.cgi?id=369975&amp;action=review

Cool, but needs some further discussion, particularly relating to -fvisibility=hidden.

&gt; ChangeLog:9
&gt; +        cfi-debug is using cfi recovery flags to not trap on errors and continue exectution.

execution

&gt; Source/cmake/OptionsGTK.cmake:379
&gt; +if (ENABLED_HIDDEN_VISIBILITY)
&gt; +    SET_AND_EXPOSE_TO_BUILD(USE_EXPORT_MACROS ON)
&gt; +endif ()

If you got a build to work with -fvisibility=hidden, then we should switch to using -fvisibility=hidden by default, because that would be wonderful.

I doubt you actually got this working properly, though. There are going to be problems. E.g. global/singleton templates declared in JSC or lower layers need to be exported weak symbols to ensure the instantiations are actually shared between libjavascriptcoregtk and libwebkit2gtk. Specifically, I worry that PerProcess&lt;&gt; objects declared in JSC, WTF, or bmalloc are now going to actually exist twice, once for each library.

&gt; Source/cmake/WebKitCompilerFlags.cmake:221
&gt; +                    set(CFI_FLAGS &quot;-fno-sanitize-trap=cfi -fsanitize-recover=cfi&quot;)

cfi-debug is useful why? You really want to continue execution past a  CFI issue?

&gt; Source/cmake/WebKitCompilerFlags.cmake:225
&gt; +                set(CFI_FLAGS &quot;${CFI_FLAGS} -fno-sanitize=cfi-derived-cast,cfi-unrelated-cast -fsanitize-blacklist=${TOOLS_DIR}/cfi/blacklist.txt&quot;)

So this blacklist won&apos;t work at all in tarball builds. I suppose that&apos;s not the end of the world, but it&apos;d be nice to have a failure case nicer than &quot;whoops the file doesn&apos;t exist!&quot; It would be highly-desirable to make the code work without the blacklist, by changing the code to avoid constructs that trigger CFI. Especially since it looks like there&apos;s only a couple places that need to be looked at.

I&apos;m very skeptical of the need to disable cfi-derived-cast and cfi-unrelated-cast checks. This suggests we have problematic code that should be fixed. Of course, it makes sense to allow running WebKit with CFI now, with a mind towards improving this situation in the future, so that shouldn&apos;t be a blocker.

&gt; Source/cmake/WebKitCompilerFlags.cmake:247
&gt; +    string(REGEX MATCHALL &quot;-fvisibility=hidden&quot; ENABLED_HIDDEN_VISIBILITY ${CMAKE_CXX_FLAGS})

You are manually passing -fvisibility=hidden to test this with GTK? Surely that shouldn&apos;t be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536542</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-05-15 12:27:12 -0700</bug_when>
    <thetext>BTW: we could try turning on -fvisibility=hidden for WPE (it actually used to use it!), but I don&apos;t think it&apos;s possible for GTK, at least not without a lot of thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538054</commentid>
    <comment_count>6</comment_count>
      <attachid>369975</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2019-05-21 16:55:32 -0700</bug_when>
    <thetext>Comment on attachment 369975
style fix

View in context: https://bugs.webkit.org/attachment.cgi?id=369975&amp;action=review

&gt;&gt; ChangeLog:9
&gt;&gt; +        cfi-debug is using cfi recovery flags to not trap on errors and continue exectution.
&gt; 
&gt; execution

Oops, will fix

&gt;&gt; Source/cmake/OptionsGTK.cmake:379
&gt;&gt;  if (ENABLED_COMPILER_SANITIZERS)
&gt;&gt;      set(ENABLE_INTROSPECTION OFF)
&gt;&gt;  endif ()
&gt;&gt;  
&gt;&gt; +if (ENABLED_HIDDEN_VISIBILITY)
&gt;&gt; +    SET_AND_EXPOSE_TO_BUILD(USE_EXPORT_MACROS ON)
&gt;&gt; +endif ()
&gt; 
&gt; If you got a build to work with -fvisibility=hidden, then we should switch to using -fvisibility=hidden by default, because that would be wonderful.
&gt; 
&gt; I doubt you actually got this working properly, though. There are going to be problems. E.g. global/singleton templates declared in JSC or lower layers need to be exported weak symbols to ensure the instantiations are actually shared between libjavascriptcoregtk and libwebkit2gtk. Specifically, I worry that PerProcess&lt;&gt; objects declared in JSC, WTF, or bmalloc are now going to actually exist twice, once for each library.

We were initially testing out hidden visibility and CFI in just jsc, I haven&apos;t tested cfi with all of webkit much yet.
I tried out using hidden visibility with all of GTK. It currently compiles and runs layout tests, there does seem to be a bunch issues that need sorting out.
The issues you mentioned sound like they would also impact playstation so it would be good for us to help sort them out.
I created a new bug for that https://bugs.webkit.org/show_bug.cgi?id=198093.

&gt;&gt; Source/cmake/WebKitCompilerFlags.cmake:221
&gt;&gt; +                    set(CFI_FLAGS &quot;-fno-sanitize-trap=cfi -fsanitize-recover=cfi&quot;)
&gt; 
&gt; cfi-debug is useful why? You really want to continue execution past a  CFI issue?

We&apos;ve hit some cases where I believe what&apos;s happening is the compiler sees code that will allways trigger CFI and just emits an Illegal instruction instead of CFI handlers.
Using recovery flags makes it much easier to figure out what error was hit instead of having to figure out why the compiler suddenly stopped compiling out a function.
This isn&apos;t meant to be used for production builds, just for discovering CFI failure causes.

&gt;&gt; Source/cmake/WebKitCompilerFlags.cmake:225
&gt;&gt; +                set(CFI_FLAGS &quot;${CFI_FLAGS} -fno-sanitize=cfi-derived-cast,cfi-unrelated-cast -fsanitize-blacklist=${TOOLS_DIR}/cfi/blacklist.txt&quot;)
&gt; 
&gt; So this blacklist won&apos;t work at all in tarball builds. I suppose that&apos;s not the end of the world, but it&apos;d be nice to have a failure case nicer than &quot;whoops the file doesn&apos;t exist!&quot; It would be highly-desirable to make the code work without the blacklist, by changing the code to avoid constructs that trigger CFI. Especially since it looks like there&apos;s only a couple places that need to be looked at.
&gt; 
&gt; I&apos;m very skeptical of the need to disable cfi-derived-cast and cfi-unrelated-cast checks. This suggests we have problematic code that should be fixed. Of course, it makes sense to allow running WebKit with CFI now, with a mind towards improving this situation in the future, so that shouldn&apos;t be a blocker.

I&apos;ll look at getting it working for tarball builds. 

It would be nice to get the cast checks enabled in the future. It seems like historically there&apos;s been issues cfi-derived-cast or cfi-unrelated-cast would catch https://trac.webkit.org/changeset/145013/webkit.

&gt;&gt; Source/cmake/WebKitCompilerFlags.cmake:247
&gt;&gt; +    string(REGEX MATCHALL &quot;-fvisibility=hidden&quot; ENABLED_HIDDEN_VISIBILITY ${CMAKE_CXX_FLAGS})
&gt; 
&gt; You are manually passing -fvisibility=hidden to test this with GTK? Surely that shouldn&apos;t be needed.

Yeah this isn&apos;t needed if we get it enabled by default for GTK.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369974</attachid>
            <date>2019-05-15 11:36:54 -0700</date>
            <delta_ts>2019-05-15 11:46:12 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cfi.diff</filename>
            <type>text/plain</type>
            <size>4856</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4OTBiMmQ4Zjk0Yi4uYzc3
NmU1Nzc2N2EgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxOS0wNS0xNSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CisKKyAgICAgICAgW0NNYWtlXSBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBDRkkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
Y2ZpIGFuZCBjZmktZGVidWcgbW9kZXMgZm9yIEVOQUJMRV9TQU5JVElaRVJTIGNtYWtlIHZhcmlh
YmxlLgorICAgICAgICBjZmktZGVidWcgaXMgdXNpbmcgY2ZpIHJlY292ZXJ5IGZsYWdzIHRvIG5v
dCB0cmFwIG9uIGVycm9ycyBhbmQgY29udGludWUgZXhlY3R1dGlvbi4KKworICAgICAgICBKU0Mg
d2l0aCBDRkkgZW5hYmxlZCBhbmQgSklUIGRpc2FibGVkIGlzIG1vc3RseSBtb3N0bHkgcGFzc2lu
ZyB0aGUgc2FtZSBhbW91bnQgb2YganNjCisgICAgICAgIHRlc3RzIGFzIHdpdGhvdXQgQ0ZJIGFu
ZCBMVE8uIFRoZSBjZmkgKi1jYXN0IGNoZWNrcyBhcmUgY3VycmVudGx5IGRpc2FibGVkCisgICAg
ICAgIHBlciBZdXN1a2UncyBzdWdnZXN0aW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTY0NzIuCisKKyAgICAgICAgQWxzbyBtb3ZlZCB0aGUgbHB0aHJlYWRz
IGxpbmsgZmxhZyB0byBvbmx5IGJlIHVzZWQgd2l0aCBnY2MgYXMgaXQgd2FzIGNhdXNpbmcKKyAg
ICAgICAgYnVpbGQgZXJyb3JzIG9uIFBsYXlTdGF0aW9uLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdENvbXBp
bGVyRmxhZ3MuY21ha2U6CisKIDIwMTktMDUtMDcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBvcHRpb24gdG8gYnVpbGQtd2Via2l0IHRvIGNvbnRyb2wg
d2hldGhlciBvciBub3QgWENCdWlsZCBpcyB1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGQy
OTBiZWZmZGQ5Li45YjVjNjM1ODMxNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM3NCw2ICsz
NzQsMTAgQEAgaWYgKEVOQUJMRURfQ09NUElMRVJfU0FOSVRJWkVSUykKICAgICBzZXQoRU5BQkxF
X0lOVFJPU1BFQ1RJT04gT0ZGKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRURfSElEREVOX1ZJU0lC
SUxJVFkpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0VYUE9SVF9NQUNST1MgT04p
CitlbmRpZiAoKQorCiAjIE92ZXJyaWRlIHRoZSBjYWNoZWQgdmFyaWFibGVzLCBndGstZG9jIGFu
ZCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZG8gbm90IHJlYWxseSB3b3JrIHdoZW4gY3Jvc3MtYnVp
bGRpbmcuCiBpZiAoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCiAgICAgc2V0KEVOQUJMRV9HVEtET0Mg
T0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdENvbXBpbGVyRmxhZ3MuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvV2ViS2l0Q29tcGlsZXJGbGFncy5jbWFrZQppbmRleCBmNTZhNDdiYmU0
Yi4uM2ZmMTZjYzU1NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZs
YWdzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdzLmNtYWtlCkBA
IC0xODQsNyArMTg0LDcgQEAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKICAgICAgICAg
ICAgIGZpbmRfbGlicmFyeShDTEFOR19BU0FOX0xJQlJBUlkgY2xhbmdfcnQuYXNhbl9keW5hbWlj
X3J1bnRpbWVfdGh1bmsteDg2XzY0ICR7Q0xBTkdfTElCX1BBVEh9KQogICAgICAgICAgICAgZmlu
ZF9saWJyYXJ5KENMQU5HX0FTQU5fUlRfTElCUkFSWSBjbGFuZ19ydC5hc2FuX2R5bmFtaWMteDg2
XzY0IFBBVEhTICR7Q0xBTkdfTElCX1BBVEh9KQogICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9M
SU5LX0ZMQUdTICJcIiR7Q0xBTkdfQVNBTl9MSUJSQVJZfVwiIFwiJHtDTEFOR19BU0FOX1JUX0xJ
QlJBUll9XCIiKQotICAgICAgICBlbHNlICgpCisgICAgICAgIGVsc2VpZiAoQ01BS0VfQ09NUElM
RVJfSVNfR05VQ1hYKQogICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9MSU5LX0ZMQUdTICItbHB0
aHJlYWQiKQogICAgICAgICBlbmRpZiAoKQogCkBAIC0yMTIsNiArMjEyLDIwIEBAIGlmIChDT01Q
SUxFUl9JU19HQ0NfT1JfQ0xBTkcpCiAgICAgICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9DT01Q
SUxFUl9GTEFHUyAiLWZzYW5pdGl6ZT1sZWFrICR7U0FOSVRJWkVSX0NPTVBJTEVSX0ZMQUdTfSIp
CiAgICAgICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9MSU5LX0ZMQUdTICItZnNhbml0aXplPWxl
YWsgJHtTQU5JVElaRVJfTElOS19GTEFHU30iKQogCisgICAgICAgICAgICBlbHNlaWYgKCR7U0FO
SVRJWkVSfSBNQVRDSEVTICJjZmkiIEFORCBDT01QSUxFUl9JU19DTEFORykKKyAgICAgICAgICAg
ICAgICBpZiAoTk9UIExUT19NT0RFKQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKEZBVEFM
X0VSUk9SICJDRkkgcmVxdWlyZXMgYSBMVE8gbW9kZSBzcGVjaWZpZWQiKQorICAgICAgICAgICAg
ICAgIGVuZGlmICgpCisKKyAgICAgICAgICAgICAgICBpZiAoJHtTQU5JVElaRVJ9IE1BVENIRVMg
ImNmaS1kZWJ1ZyIpCisgICAgICAgICAgICAgICAgICAgIHNldChDRklfRkxBR1MgIi1mbm8tc2Fu
aXRpemUtdHJhcD1jZmkgLWZzYW5pdGl6ZS1yZWNvdmVyPWNmaSIpCisgICAgICAgICAgICAgICAg
ZW5kaWYoKQorCisgICAgICAgICAgICAgICAgc2V0KENGSV9GTEFHUyAiJHtDRklfRkxBR1N9IC1m
dmlzaWJpbGl0eT1oaWRkZW4gLWZzYW5pdGl6ZS1jZmktY3Jvc3MtZHNvIC1mc2FuaXRpemU9Y2Zp
IikKKyAgICAgICAgICAgICAgICBzZXQoQ0ZJX0ZMQUdTICIke0NGSV9GTEFHU30gLWZuby1zYW5p
dGl6ZT1jZmktZGVyaXZlZC1jYXN0LGNmaS11bnJlbGF0ZWQtY2FzdCAtZnNhbml0aXplLWJsYWNr
bGlzdD0ke1RPT0xTX0RJUn0vY2ZpL2JsYWNrbGlzdC50eHQiKQorICAgICAgICAgICAgICAgIHNl
dChTQU5JVElaRVJfQ09NUElMRVJfRkxBR1MgIiR7Q0ZJX0ZMQUdTfSAke1NBTklUSVpFUl9DT01Q
SUxFUl9GTEFHU30iKQorICAgICAgICAgICAgICAgIHNldChTQU5JVElaRVJfTElOS19GTEFHUyAi
JHtDRklfRkxBR1N9ICR7U0FOSVRJWkVSX0xJTktfRkxBR1N9IikKKwogICAgICAgICAgICAgZWxz
ZSAoKQogICAgICAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIlVuc3VwcG9ydGVkIHNh
bml0aXplcjogJHtTQU5JVElaRVJ9IikKICAgICAgICAgICAgIGVuZGlmICgpCkBAIC0yMjksNiAr
MjQzLDEwIEBAIGlmIChOT1QgTVNWQykKICAgICBzdHJpbmcoUkVHRVggTUFUQ0hBTEwgIi1mc2Fu
aXRpemU9W14gXSoiIEVOQUJMRURfQ09NUElMRVJfU0FOSVRJWkVSUyAke0NNQUtFX0NYWF9GTEFH
U30pCiBlbmRpZiAoKQogCitpZiAoTk9UIE1TVkMpCisgICAgc3RyaW5nKFJFR0VYIE1BVENIQUxM
ICItZnZpc2liaWxpdHk9aGlkZGVuIiBFTkFCTEVEX0hJRERFTl9WSVNJQklMSVRZICR7Q01BS0Vf
Q1hYX0ZMQUdTfSkKK2VuZGlmICgpCisKIGlmIChVTklYIEFORCBOT1QgQVBQTEUgQU5EIE5PVCBF
TkFCTEVEX0NPTVBJTEVSX1NBTklUSVpFUlMpCiAgICAgc2V0KENNQUtFX1NIQVJFRF9MSU5LRVJf
RkxBR1MgIi1XbCwtLW5vLXVuZGVmaW5lZCAke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9IikK
IGVuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYmYzY2ExZDc2NmYuLmZiMWI2NWYxOTY4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDUtMTUgIENo
cmlzdG9waGVyIFJlaWQgIDxjaHJpcy5yZWlkQHNvbnkuY29tPgorCisgICAgICAgIFtDTWFrZV0g
QWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggQ0ZJCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc5MjAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNmaS9ibGFja2xpc3QudHh0OiBBZGRlZC4KKwog
MjAxOS0wNS0wNyAgT3Jpb2wgQnJ1ZmF1ICA8b2JydWZhdUBpZ2FsaWEuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQuIEFkZCBteXNlbGYgYXMgYSBjb21taXR0ZXIuCmRpZmYgLS1naXQgYS9Ub29s
cy9jZmkvYmxhY2tsaXN0LnR4dCBiL1Rvb2xzL2NmaS9ibGFja2xpc3QudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMjE1YmEyMTRiMgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL2NmaS9ibGFja2xpc3QudHh0CkBAIC0wLDAgKzEsOSBAQAorIyBDb25zdHJ1Y3Rz
IGEgZnVuY3Rpb24gcG9pbnRlciB0byBjYWxsIGZyb20gYSB1aW50cHRyX3QuCitbY2ZpLWljYWxs
XQorZnVuOipnZXRJbml0aWFsaXplZE9uTWFpblRocmVhZCoKKworIyBKUyBBUEkgY2FsbGJhY2tz
CitbY2ZpLWljYWxsXQorc3JjOipTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2sq
RnVuY3Rpb24qLmgKK3NyYzoqU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFja0Z1
bmN0aW9uLmgKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>369975</attachid>
            <date>2019-05-15 11:45:52 -0700</date>
            <delta_ts>2019-05-15 12:06:37 -0700</delta_ts>
            <desc>style fix</desc>
            <filename>cfi.diff</filename>
            <type>text/plain</type>
            <size>4857</size>
            <attacher name="Christopher Reid">chris.reid</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4OTBiMmQ4Zjk0Yi4uYzc3
NmU1Nzc2N2EgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMyBAQAorMjAxOS0wNS0xNSAgQ2hyaXN0b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5j
b20+CisKKyAgICAgICAgW0NNYWtlXSBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBDRkkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzkyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
Y2ZpIGFuZCBjZmktZGVidWcgbW9kZXMgZm9yIEVOQUJMRV9TQU5JVElaRVJTIGNtYWtlIHZhcmlh
YmxlLgorICAgICAgICBjZmktZGVidWcgaXMgdXNpbmcgY2ZpIHJlY292ZXJ5IGZsYWdzIHRvIG5v
dCB0cmFwIG9uIGVycm9ycyBhbmQgY29udGludWUgZXhlY3R1dGlvbi4KKworICAgICAgICBKU0Mg
d2l0aCBDRkkgZW5hYmxlZCBhbmQgSklUIGRpc2FibGVkIGlzIG1vc3RseSBtb3N0bHkgcGFzc2lu
ZyB0aGUgc2FtZSBhbW91bnQgb2YganNjCisgICAgICAgIHRlc3RzIGFzIHdpdGhvdXQgQ0ZJIGFu
ZCBMVE8uIFRoZSBjZmkgKi1jYXN0IGNoZWNrcyBhcmUgY3VycmVudGx5IGRpc2FibGVkCisgICAg
ICAgIHBlciBZdXN1a2UncyBzdWdnZXN0aW9uIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTY0NzIuCisKKyAgICAgICAgQWxzbyBtb3ZlZCB0aGUgbHB0aHJlYWRz
IGxpbmsgZmxhZyB0byBvbmx5IGJlIHVzZWQgd2l0aCBnY2MgYXMgaXQgd2FzIGNhdXNpbmcKKyAg
ICAgICAgYnVpbGQgZXJyb3JzIG9uIFBsYXlTdGF0aW9uLgorCisgICAgICAgICogU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2U6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdENvbXBp
bGVyRmxhZ3MuY21ha2U6CisKIDIwMTktMDUtMDcgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEFkZCBvcHRpb24gdG8gYnVpbGQtd2Via2l0IHRvIGNvbnRyb2wg
d2hldGhlciBvciBub3QgWENCdWlsZCBpcyB1c2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCmluZGV4IGQy
OTBiZWZmZGQ5Li45YjVjNjM1ODMxNiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNH
VEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKQEAgLTM3NCw2ICsz
NzQsMTAgQEAgaWYgKEVOQUJMRURfQ09NUElMRVJfU0FOSVRJWkVSUykKICAgICBzZXQoRU5BQkxF
X0lOVFJPU1BFQ1RJT04gT0ZGKQogZW5kaWYgKCkKIAoraWYgKEVOQUJMRURfSElEREVOX1ZJU0lC
SUxJVFkpCisgICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0VYUE9SVF9NQUNST1MgT04p
CitlbmRpZiAoKQorCiAjIE92ZXJyaWRlIHRoZSBjYWNoZWQgdmFyaWFibGVzLCBndGstZG9jIGFu
ZCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZG8gbm90IHJlYWxseSB3b3JrIHdoZW4gY3Jvc3MtYnVp
bGRpbmcuCiBpZiAoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCiAgICAgc2V0KEVOQUJMRV9HVEtET0Mg
T0ZGKQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdENvbXBpbGVyRmxhZ3MuY21ha2Ug
Yi9Tb3VyY2UvY21ha2UvV2ViS2l0Q29tcGlsZXJGbGFncy5jbWFrZQppbmRleCBmNTZhNDdiYmU0
Yi4uNmM1MDE3MTE5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZs
YWdzLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRDb21waWxlckZsYWdzLmNtYWtlCkBA
IC0xODQsNyArMTg0LDcgQEAgaWYgKENPTVBJTEVSX0lTX0dDQ19PUl9DTEFORykKICAgICAgICAg
ICAgIGZpbmRfbGlicmFyeShDTEFOR19BU0FOX0xJQlJBUlkgY2xhbmdfcnQuYXNhbl9keW5hbWlj
X3J1bnRpbWVfdGh1bmsteDg2XzY0ICR7Q0xBTkdfTElCX1BBVEh9KQogICAgICAgICAgICAgZmlu
ZF9saWJyYXJ5KENMQU5HX0FTQU5fUlRfTElCUkFSWSBjbGFuZ19ydC5hc2FuX2R5bmFtaWMteDg2
XzY0IFBBVEhTICR7Q0xBTkdfTElCX1BBVEh9KQogICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9M
SU5LX0ZMQUdTICJcIiR7Q0xBTkdfQVNBTl9MSUJSQVJZfVwiIFwiJHtDTEFOR19BU0FOX1JUX0xJ
QlJBUll9XCIiKQotICAgICAgICBlbHNlICgpCisgICAgICAgIGVsc2VpZiAoQ01BS0VfQ09NUElM
RVJfSVNfR05VQ1hYKQogICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9MSU5LX0ZMQUdTICItbHB0
aHJlYWQiKQogICAgICAgICBlbmRpZiAoKQogCkBAIC0yMTIsNiArMjEyLDIwIEBAIGlmIChDT01Q
SUxFUl9JU19HQ0NfT1JfQ0xBTkcpCiAgICAgICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9DT01Q
SUxFUl9GTEFHUyAiLWZzYW5pdGl6ZT1sZWFrICR7U0FOSVRJWkVSX0NPTVBJTEVSX0ZMQUdTfSIp
CiAgICAgICAgICAgICAgICAgc2V0KFNBTklUSVpFUl9MSU5LX0ZMQUdTICItZnNhbml0aXplPWxl
YWsgJHtTQU5JVElaRVJfTElOS19GTEFHU30iKQogCisgICAgICAgICAgICBlbHNlaWYgKCR7U0FO
SVRJWkVSfSBNQVRDSEVTICJjZmkiIEFORCBDT01QSUxFUl9JU19DTEFORykKKyAgICAgICAgICAg
ICAgICBpZiAoTk9UIExUT19NT0RFKQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKEZBVEFM
X0VSUk9SICJDRkkgcmVxdWlyZXMgYSBMVE8gbW9kZSBzcGVjaWZpZWQiKQorICAgICAgICAgICAg
ICAgIGVuZGlmICgpCisKKyAgICAgICAgICAgICAgICBpZiAoJHtTQU5JVElaRVJ9IE1BVENIRVMg
ImNmaS1kZWJ1ZyIpCisgICAgICAgICAgICAgICAgICAgIHNldChDRklfRkxBR1MgIi1mbm8tc2Fu
aXRpemUtdHJhcD1jZmkgLWZzYW5pdGl6ZS1yZWNvdmVyPWNmaSIpCisgICAgICAgICAgICAgICAg
ZW5kaWYgKCkKKworICAgICAgICAgICAgICAgIHNldChDRklfRkxBR1MgIiR7Q0ZJX0ZMQUdTfSAt
ZnZpc2liaWxpdHk9aGlkZGVuIC1mc2FuaXRpemUtY2ZpLWNyb3NzLWRzbyAtZnNhbml0aXplPWNm
aSIpCisgICAgICAgICAgICAgICAgc2V0KENGSV9GTEFHUyAiJHtDRklfRkxBR1N9IC1mbm8tc2Fu
aXRpemU9Y2ZpLWRlcml2ZWQtY2FzdCxjZmktdW5yZWxhdGVkLWNhc3QgLWZzYW5pdGl6ZS1ibGFj
a2xpc3Q9JHtUT09MU19ESVJ9L2NmaS9ibGFja2xpc3QudHh0IikKKyAgICAgICAgICAgICAgICBz
ZXQoU0FOSVRJWkVSX0NPTVBJTEVSX0ZMQUdTICIke0NGSV9GTEFHU30gJHtTQU5JVElaRVJfQ09N
UElMRVJfRkxBR1N9IikKKyAgICAgICAgICAgICAgICBzZXQoU0FOSVRJWkVSX0xJTktfRkxBR1Mg
IiR7Q0ZJX0ZMQUdTfSAke1NBTklUSVpFUl9MSU5LX0ZMQUdTfSIpCisKICAgICAgICAgICAgIGVs
c2UgKCkKICAgICAgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJVbnN1cHBvcnRlZCBz
YW5pdGl6ZXI6ICR7U0FOSVRJWkVSfSIpCiAgICAgICAgICAgICBlbmRpZiAoKQpAQCAtMjI5LDYg
KzI0MywxMCBAQCBpZiAoTk9UIE1TVkMpCiAgICAgc3RyaW5nKFJFR0VYIE1BVENIQUxMICItZnNh
bml0aXplPVteIF0qIiBFTkFCTEVEX0NPTVBJTEVSX1NBTklUSVpFUlMgJHtDTUFLRV9DWFhfRkxB
R1N9KQogZW5kaWYgKCkKIAoraWYgKE5PVCBNU1ZDKQorICAgIHN0cmluZyhSRUdFWCBNQVRDSEFM
TCAiLWZ2aXNpYmlsaXR5PWhpZGRlbiIgRU5BQkxFRF9ISURERU5fVklTSUJJTElUWSAke0NNQUtF
X0NYWF9GTEFHU30pCitlbmRpZiAoKQorCiBpZiAoVU5JWCBBTkQgTk9UIEFQUExFIEFORCBOT1Qg
RU5BQkxFRF9DT01QSUxFUl9TQU5JVElaRVJTKQogICAgIHNldChDTUFLRV9TSEFSRURfTElOS0VS
X0ZMQUdTICItV2wsLS1uby11bmRlZmluZWQgJHtDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTfSIp
CiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJmM2NhMWQ3NjZmLi5mYjFiNjVmMTk2OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA1LTE1ICBD
aHJpc3RvcGhlciBSZWlkICA8Y2hyaXMucmVpZEBzb255LmNvbT4KKworICAgICAgICBbQ01ha2Vd
IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIENGSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3OTIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjZmkvYmxhY2tsaXN0LnR4dDogQWRkZWQuCisK
IDIwMTktMDUtMDcgIE9yaW9sIEJydWZhdSAgPG9icnVmYXVAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBBZGQgbXlzZWxmIGFzIGEgY29tbWl0dGVyLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvY2ZpL2JsYWNrbGlzdC50eHQgYi9Ub29scy9jZmkvYmxhY2tsaXN0LnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzIxNWJhMjE0YjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9jZmkvYmxhY2tsaXN0LnR4dApAQCAtMCwwICsxLDkgQEAKKyMgQ29uc3RydWN0
cyBhIGZ1bmN0aW9uIHBvaW50ZXIgdG8gY2FsbCBmcm9tIGEgdWludHB0cl90LgorW2NmaS1pY2Fs
bF0KK2Z1bjoqZ2V0SW5pdGlhbGl6ZWRPbk1haW5UaHJlYWQqCisKKyMgSlMgQVBJIGNhbGxiYWNr
cworW2NmaS1pY2FsbF0KK3NyYzoqU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
KkZ1bmN0aW9uKi5oCitzcmM6KlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oCisK
</data>
<flag name="review"
          id="385990"
          type_id="1"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>