<?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>171240</bug_id>
          
          <creation_ts>2017-04-24 12:07:47 -0700</creation_ts>
          <short_desc>[Win] Use Clang&apos;s __has_declspec_attribute for export macros</short_desc>
          <delta_ts>2017-04-25 14:46:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>fujii</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lforschler</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1300599</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-04-24 12:07:47 -0700</bug_when>
    <thetext>Currently a OS(WINDOWS) check is used to determine whether __declspec should be used for exporting symbols in shared libraries. Clang defines a macro __has_declspec_attribute that can be used to determine if the platform supports __declspec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300601</commentid>
    <comment_count>1</comment_count>
      <attachid>307995</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-04-24 12:10:42 -0700</bug_when>
    <thetext>Created attachment 307995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300602</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-04-24 12:13:02 -0700</bug_when>
    <thetext>Attachment 307995 did not pass style-queue:


ERROR: Source/WTF/wtf/Compiler.h:54:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/WTF/wtf/Compiler.h:54:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 2 in 6 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>1300702</commentid>
    <comment_count>3</comment_count>
      <attachid>307995</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-24 16:25:16 -0700</bug_when>
    <thetext>Comment on attachment 307995
Patch

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

&gt; Source/WTF/wtf/Platform.h:440
&gt; +#if OS(WINDOWS) \
&gt; +    || (COMPILER_HAS_CLANG_DECLSPEC(dllimport) &amp;&amp; COMPILER_HAS_CLANG_DECLSPEC(dllexport))

These can be on one line.
Also, if it has __declspec(dllimport) can&apos;t we assume it has __declspec(dllexport)?

&gt; Source/WTF/wtf/Platform.h:441
&gt; +#define USE_DECLSPEC_ATTRIBUTE 1

__declspec is a keyword according to https://msdn.microsoft.com/en-us/library/dabb5z75.aspx
I wish clang had used __has_declspec_keyword, but they didn&apos;t.

&gt; Source/WTF/wtf/Platform.h:443
&gt; +#elif defined(__GNUC__) &amp;&amp; !defined(__CC_ARM) &amp;&amp; !defined(__ARMCC__)

Is there no visibility attribute on ARM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301116</commentid>
    <comment_count>4</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-04-25 11:01:15 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 307995 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=307995&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:440
&gt; &gt; +#if OS(WINDOWS) \
&gt; &gt; +    || (COMPILER_HAS_CLANG_DECLSPEC(dllimport) &amp;&amp; COMPILER_HAS_CLANG_DECLSPEC(dllexport))
&gt; 
&gt; These can be on one line.
&gt; Also, if it has __declspec(dllimport) can&apos;t we assume it has
&gt; __declspec(dllexport)?

I would assume that would be the case but just made it completely explicit. Can change that.

&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:441
&gt; &gt; +#define USE_DECLSPEC_ATTRIBUTE 1
&gt; 
&gt; __declspec is a keyword according to
&gt; https://msdn.microsoft.com/en-us/library/dabb5z75.aspx
&gt; I wish clang had used __has_declspec_keyword, but they didn&apos;t.
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:443
&gt; &gt; +#elif defined(__GNUC__) &amp;&amp; !defined(__CC_ARM) &amp;&amp; !defined(__ARMCC__)
&gt; 
&gt; Is there no visibility attribute on ARM?

That line has actually been there since the first commit of ExportMacros.h so its over 6 years old. I&apos;m not sure the initial thinking of it. Should we just remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301227</commentid>
    <comment_count>5</comment_count>
      <attachid>307995</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-25 14:14:07 -0700</bug_when>
    <thetext>Comment on attachment 307995
Patch

Let&apos;s just do this as it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301259</commentid>
    <comment_count>6</comment_count>
      <attachid>307995</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-25 14:46:57 -0700</bug_when>
    <thetext>Comment on attachment 307995
Patch

Clearing flags on attachment: 307995

Committed r215766: &lt;http://trac.webkit.org/changeset/215766&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301260</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-25 14:46:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307995</attachid>
            <date>2017-04-24 12:10:42 -0700</date>
            <delta_ts>2017-04-25 14:46:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug171240.diff</filename>
            <type>text/plain</type>
            <size>4694</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRkMjFkNDEuLjhjZWQzYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE3LTA0LTI0ICBEb24gT2xtc3RlYWQg
IDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gVXNlIENsYW5nJ3Mg
X19oYXNfZGVjbHNwZWNfYXR0cmlidXRlIGZvciBleHBvcnQgbWFjcm9zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyNDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNFeHBvcnRNYWNy
b3MuaDoKKwogMjAxNy0wNC0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIHRlc3QyNjI6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2Zv
ci1vZi9kc3RyLWFycmF5LWVsZW0taW5pdC1mbi1uYW1lLWFycm93LmpzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaAppbmRleCAxMjZjYmM5Li5jYTMx
Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0V4cG9ydE1h
Y3Jvcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRXhwb3J0TWFjcm9z
LmgKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogI2Vsc2UgLy8gIVVTRShFWFBPUlRfTUFDUk9TKQogCi0j
aWYgT1MoV0lORE9XUykgJiYgIUNPTVBJTEVSKEdDQ19PUl9DTEFORykKKyNpZiBVU0UoREVDTFNQ
RUNfQVRUUklCVVRFKQogCiAjaWYgZGVmaW5lZChCVUlMRElOR19KYXZhU2NyaXB0Q29yZSkgfHwg
ZGVmaW5lZChTVEFUSUNBTExZX0xJTktFRF9XSVRIX0phdmFTY3JpcHRDb3JlKQogI2RlZmluZSBK
U19FWFBPUlREQVRBIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2YWRhNTU0Li5hNmIyNmU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA0LTI0ICBEb24gT2xtc3RlYWQgIDxkb24ub2xt
c3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAgICAgW1dpbl0gVXNlIENsYW5nJ3MgX19oYXNfZGVj
bHNwZWNfYXR0cmlidXRlIGZvciBleHBvcnQgbWFjcm9zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEyNDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9Db21waWxlci5oOgorICAgICAgICAqIHd0
Zi9FeHBvcnRNYWNyb3MuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxNy0wNC0y
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0dUS10gU3dpdGNoIHRvIHVzZSBFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUiBpbnN0ZWFkIG9mIEVO
QUJMRV9JTlNQRUNUT1JfU0VSVkVSIGZvciB0aGUgcmVtb3RlIGluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0NvbXBpbGVyLmgK
aW5kZXggZDY1MTNhOS4uOTcyMDc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ29tcGls
ZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCkBAIC01MCw2ICs1MCwxNCBAQAog
I2RlZmluZSBDT01QSUxFUl9IQVNfQ0xBTkdfRkVBVFVSRSh4KSAwCiAjZW5kaWYKIAorLyogQ09N
UElMRVJfSEFTX0NMQU5HX0RFQ0xTUEVDKCkgLSB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0
cyBhIE1pY3Jvc29mdCBzdHlsZSBfX2RlY2xzcGVjIGF0dHJpYnV0ZS4gKi8KKy8qIGh0dHBzOi8v
Y2xhbmcubGx2bS5vcmcvZG9jcy9MYW5ndWFnZUV4dGVuc2lvbnMuaHRtbCNoYXMtZGVjbHNwZWMt
YXR0cmlidXRlICovCisjaWZkZWYgX19oYXNfZGVjbHNwZWNfYXR0cmlidXRlCisjZGVmaW5lIENP
TVBJTEVSX0hBU19DTEFOR19ERUNMU1BFQyh4KSBfX2hhc19kZWNsc3BlY19hdHRyaWJ1dGUoeCkK
KyNlbHNlCisjZGVmaW5lIENPTVBJTEVSX0hBU19DTEFOR19ERUNMU1BFQyh4KSAwCisjZW5kaWYK
KwogLyogPT09PSBDT01QSUxFUigpIC0gcHJpbWFyeSBkZXRlY3Rpb24gb2YgdGhlIGNvbXBpbGVy
IGJlaW5nIHVzZWQgdG8gYnVpbGQgdGhlIHByb2plY3QsIGluIGFscGhhYmV0aWNhbCBvcmRlciA9
PT09ICovCiAKIC8qIENPTVBJTEVSKENMQU5HKSAtIENsYW5nICAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRXhwb3J0TWFjcm9zLmggYi9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3Mu
aAppbmRleCA1YWU4N2QwLi5lODk5YjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9FeHBv
cnRNYWNyb3MuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9FeHBvcnRNYWNyb3MuaApAQCAtMzgsMjMg
KzM4LDIzIEBACiAvLyBiZWluZyBsb2NhbCB0byB0aGUgdGFyZ2V0IGJlaW5nIGdlbmVyYXRlZCwg
YW5kIHRodXMgbm90IHN1YmplY3QgdG8gKGUuZy4pIEVMRgogLy8gc3ltYm9sIGludGVycG9zaXRp
b24gcnVsZXMuCiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmIFVTRShERUNMU1BFQ19BVFRSSUJVVEUp
CiAjZGVmaW5lIEhBVkVfSU5URVJOQUxfVklTSUJJTElUWSAxCiAjZGVmaW5lIFdURl9JTlRFUk5B
TAotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19DQ19BUk0pICYmICFkZWZp
bmVkKF9fQVJNQ0NfXykKKyNlbGlmIFVTRShWSVNJQklMSVRZX0FUVFJJQlVURSkKICNkZWZpbmUg
SEFWRV9JTlRFUk5BTF9WSVNJQklMSVRZIDEKICNkZWZpbmUgV1RGX0lOVEVSTkFMIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKICNlbHNlCiAjZGVmaW5lIFdURl9JTlRFUk5B
TAogI2VuZGlmCiAKLSNpZiBPUyhXSU5ET1dTKQorI2lmIFVTRShERUNMU1BFQ19BVFRSSUJVVEUp
CiAKICNkZWZpbmUgV1RGX0VYUE9SVF9ERUNMQVJBVElPTiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkK
ICNkZWZpbmUgV1RGX0lNUE9SVF9ERUNMQVJBVElPTiBfX2RlY2xzcGVjKGRsbGltcG9ydCkKICNk
ZWZpbmUgV1RGX0hJRERFTl9ERUNMQVJBVElPTgogCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAm
JiAhZGVmaW5lZChfX0NDX0FSTSkgJiYgIWRlZmluZWQoX19BUk1DQ19fKQorI2VsaWYgVVNFKFZJ
U0lCSUxJVFlfQVRUUklCVVRFKQogCiAjZGVmaW5lIFdURl9FWFBPUlRfREVDTEFSQVRJT04gX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKICNkZWZpbmUgV1RGX0lNUE9SVF9E
RUNMQVJBVElPTiBXVEZfRVhQT1JUX0RFQ0xBUkFUSU9OCkBAIC04OSw3ICs4OSw3IEBACiAKICNl
bHNlIC8vICFVU0UoRVhQT1JUX01BQ1JPUykKIAotI2lmIE9TKFdJTkRPV1MpICYmICFDT01QSUxF
UihHQ0NfT1JfQ0xBTkcpCisjaWYgVVNFKERFQ0xTUEVDX0FUVFJJQlVURSkKICNpZiBkZWZpbmVk
KEJVSUxESU5HX1dURikgfHwgZGVmaW5lZChTVEFUSUNBTExZX0xJTktFRF9XSVRIX1dURikKICNk
ZWZpbmUgV1RGX0VYUE9SVERBVEEgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKaW5kZXggZThjZjdiNC4uYTc5YjMwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC00MzQsNiArNDM0LDIw
IEBACiAKIC8qIE9wZXJhdGluZyBlbnZpcm9ubWVudHMgKi8KIAorLyogRXhwb3J0IG1hY3JvIHN1
cHBvcnQuIERldGVjdHMgdGhlIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIGZvciBzaGFyZWQgbGlicmFy
eSBzeW1ib2wgZXhwb3J0CisgICBkZWNvcmF0aW9ucy4gKi8KKyNpZiBPUyhXSU5ET1dTKSBcCisg
ICAgfHwgKENPTVBJTEVSX0hBU19DTEFOR19ERUNMU1BFQyhkbGxpbXBvcnQpICYmIENPTVBJTEVS
X0hBU19DTEFOR19ERUNMU1BFQyhkbGxleHBvcnQpKQorI2RlZmluZSBVU0VfREVDTFNQRUNfQVRU
UklCVVRFIDEKKyNkZWZpbmUgVVNFX1ZJU0lCSUxJVFlfQVRUUklCVVRFIDAKKyNlbGlmIGRlZmlu
ZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fQ0NfQVJNKSAmJiAhZGVmaW5lZChfX0FSTUNDX18p
CisjZGVmaW5lIFVTRV9ERUNMU1BFQ19BVFRSSUJVVEUgMAorI2RlZmluZSBVU0VfVklTSUJJTElU
WV9BVFRSSUJVVEUgMQorI2Vsc2UKKyNkZWZpbmUgVVNFX0RFQ0xTUEVDX0FUVFJJQlVURSAwCisj
ZGVmaW5lIFVTRV9WSVNJQklMSVRZX0FUVFJJQlVURSAwCisjZW5kaWYKKwogLyogU3RhbmRhcmQg
bGlicmFyaWVzICovCiAjaWYgZGVmaW5lZChIQVZFX0ZFQVRVUkVTX0gpICYmIEhBVkVfRkVBVFVS
RVNfSAogLyogSWYgdGhlIGluY2x1ZGVkIGZlYXR1cmVzLmggaXMgZ2xpYmMncyBvbmUsIF9fR0xJ
QkNfXyBpcyBkZWZpbmVkLiAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>