ARM64: atomicops_internals_arm_gcc.h does not define 64bit methods

RESOLVED FIXED in Firefox 46

Status

()

defect
RESOLVED FIXED
4 years ago
3 years ago

People

(Reporter: jhorak, Assigned: m_kato)

Tracking

unspecified
mozilla47
Points:
---

Firefox Tracking Flags

(firefox46 fixed, firefox47 fixed, firefox-esr45 fixed)

Details

(Whiteboard: btpp-active)

Attachments

(3 attachments)

I got following error during build of Firefox 45 beta 8 on arm64 (gcc):
/usr/lib/gcc/aarch64-redhat-linux/4.8.5/../../../../lib64/crtn.o../../dom/media/systemservices/Unified_cpp_systemservices0.o: In function `Singleton<mozilla::camera::CamerasSingleton, DefaultSingletonTraits<mozilla::camera::CamerasSingleton>, mozilla::camera::CamerasSingleton>::OnExit(void*)':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:172: undefined reference to `base::subtle::NoBarrier_AtomicExchange(long volatile*, long)'
../../dom/media/systemservices/Unified_cpp_systemservices0.o: In function `Singleton<mozilla::camera::CamerasSingleton, DefaultSingletonTraits<mozilla::camera::CamerasSingleton>, mozilla::camera::CamerasSingleton>::get()':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:118: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:125: undefined reference to `base::subtle::Acquire_CompareAndSwap(long volatile*, long, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:130: undefined reference to `base::subtle::Release_Store(long volatile*, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:147: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'
../../media/webrtc/trunk/webrtc/system_wrappers/system_wrappers_system_wrappers/Unified_cpp_system_wrappers1.o: In function `Singleton<webrtc::TracePosix, DefaultSingletonTraits<webrtc::TracePosix>, webrtc::TracePosix>::OnExit(void*)':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:172: undefined reference to `base::subtle::NoBarrier_AtomicExchange(long volatile*, long)'
../../media/webrtc/trunk/webrtc/system_wrappers/system_wrappers_system_wrappers/Unified_cpp_system_wrappers1.o: In function `Singleton<webrtc::TracePosix, DefaultSingletonTraits<webrtc::TracePosix>, webrtc::TracePosix>::get()':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:118: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:125: undefined reference to `base::subtle::Acquire_CompareAndSwap(long volatile*, long, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:130: undefined reference to `base::subtle::Release_Store(long volatile*, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:147: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'
../../media/webrtc/trunk/webrtc/modules/modules_rtp_rtcp/Unified_cpp_webrtc_modules1.o: In function `Singleton<webrtc::SSRCDatabase, DefaultSingletonTraits<webrtc::SSRCDatabase>, webrtc::SSRCDatabase>::OnExit(void*)':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:172: undefined reference to `base::subtle::NoBarrier_AtomicExchange(long volatile*, long)'
../../media/webrtc/trunk/webrtc/modules/modules_rtp_rtcp/Unified_cpp_webrtc_modules1.o: In function `Singleton<webrtc::SSRCDatabase, DefaultSingletonTraits<webrtc::SSRCDatabase>, webrtc::SSRCDatabase>::get()':
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:118: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:125: undefined reference to `base::subtle::Acquire_CompareAndSwap(long volatile*, long, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:130: undefined reference to `base::subtle::Release_Store(long volatile*, long)'
/builddir/build/BUILD/firefox-45.0/firefox-45.0b8/ipc/chromium/src/base/singleton.h:147: undefined reference to `base::subtle::NoBarrier_Load(long const volatile*)'

Problem is that atomicops_internals_arm_gcc.h does not define 64 bits version of methods from above.

Attaching simple workaround, having a fix would be much better though.
media/webrtc/trunk/build/build_config.h and security/sandbox/chromium/build/build_config.h use  ARCH_CPU_ARM64, but bug 963030 defines ARCH_CPU_AARCH64...

Chromium uses ARCH_CPU_ARM64, so we should use it instead of ARCH_CPU_AARCH64...
And V8 has optimized version of aarch64's atomicops.h.  So we should use it.
Assignee: nobody → m_kato
Whiteboard: btpp-active
Chromium defines ARCH_CPU_ARM64 and ARCH_CPU_ARM_FAMILY for aarch64.  So we should use it instead.  Because webrtc and sandbox already define it

Review commit: https://reviewboard.mozilla.org/r/37079/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37079/
Attachment #8724530 - Flags: review?(wmccloskey)
Comment on attachment 8724530 [details]
MozReview Request: Bug 1250403 - Part 1. Define ARCH_CPU_ARM64 instead of ARCH_CPU_AARCH64. r?billm

https://reviewboard.mozilla.org/r/37079/#review33809
Attachment #8724530 - Flags: review?(wmccloskey) → review+
Comment on attachment 8724532 [details]
MozReview Request: Bug 1250403 - Part 2. Import crbug #354405 for aarch64. r?billm

https://reviewboard.mozilla.org/r/37081/#review33811
Attachment #8724532 - Flags: review?(wmccloskey) → review+
https://hg.mozilla.org/mozilla-central/rev/7c2671907288
https://hg.mozilla.org/mozilla-central/rev/b3d2424a348e
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla47
Can we have this uplifted, possibly up to esr45? Bug 1230768 made this necessary, and was uplifted up to esr45.
Flags: needinfo?(m_kato)
Comment on attachment 8724530 [details]
MozReview Request: Bug 1250403 - Part 1. Define ARCH_CPU_ARM64 instead of ARCH_CPU_AARCH64. r?billm

[Approval Request Comment]
If this is not a sec:{high,crit} bug, please state case for ESR consideration:
User impact if declined: 
Cannot build and work Firefox for Linux/aarch64 platform.  Some Linux distributors (Fedora, Debian etc) already provides aarch64 version.

Fix Landed on Version:
This fix is already landed in 47

Risk to taking this patch (and alternatives if risky): 
Nothing.  Linux/aarch64 isn't tier-1 platform.

String or UUID changes made by this patch: 
N/A

See https://wiki.mozilla.org/Release_Management/ESR_Landing_Process for more info.
Flags: needinfo?(m_kato)
Attachment #8724530 - Flags: approval-mozilla-esr45?
Comment on attachment 8724532 [details]
MozReview Request: Bug 1250403 - Part 2. Import crbug #354405 for aarch64. r?billm

[Approval Request Comment]
If this is not a sec:{high,crit} bug, please state case for ESR consideration:
User impact if declined: 
Cannot build and work Firefox for Linux/aarch64 platform.  Some Linux distributors (Fedora, Debian etc) already provides aarch64 version.

Fix Landed on Version:
This fix is already landed in 47

Risk to taking this patch (and alternatives if risky): 
Nothing.  Linux/aarch64 isn't tier-1 platform.

String or UUID changes made by this patch: 
N/A

See https://wiki.mozilla.org/Release_Management/ESR_Landing_Process for more info.
Attachment #8724532 - Flags: approval-mozilla-esr45?
This would be needed on beta too.
Flags: needinfo?(m_kato)
Comment on attachment 8724530 [details]
MozReview Request: Bug 1250403 - Part 1. Define ARCH_CPU_ARM64 instead of ARCH_CPU_AARCH64. r?billm

Approval Request Comment
[Feature/regressing bug #]:
Nothing

[User impact if declined]:
User cannot build Firefox for Linux/aarch64

[Describe test coverage new/current, TreeHerder]:
Landed in m-c.

[Risks and why]:
Nothing.  We don't release Firefox for Linux/aarch64.

[String/UUID change made/needed]:
No.
Flags: needinfo?(m_kato)
Attachment #8724530 - Flags: approval-mozilla-beta?
Comment on attachment 8724532 [details]
MozReview Request: Bug 1250403 - Part 2. Import crbug #354405 for aarch64. r?billm

Approval Request Comment
[Feature/regressing bug #]:
Nothing

[User impact if declined]:
User cannot build Firefox for Linux/aarch64

[Describe test coverage new/current, TreeHerder]:
Landed in m-c.

[Risks and why]:
Nothing.  We don't release Firefox for Linux/aarch64 yet.

[String/UUID change made/needed]:
No.
Attachment #8724532 - Flags: approval-mozilla-beta?
Comment on attachment 8724530 [details]
MozReview Request: Bug 1250403 - Part 1. Define ARCH_CPU_ARM64 instead of ARCH_CPU_AARCH64. r?billm

Let's try this for beta 5, we want to support Linux builds.
But, if there are problems, and we can't fix them for the beta 6 build, we will have to back this out.
Attachment #8724530 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #8724532 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment on attachment 8724530 [details]
MozReview Request: Bug 1250403 - Part 1. Define ARCH_CPU_ARM64 instead of ARCH_CPU_AARCH64. r?billm

Simplify the life of Linux packagers, taking it.
Should be in 45.1.0
Attachment #8724530 - Flags: approval-mozilla-esr45? → approval-mozilla-esr45+
Comment on attachment 8724532 [details]
MozReview Request: Bug 1250403 - Part 2. Import crbug #354405 for aarch64. r?billm

Simplify the life of Linux packagers, taking it.
Should be in 45.1.0
Attachment #8724532 - Flags: approval-mozilla-esr45? → approval-mozilla-esr45+
You need to log in before you can comment on or make changes to this bug.