WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
159083
THUMB2 support not correctly detected on Fedora with GCC 6.1.
https://bugs.webkit.org/show_bug.cgi?id=159083
Summary
THUMB2 support not correctly detected on Fedora with GCC 6.1.
Tomas Popela
Reported
2016-06-23 23:47:34 PDT
After
http://trac.webkit.org/changeset/202214
the build fails with: In file included from /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/MacroAssemblerARM.h:34:0, from /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/MacroAssembler.h:40, from /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/LinkBuffer.h:39, from /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/LinkBuffer.cpp:27: /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h: In instantiation of ‘void JSC::AbstractMacroAssembler<AssemblerType, MacroAssemblerType>::emitNops(size_t) [with AssemblerType = JSC::ARMAssembler; MacroAssemblerType = JSC::MacroAssemblerARM; size_t = unsigned int]’: /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/LinkBuffer.cpp:232:50: required from here /home/fedora/tpopela/rpmbuild/BUILD/webkitgtk-2.13.2/Source/JavaScriptCore/assembler/AbstractMacroAssembler.h:1049:32: error: ‘fillNops’ is not a member of ‘JSC::ARMAssembler’ AssemblerType::fillNops(static_cast<char*>(buffer.data()) + startCodeSize, memoryToFillWithNopsInBytes, isCopyingToExecutableMemory); There is an implementation of fillNops missing in the ARMAssembler.h
Attachments
Correct the THUMB2 detection on Fedora with gcc 6.1.
(1.44 KB, patch)
2016-06-28 05:27 PDT
,
Tomas Popela
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Carlos Alberto Lopez Perez
Comment 1
2016-06-27 03:16:28 PDT
The GTK+ ARM bot (ARMv7) seems happy.
https://build.webkit.org/builders/GTK%20Linux%20ARM%20Release?numbuilds=50
And it seems there is also an implementation of fillNops in ARMv7Assembler.h Is this an issue that happens only with ARMv6 ? In that case, does this still happens if the JIT is disabled (-DENABLE_JIT=OFF) ?
Tomas Popela
Comment 2
2016-06-28 05:20:44 PDT
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.
Tomas Popela
Comment 3
2016-06-28 05:27:04 PDT
Created
attachment 282244
[details]
Correct the THUMB2 detection on Fedora with gcc 6.1.
WebKit Commit Bot
Comment 4
2016-06-28 06:25:38 PDT
Comment on
attachment 282244
[details]
Correct the THUMB2 detection on Fedora with gcc 6.1. Clearing flags on attachment: 282244 Committed
r202560
: <
http://trac.webkit.org/changeset/202560
>
WebKit Commit Bot
Comment 5
2016-06-28 06:25:42 PDT
All reviewed patches have been landed. Closing bug.
Csaba Osztrogonác
Comment 6
2016-07-04 01:48:14 PDT
(In reply to
comment #2
)
> 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.
(In reply to
comment #4
)
> Comment on
attachment 282244
[details]
> Correct the THUMB2 detection on Fedora with gcc 6.1. > > Clearing flags on attachment: 282244 > > Committed
r202560
: <
http://trac.webkit.org/changeset/202560
>
This change is incorrect, because it enables thumb2 instruction set on ARMv7 by default and doesn't work with toolchain uses -marm option:
https://build.webkit.org/builders/JSCOnly%20Linux%20ARMv7%20Traditional%20Release/builds/1514
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
bug125581
and
bug141288
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.
Tomas Popela
Comment 7
2016-07-08 04:19:45 PDT
(In reply to
comment #6
)
> 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.
Sorry Ossy about the breakage and thank you for working on the fix! It is as you said the thumb2 toolchain is indeed disabled and the ARM one enabled.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug