<?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>235979</bug_id>
          
          <creation_ts>2022-02-01 15:03:33 -0800</creation_ts>
          <short_desc>[CMake] Use ld.lld by default for development builds where available</short_desc>
          <delta_ts>2022-02-11 07:29:07 -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 Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236362</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236506</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>235476</dependson>
    
    <dependson>235975</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrian Perez">aperez</reporter>
          <assigned_to name="Adrian Perez">aperez</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pgriffis</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836172</commentid>
    <comment_count>0</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-01 15:03:33 -0800</bug_when>
    <thetext>One of the reasons to use ld.gold for development builds before trying
to not detect it (as per bug #235975) was that it is faster than the
traditional GNU linker, ld.bfd — and shorter build times are always
welcome by developers.

While unfortunately ld.gold is essentially unmaintained, we can still
try to use ld.lld when present. Not only it has matured plenty to be
a drop-in replacement, it is well maintained and even faster than ld.gold

As ld.lld is already part of the Flatpak SDK, the only thing missing is
to try to make CMake builds use it by default. Currently it is picked if
the LTO_MODE option is set:

  # Use ld.lld when building with LTO
  CMAKE_DEPENDENT_OPTION(USE_LD_LLD &quot;Use LLD linker&quot; ON
                         &quot;LTO_MODE;NOT USE_LD_GOLD;NOT WIN32&quot; OFF)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839602</commentid>
    <comment_count>1</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-10 04:37:10 -0800</bug_when>
    <thetext>For the record, I did some numbers while checking the Mold linker, you
can read here: https://bugs.webkit.org/show_bug.cgi?id=236362#c7

The TL;DR is that LLD is about 4.00x faster than the BFD linker, and
even slightly faster (1.12x) than Gold.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839633</commentid>
    <comment_count>2</comment_count>
      <attachid>451527</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-10 07:10:32 -0800</bug_when>
    <thetext>Created attachment 451527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839668</commentid>
    <comment_count>3</comment_count>
      <attachid>451527</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-02-10 08:09:19 -0800</bug_when>
    <thetext>Comment on attachment 451527
Patch

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

&gt; Source/cmake/OptionsCommon.cmake:30
&gt; +    if (CMAKE_BUILD_TYPE STREQUAL Debug)

What makes debug builds special? I guess you cannot enable it for RelWithDebInfo builds because it doesn&apos;t support LTO and that would risk trouble with distro builds... but this still seems weird to distinguish between RelWithDebInfo and Debug like this. Maybe it would make more sense to check for DEVELOPER_MODE instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839821</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-10 11:05:02 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; Comment on attachment 451527 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=451527&amp;action=review
&gt; 
&gt; &gt; Source/cmake/OptionsCommon.cmake:30
&gt; &gt; +    if (CMAKE_BUILD_TYPE STREQUAL Debug)
&gt; 
&gt; What makes debug builds special? I guess you cannot enable it for
&gt; RelWithDebInfo builds because it doesn&apos;t support LTO and that would risk
&gt; trouble with distro builds... but this still seems weird to distinguish
&gt; between RelWithDebInfo and Debug like this. Maybe it would make more sense
&gt; to check for DEVELOPER_MODE instead?

The LLD linker can do LTO just fine, I routinely do Clang+LLD builds here.
I was trying to think of speeding up the workflow of developers working on
WebKit because every minute counts there, but a few minutes more in a build
for distro package don&apos;t matter as much.

You are right and indeed checking for DEVELOPER_MODE makes more sense for
what I am trying to do here — a developer using “build-webkit --release”
will also want a faster edit-compile-test cycle!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839836</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-02-10 11:18:11 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #4)
&gt; The LLD linker can do LTO just fine, I routinely do Clang+LLD builds here.

Sorry, I confused it with mold. So many linkers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839837</commentid>
    <comment_count>6</comment_count>
      <attachid>451527</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2022-02-10 11:18:35 -0800</bug_when>
    <thetext>Comment on attachment 451527
Patch

Seems we agree to check DEVELOPER_MODE instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839840</commentid>
    <comment_count>7</comment_count>
      <attachid>451582</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-02-10 11:26:22 -0800</bug_when>
    <thetext>Created attachment 451582
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1840263</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-11 01:18:09 -0800</bug_when>
    <thetext>Committed r289611 (247124@main): &lt;https://commits.webkit.org/247124@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451582.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451527</attachid>
            <date>2022-02-10 07:10:32 -0800</date>
            <delta_ts>2022-02-10 11:26:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235979-20220210171031.patch</filename>
            <type>text/plain</type>
            <size>2232</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0NvbW1vbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmluZGV4
IDZhOGFmM2NhODhlNGU5OTE0MDZiNzRiMWEzNTZiYTYyOTI1NDIxNGUuLmZhZTc2ZWI0NGViZWI3
ZDY3OTM0ZjExZDM1NzI1ZjgzZWE4MWM0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zQ29tbW9uLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCkBA
IC0yMSwxOCArMjEsMjMgQEAgaWYgKFdURl9DUFVfQVJNKQogICAgIENIRUNLX0NYWF9TT1VSQ0Vf
Q09NUElMRVMoIiR7QVJNX1RIVU1CMl9URVNUX1NPVVJDRX0iIEFSTV9USFVNQjJfREVURUNURUQp
CiBlbmRpZiAoKQogCi0jIFVzZSBsZC5sbGQgd2hlbiBidWlsZGluZyB3aXRoIExUTworIyBVc2Ug
bGQubGxkIHdoZW4gYnVpbGRpbmcgd2l0aCBMVE8sIG9yIGZvciBkZWJ1ZyBidWlsZHMsIGlmIGF2
YWlsYWJsZS4KIENNQUtFX0RFUEVOREVOVF9PUFRJT04oVVNFX0xEX0xMRCAiVXNlIExMRCBsaW5r
ZXIiIE9OCiAgICAgICAgICAgICAgICAgICAgICAgICJMVE9fTU9ERTtOT1QgV0lOMzIiIE9GRikK
LWlmIChVU0VfTERfTExEKQotICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ19D
T01QSUxFUn0gLWZ1c2UtbGQ9bGxkIC1XbCwtLXZlcnNpb24gRVJST1JfUVVJRVQgT1VUUFVUX1ZB
UklBQkxFIExEX1ZFUlNJT04pCi0gICAgaWYgKCIke0xEX1ZFUlNJT059IiBNQVRDSEVTICJMTEQi
KQotICAgICAgICBzdHJpbmcoQVBQRU5EIENNQUtFX0VYRV9MSU5LRVJfRkxBR1MgIiAtZnVzZS1s
ZD1sbGQiKQotICAgICAgICBzdHJpbmcoQVBQRU5EIENNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1Mg
IiAtZnVzZS1sZD1sbGQiKQotICAgICAgICBzdHJpbmcoQVBQRU5EIENNQUtFX01PRFVMRV9MSU5L
RVJfRkxBR1MgIiAtZnVzZS1sZD1sbGQiKQotICAgIGVsc2UgKCkKLSAgICAgICAgc2V0KFVTRV9M
RF9MTEQgT0ZGKQorCitleGVjdXRlX3Byb2Nlc3MoQ09NTUFORCAke0NNQUtFX0NfQ09NUElMRVJ9
IC1mdXNlLWxkPWxsZCAtV2wsLS12ZXJzaW9uIEVSUk9SX1FVSUVUIE9VVFBVVF9WQVJJQUJMRSBM
RF9MTERfVkVSU0lPTikKK2lmIChMRF9MTERfVkVSU0lPTiBNQVRDSEVTICJeTExEICIpCisgICAg
aWYgKENNQUtFX0JVSUxEX1RZUEUgU1RSRVFVQUwgRGVidWcpCisgICAgICAgIHNldChVU0VfTERf
TExEIE9OKQogICAgIGVuZGlmICgpCitlbHNlICgpCisgICAgc2V0KFVTRV9MRF9MTEQgT0ZGKQor
ZW5kaWYgKCkKKworaWYgKFVTRV9MRF9MTEQpCisgICAgc3RyaW5nKEFQUEVORCBDTUFLRV9FWEVf
TElOS0VSX0ZMQUdTICIgLWZ1c2UtbGQ9bGxkIikKKyAgICBzdHJpbmcoQVBQRU5EIENNQUtFX1NI
QVJFRF9MSU5LRVJfRkxBR1MgIiAtZnVzZS1sZD1sbGQiKQorICAgIHN0cmluZyhBUFBFTkQgQ01B
S0VfTU9EVUxFX0xJTktFUl9GTEFHUyAiIC1mdXNlLWxkPWxsZCIpCiBlbmRpZiAoKQogCiAjIERl
dGVybWluZSB3aGljaCBsaW5rZXIgaXMgYmVpbmcgdXNlZCB3aXRoIHRoZSBjaG9zZW4gbGlua2Vy
IGZsYWdzLgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDgyMGRlZmNi
ZmQwNTA2NjllN2UyNjg3MTk5N2JiNjFlZmFjZGI2MzEuLmEzOTUzYzg0ZTU5N2Q5ZWQzOGY1Yzgw
ZGRiYjZiMTI4NDRjMjJjNDIgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAyMi0wMi0xMCAgQWRyaWFuIFBlcmV6IGRlIENhc3RybyAgPGFw
ZXJlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFtDTWFrZV0gVXNlIGxkLmxsZCBieSBkZWZhdWx0
IGZvciBkZXZlbG9wbWVudCBidWlsZHMgd2hlcmUgYXZhaWxhYmxlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU5NzkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zQ29t
bW9uLmNtYWtlOiBFbmFibGUgVVNFX0xEX0xMRCBmb3IgZGVidWcgYnVpbGRzIHdoZW4gYXZhaWxh
YmxlLgorCiAyMDIyLTAyLTA5ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KIAogICAgICAgICBTaGFyZWRNZW1vcnlVbml4IHNob3VsZCB1c2UgU0hNX0FOT04gd2hlbiBh
dmFpbGFibGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451582</attachid>
            <date>2022-02-10 11:26:22 -0800</date>
            <delta_ts>2022-02-11 01:18:13 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-235979-20220210212621.patch</filename>
            <type>text/plain</type>
            <size>1987</size>
            <attacher name="Adrian Perez">aperez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0
aW9uc0NvbW1vbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCmluZGV4
IDZhOGFmM2NhODhlNGU5OTE0MDZiNzRiMWEzNTZiYTYyOTI1NDIxNGUuLmFmNDk3ZTI5NWU4MDQ1
MDY4OGEwMGNiZjQxYzQ0ODMxZjI2ZDFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zQ29tbW9uLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zQ29tbW9uLmNtYWtlCkBA
IC0yMSwxMiArMjEsMTcgQEAgaWYgKFdURl9DUFVfQVJNKQogICAgIENIRUNLX0NYWF9TT1VSQ0Vf
Q09NUElMRVMoIiR7QVJNX1RIVU1CMl9URVNUX1NPVVJDRX0iIEFSTV9USFVNQjJfREVURUNURUQp
CiBlbmRpZiAoKQogCi0jIFVzZSBsZC5sbGQgd2hlbiBidWlsZGluZyB3aXRoIExUTworIyBVc2Ug
bGQubGxkIHdoZW4gYnVpbGRpbmcgd2l0aCBMVE8sIG9yIGZvciBkZWJ1ZyBidWlsZHMsIGlmIGF2
YWlsYWJsZS4KKyMgRklYTUU6IFdpdGggQ01ha2UgMy4yMisgZnVsbCBjb25kaXRpb25hbCBzeW50
YXggY2FuIGJlIHVzZWQgaW4KKyMgICAgICAgIGNtYWtlX2RlcGVuZGVudF9vcHRpb24oKQoraWYg
KExUT19NT0RFIE9SIERFVkVMT1BFUl9NT0RFKQorICAgIHNldChUUllfVVNFX0xEX0xMRCBPTikK
K2VuZGlmICgpCiBDTUFLRV9ERVBFTkRFTlRfT1BUSU9OKFVTRV9MRF9MTEQgIlVzZSBMTEQgbGlu
a2VyIiBPTgotICAgICAgICAgICAgICAgICAgICAgICAiTFRPX01PREU7Tk9UIFdJTjMyIiBPRkYp
CisgICAgICAgICAgICAgICAgICAgICAgICJUUllfVVNFX0xEX0xMRDtOT1QgV0lOMzIiIE9GRikK
IGlmIChVU0VfTERfTExEKQogICAgIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7Q01BS0VfQ19D
T01QSUxFUn0gLWZ1c2UtbGQ9bGxkIC1XbCwtLXZlcnNpb24gRVJST1JfUVVJRVQgT1VUUFVUX1ZB
UklBQkxFIExEX1ZFUlNJT04pCi0gICAgaWYgKCIke0xEX1ZFUlNJT059IiBNQVRDSEVTICJMTEQi
KQorICAgIGlmIChMRF9WRVJTSU9OIE1BVENIRVMgIl5MTEQgIikKICAgICAgICAgc3RyaW5nKEFQ
UEVORCBDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIgLWZ1c2UtbGQ9bGxkIikKICAgICAgICAgc3Ry
aW5nKEFQUEVORCBDTUFLRV9TSEFSRURfTElOS0VSX0ZMQUdTICIgLWZ1c2UtbGQ9bGxkIikKICAg
ICAgICAgc3RyaW5nKEFQUEVORCBDTUFLRV9NT0RVTEVfTElOS0VSX0ZMQUdTICIgLWZ1c2UtbGQ9
bGxkIikKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4MjBkZWZjYmZk
MDUwNjY5ZTdlMjY4NzE5OTdiYjYxZWZhY2RiNjMxLi41M2RiZTUxODY0NjI5YmIxNzVmNDRjN2E3
MjU0ZjVmN2QzZDgxZjYyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjItMDItMTAgIEFkcmlhbiBQZXJleiBkZSBDYXN0cm8gIDxhcGVy
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ01ha2VdIFVzZSBsZC5sbGQgYnkgZGVmYXVsdCBm
b3IgZGV2ZWxvcG1lbnQgYnVpbGRzIHdoZXJlIGF2YWlsYWJsZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1OTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0NvbW1v
bi5jbWFrZTogRW5hYmxlIFVTRV9MRF9MTEQgYnkgZGVmYXVsdCBmb3IgZGV2ZWxvcGVycyBidWls
ZHMKKyAgICAgICAgd2hlbiBsZC5sbGQgaXMgYXZhaWxhYmxlLiBXaGlsZSBhdCBpdCwgaW1wcm92
ZSB0aGUgbWF0Y2ggb24gTERfVkVSU0lPTiB0byBiZSBtb3JlIHJvYnVzdC4KKwogMjAyMi0wMi0w
OSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgU2hh
cmVkTWVtb3J5VW5peCBzaG91bGQgdXNlIFNITV9BTk9OIHdoZW4gYXZhaWxhYmxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>