js/src/wasm/WasmSignalHandlers.cpp:366:41: error: use of undeclared identifier 'EPC_sig'

RESOLVED FIXED in Firefox -esr52

Status

()

Core
JavaScript Engine: JIT
RESOLVED FIXED
a year ago
a year ago

People

(Reporter: Jan Beich, Assigned: Jan Beich)

Tracking

({regression})

Trunk
mozilla55
Other
FreeBSD
regression
Points:
---
Bug Flags:
qe-verify -

Firefox Tracking Flags

(firefox-esr45 wontfix, firefox-esr52 fixed, firefox53 wontfix, firefox54+ fixed, firefox55+ fixed)

Details

(Whiteboard: [npotb])

MozReview Requests

()

Submitter Diff Changes Open Issues Last Updated
Loading...
Error loading review requests:

Attachments

(2 attachments)

(Assignee)

Description

a year ago
+++ This bug was initially created as a clone of Bug #1359051 +++

Bug 1323115 turned on JS_CODEGEN_ARM64 which leads to

In file included from obj-aarch64-unknown-freebsd11.0/js/src/Unified_cpp_js_src40.cpp:38:
js/src/wasm/WasmSignalHandlers.cpp:366:41: error:
      use of undeclared identifier 'EPC_sig'
    return reinterpret_cast<uint8_t**>(&PC_sig(context));
                                        ^
js/src/wasm/WasmSignalHandlers.cpp:355:20: note:
      expanded from macro 'PC_sig'
# define PC_sig(p) EPC_sig(p)
                   ^
http://searchfox.org/mozilla-central/rev/313e5199bf58/js/src/wasm/WasmSignalHandlers.cpp#369
(Assignee)

Updated

a year ago
status-firefox53: --- → affected
status-firefox54: --- → affected
status-firefox55: --- → affected
status-firefox57: affected → ---
status-firefox-esr45: --- → unaffected
status-firefox-esr52: --- → unaffected
Summary: js/src/jit/Ion.cpp:3528:30: error: no member named 'cacheFlush' in 'js::jit::ExecutableAllocator' → js/src/wasm/WasmSignalHandlers.cpp:366:41: error: use of undeclared identifier 'EPC_sig'
Comment hidden (mozreview-request)
(Assignee)

Comment 2

a year ago
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

Does this make any sense? Not sure if the crash at the end is related, see bug 1359215.

$ pkg install git python27 gmake autoconf213
$ git clone https://github.com/mozilla/gecko-dev firefox
$ (cd firefox/js/src; autoconf-2.13)
$ (mkdir objdir; cd objdir; ../firefox/js/src/configure --disable-jemalloc; gmake)
$ obj*/dist/bin/jsapi-tests # on ref11-aarch64.freebsd.org (Cavium ThunderX)
testXDR_sourceMap
TEST-PASS | testXDR_sourceMap | ok
testXDR_source
TEST-PASS | testXDR_source | ok
testXDR_bug516827
TEST-PASS | testXDR_bug516827 | ok
testXDR_bug506491
TEST-PASS | testXDR_bug506491 | ok
testWeakMap_keyDelegates
TEST-PASS | testWeakMap_keyDelegates | ok
testWeakMap_basicOperations
TEST-PASS | testWeakMap_basicOperations | ok
testWasmLEB128_invalid_decoding
TEST-PASS | testWasmLEB128_invalid_decoding | ok
testWasmLEB128_valid_decoding
TEST-PASS | testWasmLEB128_valid_decoding | ok
testWasmLEB128_encoding
TEST-PASS | testWasmLEB128_encoding | ok
testUncaughtSymbol
TEST-PASS | testUncaughtSymbol | ok
test_JS_ubi_ShortestPaths_multiple_edges_to_target
path[0]->predecessor() = 'a'
Edge name = 'x'
path[0]->predecessor() = 'a'
Edge name = 'y'
path[0]->predecessor() = 'a'
Edge name = 'z'
numPathsFound = 3
TEST-PASS | test_JS_ubi_ShortestPaths_multiple_edges_to_target | ok
test_JS_ubi_ShortestPaths_more_paths_than_max
path[0]->predecessor() = 'a'
numPathsFound = 1
TEST-PASS | test_JS_ubi_ShortestPaths_more_paths_than_max | ok
test_JS_ubi_ShortestPaths_multiple_paths
path[0]->predecessor() = 'a'
path[0]->predecessor() = 'a'
path[1]->predecessor() = 'b'
path[2]->predecessor() = 'c'
path[0]->predecessor() = 'a'
path[1]->predecessor() = 'd'
path[2]->predecessor() = 'e'
numPathsFound = 3
TEST-PASS | test_JS_ubi_ShortestPaths_multiple_paths | ok
test_JS_ubi_ShortestPaths_one_path
path[0]->predecessor() = 'a'
path[1]->predecessor() = 'c'
TEST-PASS | test_JS_ubi_ShortestPaths_one_path | ok
test_JS_ubi_ShortestPaths_no_path
TEST-PASS | test_JS_ubi_ShortestPaths_no_path | ok
test_JS_ubi_Node_scriptFilename
TEST-PASS | test_JS_ubi_Node_scriptFilename | ok
test_JS_ubi_DominatorTree
r's immediate dominator is r
Checking r's dominated set:
    Expecting r
    Expecting a
    Expecting b
    Expecting c
    Expecting d
    Expecting e
    Expecting h
    Expecting i
    Expecting k
    Found r
    Found b
    Found a
    Found d
    Found e
    Found h
    Found c
    Found i
    Found k
