<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@webkit.org" title="Csaba Osztrogonác <ossy@webkit.org>"> <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">> Ok, the problem here is the detection of THUMB2 support. Our code is based
> on __thumb2__ or __thumb__ defines. This does work on Debian:
>
> $ gcc -dM -E - < /dev/null | grep -i thumb
> #define __thumb2__ 1
> #define __THUMB_INTERWORK__ 1
> #define __thumb__ 1
> #define __ARM_ARCH_ISA_THUMB 2
> #define __THUMBEL__ 1
>
> but does not on Fedora 24 with GCC 6.1. :
>
> $ gcc -dM -E - < /dev/null | grep -i thumb
> #define __THUMB_INTERWORK__ 1
> #define __ARM_ARCH_ISA_THUMB 2
>
> 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">> Comment on <span class=""><a href="attachment.cgi?id=282244&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&action=edit" title="Correct the THUMB2 detection on Fedora with gcc 6.1.">[details]</a></span>
> Correct the THUMB2 detection on Fedora with gcc 6.1.
>
> Clearing flags on attachment: 282244
>
> Committed r202560: <<a href="http://trac.webkit.org/changeset/202560">http://trac.webkit.org/changeset/202560</a>></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 "\(marm\|mthumb\)"
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>