<html>
    <head>
      <base href="https://bugs.webkit.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - THUMB2 support not correctly detected on Fedora with GCC 6.1."
   href="https://bugs.webkit.org/show_bug.cgi?id=159083#c6">Comment # 6</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - THUMB2 support not correctly detected on Fedora with GCC 6.1."
   href="https://bugs.webkit.org/show_bug.cgi?id=159083">bug 159083</a>
              from <span class="vcard"><a class="email" href="mailto:ossy&#64;webkit.org" title="Csaba Osztrogonác &lt;ossy&#64;webkit.org&gt;"> <span class="fn">Csaba Osztrogonác</span></a>
</span></b>
        <pre>(In reply to <a href="show_bug.cgi?id=159083#c2">comment #2</a>)
<span class="quote">&gt; Ok, the problem here is the detection of THUMB2 support. Our code is based
&gt; on __thumb2__ or __thumb__ defines. This does work on Debian:
&gt; 
&gt; $ gcc -dM -E - &lt; /dev/null | grep -i thumb
&gt; #define __thumb2__ 1
&gt; #define __THUMB_INTERWORK__ 1
&gt; #define __thumb__ 1
&gt; #define __ARM_ARCH_ISA_THUMB 2
&gt; #define __THUMBEL__ 1
&gt; 
&gt; but does not on Fedora 24 with GCC 6.1. :
&gt; 
&gt; $ gcc -dM -E - &lt; /dev/null | grep -i thumb
&gt; #define __THUMB_INTERWORK__ 1
&gt; #define __ARM_ARCH_ISA_THUMB 2
&gt; 
&gt; as the previously mentions defines are not presented there.</span >


(In reply to <a href="show_bug.cgi?id=159083#c4">comment #4</a>)
<span class="quote">&gt; Comment on <span class=""><a href="attachment.cgi?id=282244&amp;action=diff" name="attach_282244" title="Correct the THUMB2 detection on Fedora with gcc 6.1.">attachment 282244</a> <a href="attachment.cgi?id=282244&amp;action=edit" title="Correct the THUMB2 detection on Fedora with gcc 6.1.">[details]</a></span>
&gt; Correct the THUMB2 detection on Fedora with gcc 6.1.
&gt; 
&gt; Clearing flags on attachment: 282244
&gt; 
&gt; Committed r202560: &lt;<a href="http://trac.webkit.org/changeset/202560">http://trac.webkit.org/changeset/202560</a>&gt;</span >

This change is incorrect, because it enables thumb2 instruction set 
on ARMv7 by default and doesn't work with toolchain uses -marm option:
<a href="https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Traditional%20Release/builds/1514">https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Traditional%20Release/builds/1514</a>

You are right, r202214 broke the build with ARM instruction set -
ARM traditional in WebKit terminology - because of missing fillNops
implementation in ARMAssembler.h. ARMv7Assembler.h is responsible
for ARMv7 with Thumb2 instruction set. note: ARMv6 doesn't build
with enabled JIT long long time ago, at least 2.5 years ago,
see <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - JS broken on ARMv6 because of dmb instruction"
   href="show_bug.cgi?id=125581">bug125581</a> and <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Fix the ARMv6 build after r167566"
   href="show_bug.cgi?id=141288">bug141288</a> for details.

The thumb2 detection in Platform.h was correct, but it seem your
toolchain was changed for some reason. The old one was built to use -mthumb,
but the new one was built to use -marm as default instruction set.

You can check your toolchain default settings with this command:
gcc -Q --help=target | grep -i &quot;\(marm\|mthumb\)&quot;

result if you have thumb2 toolchain:
  -marm                                 [disabled]
  -mthumb                               [enabled]
  -mthumb-interwork                     [enabled]

result if you have ARM toolchain:
  -marm                                 [enabled]
  -mthumb                               [disabled]
  -mthumb-interwork                     [enabled]

I'm going to fix the ARM traditional build soon in a separated bug.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>