Done checking r's dominated set.

a's immediate dominator is r
Checking a's dominated set:
Done checking a's dominated set.

b's immediate dominator is r
Checking b's dominated set:
Done checking b's dominated set.

c's immediate dominator is r
Checking c's dominated set:
    Expecting f
    Expecting g
    Found f
    Found g
Done checking c's dominated set.

d's immediate dominator is r
Checking d's dominated set:
    Expecting l
    Found l
Done checking d's dominated set.

e's immediate dominator is r
Checking e's dominated set:
Done checking e's dominated set.

f's immediate dominator is r
Checking f's dominated set:
Done checking f's dominated set.

g's immediate dominator is r
Checking g's dominated set:
    Expecting j
    Found j
Done checking g's dominated set.

h's immediate dominator is r
Checking h's dominated set:
Done checking h's dominated set.

i's immediate dominator is r
Checking i's dominated set:
Done checking i's dominated set.

j's immediate dominator is c
Checking j's dominated set:
Done checking j's dominated set.

k's immediate dominator is r
Checking k's dominated set:
Done checking k's dominated set.

l's immediate dominator is r
Checking l's dominated set:
Done checking l's dominated set.

TEST-PASS | test_JS_ubi_DominatorTree | ok
test_ubiPostOrder
visited.length() = 8
visited[0] = 'g'
visited[1] = 'f'
visited[2] = 'e'
visited[3] = 'd'
visited[4] = 'c'
visited[5] = 'b'
visited[6] = 'a'
visited[7] = 'r'
TEST-PASS | test_ubiPostOrder | ok
test_ubiCoarseType
TEST-PASS | test_ubiCoarseType | ok
test_ubiStackFrame
TEST-PASS | test_ubiStackFrame | ok
test_ubiNodeJSObjectConstructorName
TEST-PASS | test_ubiNodeJSObjectConstructorName | ok
test_ubiNodeCompartment
TEST-PASS | test_ubiNodeCompartment | ok
test_ubiNodeZone
TEST-PASS | test_ubiNodeZone | ok
testUTF8_badSurrogate
TEST-PASS | testUTF8_badSurrogate | ok
testUTF8_bigUTF8
TEST-PASS | testUTF8_bigUTF8 | ok
testUTF8_badUTF8
TEST-PASS | testUTF8_badUTF8 | ok
testTypedArrays
TEST-PASS | testTypedArrays | ok
testToUint64Large
TEST-PASS | testToUint64Large | ok
testToUint32Large
TEST-PASS | testToUint32Large | ok
testToInt8
TEST-PASS | testToInt8 | ok
testToUint8TwiceUint8Range
TEST-PASS | testToUint8TwiceUint8Range | ok
testThreadingThreadArgCopy
TEST-PASS | testThreadingThreadArgCopy | ok
testThreadingThreadVectorMoveConstruct
TEST-PASS | testThreadingThreadVectorMoveConstruct | ok
testThreadingThreadId
TEST-PASS | testThreadingThreadId | ok
testThreadingThreadSetName
TEST-PASS | testThreadingThreadSetName | ok
testThreadingThreadDetach
TEST-PASS | testThreadingThreadDetach | ok
testThreadingThreadJoin
TEST-PASS | testThreadingThreadJoin | ok
testThreadingUnlockGuard
TEST-PASS | testThreadingUnlockGuard | ok
testThreadingLockGuard
TEST-PASS | testThreadingLockGuard | ok
testThreadingMutex
TEST-PASS | testThreadingMutex | ok
testExclusiveData
TEST-PASS | testExclusiveData | ok
testThreadingConditionVariableForTimeoutPredicate
TEST-PASS | testThreadingConditionVariableForTimeoutPredicate | ok
testThreadingConditionVariableForOkayPredicate
TEST-PASS | testThreadingConditionVariableForOkayPredicate | ok
testThreadingConditionVariableForTimeout
TEST-PASS | testThreadingConditionVariableForTimeout | ok
testThreadingConditionVariableForOkay
TEST-PASS | testThreadingConditionVariableForOkay | ok
testThreadingConditionVariableUntilTimeoutPredicate
TEST-PASS | testThreadingConditionVariableUntilTimeoutPredicate | ok
testThreadingConditionVariableUntilOkayPredicate
TEST-PASS | testThreadingConditionVariableUntilOkayPredicate | ok
testThreadingConditionVariableUntilTimeout
TEST-PASS | testThreadingConditionVariableUntilTimeout | ok
testThreadingConditionVariableUntilOkay
TEST-PASS | testThreadingConditionVariableUntilOkay | ok
testThreadingConditionVariablePredicate
TEST-PASS | testThreadingConditionVariablePredicate | ok
testThreadingConditionVariable
TEST-PASS | testThreadingConditionVariable | ok
testSymbol_GetWellKnownSymbol
TEST-PASS | testSymbol_GetWellKnownSymbol | ok
testSymbol_GetSymbolFor
TEST-PASS | testSymbol_GetSymbolFor | ok
testSymbol_New
TEST-PASS | testSymbol_New | ok
testStructuredClone_SavedFrame
Testing with principals 'IsSystem'
Testing with principals 'IsNotSystem'
Testing with principals 'testPrincipals'
Testing with principals 'nullptr principals'
TEST-PASS | testStructuredClone_SavedFrame | ok
testStructuredClone_string
TEST-PASS | testStructuredClone_string | ok
testStructuredClone_object
TEST-PASS | testStructuredClone_object | ok
testStringBuffer_finishString
TEST-PASS | testStringBuffer_finishString | ok
testBug795104
TEST-PASS | testBug795104 | ok
testSharedImmutableStringsCache
TEST-PASS | testSharedImmutableStringsCache | ok
testSetPropertyIgnoringNamedGetter_direct
TEST-PASS | testSetPropertyIgnoringNamedGetter_direct | ok
testSetProperty_InheritedGlobalSetter
TEST-PASS | testSetProperty_InheritedGlobalSetter | ok
testSetProperty_NativeGetterStubSetter
TEST-PASS | testSetProperty_NativeGetterStubSetter | ok
CloneAndExecuteScript
TEST-PASS | CloneAndExecuteScript | ok
bug438633_JS_CompileFileHandleForPrincipals
TEST-PASS | bug438633_JS_CompileFileHandleForPrincipals | ok
bug438633_JS_CompileFileHandle_empty
TEST-PASS | bug438633_JS_CompileFileHandle_empty | ok
bug438633_JS_CompileFileHandle
TEST-PASS | bug438633_JS_CompileFileHandle | ok
bug438633_JS_CompileFile_empty
TEST-PASS | bug438633_JS_CompileFile_empty | ok
bug438633_JS_CompileFile
TEST-PASS | bug438633_JS_CompileFile | ok
bug438633_JS_CompileUCScriptForPrincipals
TEST-PASS | bug438633_JS_CompileUCScriptForPrincipals | ok
bug438633_JS_CompileUCScript_empty
TEST-PASS | bug438633_JS_CompileUCScript_empty | ok
bug438633_JS_CompileUCScript
TEST-PASS | bug438633_JS_CompileUCScript | ok
bug438633_CompileScriptForPrincipals
TEST-PASS | bug438633_CompileScriptForPrincipals | ok
bug438633_CompileScript_empty
TEST-PASS | bug438633_CompileScript_empty | ok
bug438633_CompileScript
TEST-PASS | bug438633_CompileScript | ok
testScriptInfo
js/src/jsapi-tests/testScriptInfo.cpp:1011:Using //@ to indicate sourceMappingURL pragmas is deprecated. Use //# instead
TEST-PASS | testScriptInfo | ok
testSavedStacks_selfHostedFrames
TEST-PASS | testSavedStacks_selfHostedFrames | ok
testSavedStacks_ErrorStackV8
TEST-PASS | testSavedStacks_ErrorStackV8 | ok
testSavedStacks_ErrorStackSpiderMonkey
TEST-PASS | testSavedStacks_ErrorStackSpiderMonkey | ok
testSavedStacks_RangeBasedForLoops
TEST-PASS | testSavedStacks_RangeBasedForLoops | ok
testSavedStacks_ApiDefaultValues
TEST-PASS | testSavedStacks_ApiDefaultValues | ok
testSavedStacks_withNoStack
TEST-PASS | testSavedStacks_withNoStack | ok
testSameValue
TEST-PASS | testSameValue | ok
testResolveRecursion_InitStandardClasses
TEST-PASS | testResolveRecursion_InitStandardClasses | ok
testResolveRecursion
TEST-PASS | testResolveRecursion | ok
testGetRegExpSource
TEST-PASS | testGetRegExpSource | ok
testGetRegExpFlags
TEST-PASS | testGetRegExpFlags | ok
testObjectIsRegExp
TEST-PASS | testObjectIsRegExp | ok
testPropCache_bug505798
TEST-PASS | testPropCache_bug505798 | ok
testPromise_RejectPromise
TEST-PASS | testPromise_RejectPromise | ok
testPromise_ResolvePromise
TEST-PASS | testPromise_ResolvePromise | ok
testPromise_GetPromiseState
TEST-PASS | testPromise_GetPromiseState | ok
testPromise_NewPromise
TEST-PASS | testPromise_NewPromise | ok
testProfileStrings_worksWhenEnabledOnTheFly
TEST-PASS | testProfileStrings_worksWhenEnabledOnTheFly | ok
testProfileStrings_isCalledWhenError
TEST-PASS | testProfileStrings_isCalledWhenError | ok
testProfileStrings_isCalledWithJIT
TEST-PASS | testProfileStrings_isCalledWithJIT | ok
testProfileStrings_isCalledWithInterpreter
TEST-PASS | testProfileStrings_isCalledWithInterpreter | ok
testPrivateGCThingValue
TEST-PASS | testPrivateGCThingValue | ok
testPrintf
TEST-PASS | testPrintf | ok
test_PreserveJitCode
js/src/jsapi-tests/testPreserveJitCode.cpp:78:CHECK_EQUAL failed: expected (1u) = 1, got (countIonScripts(global)) = 0
js/src/jsapi-tests/testPreserveJitCode.cpp:22:CHECK failed: testPreserveJitCode(false, 0)
TEST-KNOWN-FAIL | test_PreserveJitCode | js/src/jsapi-tests/testPreserveJitCode.cpp:78:CHECK_EQUAL failed: expected (1u) = 1, got (countIonScripts(global)) = 0 | js/src/jsapi-tests/testPreserveJitCode.cpp:22:CHECK failed: testPreserveJitCode(false, 0)
test_GlobalPersistentRooted
TEST-PASS | test_GlobalPersistentRooted | ok
test_PersistentRootedAssign
TEST-PASS | test_PersistentRootedAssign | ok
test_PersistentRootedCopy
TEST-PASS | test_PersistentRootedCopy | ok
test_PersistentRootedNull
TEST-PASS | test_PersistentRootedNull | ok
test_PersistentRooted
TEST-PASS | test_PersistentRooted | ok
testParseJSON_reviver
TEST-PASS | testParseJSON_reviver | ok
testParseJSON_error
TEST-PASS | testParseJSON_error | ok
testParseJSON_success
TEST-PASS | testParseJSON_success | ok
testObjectEmulatingUndefined_equal
TEST-PASS | testObjectEmulatingUndefined_equal | ok
testObjectEmulatingUndefined_truthy
TEST-PASS | testObjectEmulatingUndefined_truthy | ok
testOOM
TEST-PASS | testOOM | ok
testNullRoot
TEST-PASS | testNullRoot | ok
testNewTargetInvokeConstructor
TEST-PASS | testNewTargetInvokeConstructor | ok
testNewObject_1
TEST-PASS | testNewObject_1 | ok
testMutedErrors
TEST-PASS | testMutedErrors | ok
testMappedArrayBuffer_bug945152
TEST-PASS | testMappedArrayBuffer_bug945152 | ok
test_undef_leq_null
TEST-PASS | test_undef_leq_null | ok
test_null_leq_undef
TEST-PASS | test_null_leq_undef | ok
test_nz_leq_pz
TEST-PASS | test_nz_leq_pz | ok
test_pz_leq_nz
TEST-PASS | test_pz_leq_nz | ok
test_leq_same_nums
TEST-PASS | test_leq_same_nums | ok
test_all_nleq_nan
TEST-PASS | test_all_nleq_nan | ok
test_nan_nleq_all
TEST-PASS | test_nan_nleq_all | ok
test_null_leq_null
TEST-PASS | test_null_leq_null | ok
test_undef_leq_undef
TEST-PASS | test_undef_leq_undef | ok
testLookup_bug570195
TEST-PASS | testLookup_bug570195 | ok
testLookup_bug522590
TEST-PASS | testLookup_bug522590 | ok
testJitRegisterSet_FPU_Aliases
TEST-PASS | testJitRegisterSet_FPU_Aliases | ok
testJitRegisterSet_FPU
TEST-PASS | testJitRegisterSet_FPU | ok
testJitRegisterSet_GPR
TEST-PASS | testJitRegisterSet_GPR | ok
testJitRangeAnalysis_shiftRight
TEST-PASS | testJitRangeAnalysis_shiftRight | ok
testJitRangeAnalysis_StrictCompareBeta
TEST-PASS | testJitRangeAnalysis_StrictCompareBeta | ok
testJitRangeAnalysis_MathSignBeta
TEST-PASS | testJitRangeAnalysis_MathSignBeta | ok
testJitRangeAnalysis_MathSign
TEST-PASS | testJitRangeAnalysis_MathSign | ok
testJitRValueAlloc_ConstantPool
TEST-PASS | testJitRValueAlloc_ConstantPool | ok
testJitRValueAlloc_UndefinedAndNull
TEST-PASS | testJitRValueAlloc_UndefinedAndNull | ok
testJitRValueAlloc_UntypedStack
TEST-PASS | testJitRValueAlloc_UntypedStack | ok
testJitRValueAlloc_UntypedReg
TEST-PASS | testJitRValueAlloc_UntypedReg | ok
testJitRValueAlloc_TypedStack
TEST-PASS | testJitRValueAlloc_TypedStack | ok
testJitRValueAlloc_TypedReg
TEST-PASS | testJitRValueAlloc_TypedReg | ok
testJitRValueAlloc_FloatStack
TEST-PASS | testJitRValueAlloc_FloatStack | ok
testJitRValueAlloc_FloatReg
TEST-PASS | testJitRValueAlloc_FloatReg | ok
testJitRValueAlloc_Double
TEST-PASS | testJitRValueAlloc_Double | ok
testJitGVN_PinnedPhis
TEST-PASS | testJitGVN_PinnedPhis | ok
testJitGVN_FixupOSROnlyLoopNested
TEST-PASS | testJitGVN_FixupOSROnlyLoopNested | ok
testJitGVN_FixupOSROnlyLoop
TEST-PASS | testJitGVN_FixupOSROnlyLoop | ok
testJitFoldsTo_UnsignedMod
TEST-PASS | testJitFoldsTo_UnsignedMod | ok
testJitFoldsTo_UnsignedDiv
TEST-PASS | testJitFoldsTo_UnsignedDiv | ok
testJitNotNotTest
TEST-PASS | testJitNotNotTest | ok
testJitNotTest
TEST-PASS | testJitNotTest | ok
testJitNotNotNot
TEST-PASS | testJitNotNotNot | ok
testJitNotNot
TEST-PASS | testJitNotNot | ok
testJitFoldsTo_NoDivReciprocal
TEST-PASS | testJitFoldsTo_NoDivReciprocal | ok
testJitFoldsTo_DivReciprocal
TEST-PASS | testJitFoldsTo_DivReciprocal | ok
testJitDCEinGVN_phi
TEST-PASS | testJitDCEinGVN_phi | ok
testJitDCEinGVN_ins
TEST-PASS | testJitDCEinGVN_ins | ok
testJSEvaluateScript
TEST-PASS | testJSEvaluateScript | ok
testIteratorObject
TEST-PASS | testIteratorObject | ok
testIsInsideNursery
TEST-PASS | testIsInsideNursery | ok
testIntlAvailableLocales
TEST-PASS | testIntlAvailableLocales | ok
testPinAcrossGC
TEST-PASS | testPinAcrossGC | ok
testAtomizedIsNotPinned
TEST-PASS | testAtomizedIsNotPinned | ok
testIntTypesABI
TEST-PASS | testIntTypesABI | ok
testIntString_bug515273
TEST-PASS | testIntString_bug515273 | ok
testStringToPropertyName
TEST-PASS | testStringToPropertyName | ok
testStringIsIndex
TEST-PASS | testStringIsIndex | ok
testIndexToString
TEST-PASS | testIndexToString | ok
testHashSetOfMoveOnlyType
TEST-PASS | testHashSetOfMoveOnlyType | ok
testHashRekeyManualRemoval
TEST-PASS | testHashRekeyManualRemoval | ok
testHashRekeyManual
TEST-PASS | testHashRekeyManual | ok
test_GetPropertyDescriptor
TEST-PASS | test_GetPropertyDescriptor | ok
testGCWeakRef
TEST-PASS | testGCWeakRef | ok
testWeakCacheGCVector
TEST-PASS | testWeakCacheGCVector | ok
testWeakCacheMap
TEST-PASS | testWeakCacheMap | ok
testWeakCacheSet
TEST-PASS | testWeakCacheSet | ok
testGCUID
TEST-PASS | testGCUID | ok
testGCStoreBufferRemoval
TEST-PASS | testGCStoreBufferRemoval | ok
testGCOutOfMemory
TEST-PASS | testGCOutOfMemory | ok
testIncrementalRoots
TEST-PASS | testIncrementalRoots | ok
testLiveNurseryWrappeeCCW
TEST-PASS | testLiveNurseryWrappeeCCW | ok
testLiveNurseryWrapperCCW
TEST-PASS | testLiveNurseryWrapperCCW | ok
testLiveNurseryCCW
TEST-PASS | testLiveNurseryCCW | ok
testDeadNurseryCCW
TEST-PASS | testDeadNurseryCCW | ok
testTracingIncomingCCWs
*thingp         = 0x7000b7aa080
*expectedThingp = 0x7000b7aa080
kind         = 0
expectedKind = 0
TEST-PASS | testTracingIncomingCCWs | ok
testGCSliceCallback
TEST-PASS | testGCSliceCallback | ok
testUnbarrieredEquality
TEST-PASS | testUnbarrieredEquality | ok
testGCHeapPostBarriers
TEST-PASS | testGCHeapPostBarriers | ok
testGCGrayMarking
TEST-PASS | testGCGrayMarking | ok
testGCFinalizeCallback
TEST-PASS | testGCFinalizeCallback | ok
testGCHandleVector
TEST-PASS | testGCHandleVector | ok
testTraceableFifo
TEST-PASS | testTraceableFifo | ok
testGCRootedVector
TEST-PASS | testGCRootedVector | ok
testGCHandleHashMap
TEST-PASS | testGCHandleHashMap | ok
testGCRootedHashMap
TEST-PASS | testGCRootedHashMap | ok
testGCPersistentRootedTraceableCannotOutliveRuntime
TEST-PASS | testGCPersistentRootedTraceableCannotOutliveRuntime | ok
testGCPersistentRootedOutlivesRuntime
TEST-PASS | testGCPersistentRootedOutlivesRuntime | ok
testGCRootedStaticStructInternalStackStorageAugmented
TEST-PASS | testGCRootedStaticStructInternalStackStorageAugmented | ok
testGCSuppressions
TEST-PASS | testGCSuppressions | ok
testGCExactRooting
TEST-PASS | testGCExactRooting | ok
testGCChunkPool
TEST-PASS | testGCChunkPool | ok
testGCCellPtr
TEST-PASS | testGCCellPtr | ok
testGCAllocator
Segmentation fault
Attachment #8861164 - Flags: feedback?(martin)
Attachment #8861164 - Flags: feedback?(landry)
Attachment #8861164 - Flags: feedback?(andrew)

Comment 3

a year ago
mozreview-review
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

https://reviewboard.mozilla.org/r/133116/#review135958

Thanks!
Attachment #8861164 - Flags: review?(luke) → review+
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

I have zero knowledge in, nor time to devote to arm*
Attachment #8861164 - Flags: feedback?(landry)
Assignee: nobody → jbeich
Too late for 53, but we can track this for 54 onwards and make sure to uplift a fix once we have it.
status-firefox53: affected → wontfix
tracking-firefox54: --- → +
tracking-firefox55: --- → +
(Assignee)

Comment 7

a year ago
mozreview-review
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

https://reviewboard.mozilla.org/r/133116/#review138662

::: js/src/wasm/WasmSignalHandlers.cpp:110
(Diff revision 1)
>  # define R10_sig(p) ((p)->sc_r10)
>  # define R11_sig(p) ((p)->sc_r11)
>  # define R12_sig(p) ((p)->sc_r12)
>  # define R13_sig(p) ((p)->sc_r13)
>  # define R14_sig(p) ((p)->sc_r14)
>  # define R15_sig(p) ((p)->sc_r15)

OpenBSD arm has `sc_pc` but not `sc_r15`.

https://github.com/openbsd/src/blob/8dbfa91322fa/sys/arch/arm/include/signal.h#L84

::: js/src/wasm/WasmSignalHandlers.cpp:177
(Diff revision 1)
>  # define R11_sig(p) ((p)->uc_mcontext.__gregs[_REG_R11])
>  # define R12_sig(p) ((p)->uc_mcontext.__gregs[_REG_R12])
>  # define R13_sig(p) ((p)->uc_mcontext.__gregs[_REG_R13])
>  # define R14_sig(p) ((p)->uc_mcontext.__gregs[_REG_R14])
>  # define R15_sig(p) ((p)->uc_mcontext.__gregs[_REG_R15])
> +# define EPC_sig(p) ((p)->uc_mcontext.__gregs[_REG_PC])

NetBSD mips doesn't have `_REG_PC` but there is `_REG_EPC`.

https://github.com/jsonn/src/blob/105a2837c72d/lib/libc/arch/mips/gen/makecontext.c#L71
https://github.com/jsonn/src/blob/105a2837c72d/sys/arch/mips/include/mcontext.h#L77

::: js/src/wasm/WasmSignalHandlers.cpp:210
(Diff revision 1)
>  # define R12_sig(p) ((p)->uc_mcontext.mc_r12)
>  # define R13_sig(p) ((p)->uc_mcontext.mc_r13)
>  # define R14_sig(p) ((p)->uc_mcontext.mc_r14)
> +# if defined(__FreeBSD__) && defined(__aarch64__)
> +#  define EPC_sig(p) ((p)->uc_mcontext.mc_gpregs.gp_elr)
> +#  define RFP_sig(p) ((p)->uc_mcontext.mc_gpregs.gp_x[19])

FreeBSD aarch64 stores frame pointer in X29 (like on Linux). Not sure why libc uses X19.

https://github.com/freebsd/freebsd/blob/39f39609ab65/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c#L208
https://github.com/freebsd/freebsd/blob/39f39609ab65/sys/arm64/arm64/stack_machdep.c#L69
https://github.com/freebsd/freebsd/blob/39f39609ab65/lib/libc/aarch64/gen/makecontext.c#L84
(Assignee)

Updated

a year ago
Whiteboard: [npotb]
Comment hidden (mozreview-request)
(Assignee)

Updated

a year ago
status-firefox-esr45: unaffected → wontfix
status-firefox-esr52: unaffected → fix-optional
Keywords: checkin-needed

Comment 9

a year ago
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/604acb6a6aec
Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs. r=luke
Keywords: checkin-needed

Comment 10

a year ago
bugherder
https://hg.mozilla.org/mozilla-central/rev/604acb6a6aec
Status: NEW → RESOLVED
Last Resolved: a year ago
status-firefox55: affected → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
(Assignee)

Comment 11

a year ago
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

Approval Request Comment
[ESR consideration]: Better support for opt-in JIT on aarch64 and opt-out JIT on mips.
[Feature/Bug causing the regression]: bug 1323115 regression for aarch64, bug 969375 + bug 1213752 regression for mips*
[User impact if declined]: Broken build on BSD systems on aarch64/mips* unless --disable-ion is added to .mozconfig.
[Is this code covered by automated tests?]: BSDs are NPOTB, aarch64/mips* are NPOTB.
[Has the fix been verified in Nightly?]: Yes but only on FreeBSD 11.0 aarch64.
[Needs manual test from QE? If yes, steps to reproduce]: No
[List of other uplifts needed for the feature/fix]: None
[Is the change risky?]: No
[Why is the change risky/not risky?]: Can only break build due to mismerge or a wild typo.
[String changes made/needed]: None
Attachment #8861164 - Flags: approval-mozilla-esr52?
Attachment #8861164 - Flags: approval-mozilla-aurora?
(Assignee)

Comment 12

a year ago
Created attachment 8864045 [details] [diff] [review]
rebased for esr52 (and ff54)

Patch conflicts in context lines are due to bug 1338217 and bug 1353050.
(Assignee)

Updated

a year ago
Attachment #8861164 - Flags: approval-mozilla-aurora? → approval-mozilla-beta?
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

Fix a broken build on BSD systems on aarch64/mips. Beta54+. Should be in 54 beta 6.
Attachment #8861164 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

Comment 14

a year ago
bugherderuplift
https://hg.mozilla.org/releases/mozilla-beta/rev/ffe5677aac10
status-firefox54: affected → fixed
(In reply to Jan Beich from comment #11)
> [Is this code covered by automated tests?]: BSDs are NPOTB, aarch64/mips*
> are NPOTB.
> [Has the fix been verified in Nightly?]: Yes but only on FreeBSD 11.0
> aarch64.
> [Needs manual test from QE? If yes, steps to reproduce]: No

Setting qe-verify- based on Jan's assessment on manual testing needs.
Flags: qe-verify-
Comment on attachment 8864045 [details] [diff] [review]
rebased for esr52 (and ff54)

build fix for (tier-3) bsd on arm64
Attachment #8864045 - Flags: approval-mozilla-esr52+
Comment on attachment 8861164 [details]
Bug 1359142 - Define EPC_sig and RFP_sig for JS_CODEGEN_(ARM64|MIPS) on BSDs.

moved esr52 approval to the other patch
Attachment #8861164 - Flags: approval-mozilla-esr52?

Comment 18

a year ago
bugherderuplift
https://hg.mozilla.org/releases/mozilla-esr52/rev/57d9f57d9768
status-firefox-esr52: fix-optional → fixed
You need to log in before you can comment on or make changes to this bug.