Closed Bug 1325495 Opened 7 years ago Closed 7 years ago

xpcshell segfaulting during 'make install' on Linux/hppa

Categories

(Core :: XPCOM, defect)

51 Branch
Other
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla53
Tracking Status
firefox53 --- fixed

People

(Reporter: glaubitz, Unassigned)

Details

Attachments

(2 files, 8 obsolete files)

2.21 KB, patch
froydnj
: review+
Details | Diff | Splinter Review
953 bytes, patch
jandem
: review+
Details | Diff | Splinter Review
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0
Build ID: 20161201031821

Steps to reproduce:

Building Firefox on Linux/hppa fails during the "make install" stage [1]:

dh_auto_install --builddirectory=build-browser -- installdir=/usr/lib/firefox \
	MOZ_APP_BASE_VERSION=50 \
	MOZ_PKG_MANIFEST=/<<PKGBUILDDIR>>/build-browser/debian/installer/package-manifest \
	MOZ_NONLOCALIZED_PKG_LIST="xpcom debian" \
	MOZ_LOCALIZED_PKG_LIST=en-US \
	TAR_CREATE_FLAGS="--exclude=.mkdir.done --hard-dereference -chf" \
	SIGN_NSS=
	make -j1 install DESTDIR=/<<PKGBUILDDIR>>/debian/tmp AM_UPDATE_INFO_DIR=no installdir=/usr/lib/firefox MOZ_APP_BASE_VERSION=50 MOZ_PKG_MANIFEST=/<<PKGBUILDDIR>>/build-browser/debian/installer/package-manifest "MOZ_NONLOCALIZED_PKG_LIST=xpcom debian" MOZ_LOCALIZED_PKG_LIST=en-US "TAR_CREATE_FLAGS=--exclude=.mkdir.done --hard-dereference -chf" SIGN_NSS=
make[2]: Entering directory '/<<PKGBUILDDIR>>/build-browser'
make[3]: Entering directory '/<<PKGBUILDDIR>>/build-browser/browser/installer'
OMNIJAR_NAME=omni.ja \
NO_PKG_FILES="core bsdecho js js-config jscpucfg nsinstall viewer TestGtkEmbed elf-dynstr-gc mangle* maptsv* mfc* msdump* msmap* nm2tsv* nsinstall* res/samples res/throbber shlibsign* certutil* pk12util* BadCertServer* OCSPStaplingServer* GenerateOCSPResponse* chrome/chrome.rdf chrome/app-chrome.manifest chrome/overlayinfo components/compreg.dat components/xpti.dat content_unit_tests necko_unit_tests *.dSYM " \
/<<PKGBUILDDIR>>/build-browser/_virtualenv/bin/python /<<PKGBUILDDIR>>/toolkit/mozapps/installer/packager.py -DMOZ_APP_NAME=firefox -DPREF_DIR=defaults/preferences -DMOZ_GTK=1 -DMOZ_GTK3=1 -DMOZ_SYSTEM_NSPR=1 -DMOZ_SYSTEM_NSS=1 -DJAREXT= -DMOZ_CHILD_PROCESS_NAME=plugin-container -DNECKO_WIFI -DDLL_PREFIX=lib -DDLL_SUFFIX=.so -DBIN_SUFFIX= -DDIR_MACOS= -DDIR_RESOURCES= -DBINPATH=bin -DRESPATH=bin -DLPROJ_ROOT=en -DMOZ_ICU_VERSION=56 -DMOZ_ICU_DATA_ARCHIVE -DMOZ_ICU_DBG_SUFFIX= -DICU_DATA_FILE=icudt56b.dat -DA11Y_LOG=1 -DACCESSIBILITY=1 -DATK_MAJOR_VERSION=2 -DATK_MINOR_VERSION=22 -DATK_REV_VERSION=0 -DATTRIBUTE_ALIGNED_MAX=64 -DBUILD_CTYPES=1 -DCROSS_COMPILE='' -DD_INO=d_ino -DENABLE_INTL_API=1 -DENABLE_MARIONETTE=1 -DENABLE_SYSTEM_EXTENSION_DIRS=1 -DENABLE_TESTS=1 -DEXPOSE_INTL_API=1 -DFIREFOX_VERSION=50.1.0 -DFORCE_PR_LOG=1 -DFUNCPROTO=15 -DGDK_VERSION_MAX_ALLOWED=GDK_VERSION_3_4 -DGDK_VERSION_MIN_REQUIRED=GDK_VERSION_3_4 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DGL_PROVIDER_GLX=1 -DGTEST_HAS_RTTI=0 -DHAVE_ALLOCA_H=1 -DHAVE_BYTESWAP_H=1 -DHAVE_CLOCK_MONOTONIC=1 -DHAVE_DIRENT_H=1 -DHAVE_DLADDR=1 -DHAVE_DLOPEN=1 -DHAVE_FONTCONFIG_FCFREETYPE_H=1 -DHAVE_FT_BITMAP_SIZE_Y_PPEM=1 -DHAVE_FT_GLYPHSLOT_EMBOLDEN=1 -DHAVE_FT_LOAD_SFNT_TABLE=1 -DHAVE_GETOPT_H=1 -DHAVE_GMTIME_R=1 -DHAVE_I18N_LC_MESSAGES=1 -DHAVE_INTTYPES_H=1 -DHAVE_LANGINFO_CODESET=1 -DHAVE_LCHOWN=1 -DHAVE_LIBVPX=1 -DHAVE_LIBX11_XCB=1 -DHAVE_LIBXCB=1 -DHAVE_LIBXCB_SHM=1 -DHAVE_LINUX_IF_ADDR_H=1 -DHAVE_LINUX_QUOTA_H=1 -DHAVE_LINUX_RTNETLINK_H=1 -DHAVE_LOCALECONV=1 -DHAVE_LOCALTIME_R=1 -DHAVE_LSTAT64=1 -DHAVE_MALLINFO=1 -DHAVE_MALLOC_H=1 -DHAVE_MALLOC_USABLE_SIZE=1 -DHAVE_MEMALIGN=1 -DHAVE_MEMMEM=1 -DHAVE_NETINET_IN_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_POSIX_FADVISE=1 -DHAVE_POSIX_FALLOCATE=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_PTHREAD_H=1 -DHAVE_RES_NINIT=1 -DHAVE_SETPRIORITY=1 -DHAVE_STAT64=1 -DHAVE_STDINT_H=1 -DHAVE_STRERROR=1 -DHAVE_STRNDUP=1 -DHAVE_SYSCALL=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_QUOTA_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_THREAD_TLS_KEYWORD=1 -DHAVE_TRUNCATE64=1 -DHAVE_UNISTD_H=1 -DHAVE_VALLOC=1 -DHAVE_VA_COPY=1 -DHAVE_VISIBILITY_ATTRIBUTE=1 -DHAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1 -DHAVE__UNWIND_BACKTRACE=1 -DHAVE___CXA_DEMANGLE=1 -DJS_DEFAULT_JITREPORT_GRANULARITY=3 -DMALLOC_H='<malloc.h>' -DMALLOC_USABLE_SIZE_CONST_PTR='' -DMOZILLA_OFFICIAL=1 -DMOZILLA_UAVERSION='"50.0"' -DMOZILLA_VERSION='"50.1.0"' -DMOZILLA_VERSION_U=50.1.0 -DMOZ_ACCESSIBILITY_ATK=1 -DMOZ_ADDON_SIGNING=1 -DMOZ_APP_UA_NAME='""' -DMOZ_APP_UA_VERSION='"50.1.0"' -DMOZ_B2G_OS_NAME='""' -DMOZ_B2G_VERSION='"1.0.0"' -DMOZ_BUILD_APP=browser -DMOZ_BUNDLED_FONTS=1 -DMOZ_CRASHREPORTER_ENABLE_PERCENT=100 -DMOZ_DATA_REPORTING=1 -DMOZ_DEFAULT_MOZILLA_FIVE_HOME='"/usr/lib/firefox"' -DMOZ_DISTRIBUTION_ID='"org.mozilla"' -DMOZ_DLL_SUFFIX='".so"' -DMOZ_EME=1 -DMOZ_ENABLE_DBUS=1 -DMOZ_ENABLE_GIO=1 -DMOZ_ENABLE_SIGNMAR=1 -DMOZ_ENABLE_STARTUP_NOTIFICATION=1 -DMOZ_ENABLE_XREMOTE=1 -DMOZ_FEEDS=1 -DMOZ_FFMPEG=1 -DMOZ_FMP4=1 -DMOZ_GAMEPAD=1 -DMOZ_GLUE_IN_PROGRAM=1 -DMOZ_INSTRUMENT_EVENT_LOOP=1 -DMOZ_JSDOWNLOADS=1 -DMOZ_LOGGING=1 -DMOZ_MACBUNDLE_ID=org.mozilla.firefox -DMOZ_MEMORY=1 -DMOZ_MEMORY_LINUX=1 -DMOZ_OFFICIAL_BRANDING=1 -DMOZ_PAY=1 -DMOZ_PERMISSIONS=1 -DMOZ_PHOENIX=1 -DMOZ_PLACES=1 -DMOZ_SAFE_BROWSING=1 -DMOZ_SAMPLE_TYPE_FLOAT32=1 -DMOZ_SECUREELEMENT=1 -DMOZ_SERVICES_HEALTHREPORT=1 -DMOZ_STACKWALKING=1 -DMOZ_STATIC_JS=1 -DMOZ_SYSTEM_SQLITE=1 -DMOZ_TREE_CAIRO=1 -DMOZ_TREE_PIXMAN=1 -DMOZ_UPDATE_CHANNEL=default -DMOZ_URL_CLASSIFIER=1 -DMOZ_USER_DIR='".mozilla"' -DMOZ_VORBIS=1 -DMOZ_VPX_NO_MEM_REPORTING=1 -DMOZ_WEBGL_CONFORMANT=1 -DMOZ_WEBM_ENCODER=1 -DMOZ_WEBSPEECH=1 -DMOZ_WEBSPEECH_TEST_BACKEND=1 -DMOZ_WIDGET_GTK=3 -DMOZ_X11=1 -DMOZ_XUL=1 -DNO_NSPR_10_SUPPORT=1 -DNS_PRINTING=1 -DNS_PRINT_PREVIEW=1 -DRELEASE_BUILD=1 -DSPIDERMONKEY_PROMISE=1 -DSTATIC_JS_API=1 -DSTDC_HEADERS=1 -DTARGET_XPCOM_ABI='"hppa-gcc3"' -DU_STATIC_IMPLEMENTATION=1 -DU_USING_ICU_NAMESPACE=0 -DVA_COPY=va_copy -DXP_LINUX=1 -DXP_UNIX=1 -D_REENTRANT=1 -DAB_CD=en-US \
	--format omni \
	--removals /<<PKGBUILDDIR>>/browser/installer/removed-files.in \
	 \
	 \
	 \
	 \
	--optimizejars \
	 \
	 \
	/<<PKGBUILDDIR>>/build-browser/debian/installer/package-manifest ../../dist ../../dist/firefox \
	
Executing /<<PKGBUILDDIR>>/build-browser/dist/bin/xpcshell -g /<<PKGBUILDDIR>>/build-browser/dist/bin/ -a /<<PKGBUILDDIR>>/build-browser/dist/bin/ -f /<<PKGBUILDDIR>>/toolkit/mozapps/installer/precompile_cache.js -e precompile_startupcache("resource://gre/");
resource://gre/components/AlarmsManager.js
resource://gre/components/AppsService.js
resource://gre/components/BrowserElementParent.js
resource://gre/components/BrowserElementProxy.js
resource://gre/components/CSSUnprefixingService.js
resource://gre/components/ChromeNotifications.js
resource://gre/components/ColorAnalyzer.js
resource://gre/components/ConsoleAPIStorage.js
resource://gre/components/ContactManager.js
resource://gre/components/ContentProcessSingleton.js
resource://gre/components/DOMSecureElement.js
resource://gre/components/DownloadLegacy.js
resource://gre/components/EditorUtils.js
resource://gre/components/FeedProcessor.js
resource://gre/components/FormAutofillContentService.js
resource://gre/components/FormAutofillStartup.js
resource://gre/components/FormHistoryStartup.js
resource://gre/components/FxAccountsPush.js
resource://gre/components/InstallPackagedWebapp.js
resource://gre/components/MainProcessSingleton.js
resource://gre/components/MozKeyboard.js
resource://gre/components/NetworkGeolocationProvider.js
resource://gre/components/NotificationStorage.js
resource://gre/components/PACGenerator.js
resource://gre/components/PackagedAppUtils.js
resource://gre/components/PageIconProtocolHandler.js
resource://gre/components/PageThumbsProtocol.js
resource://gre/components/Payment.js
resource://gre/components/PaymentFlowInfo.js
resource://gre/components/PaymentProvider.js
resource://gre/components/PeerConnection.js
resource://gre/components/PermissionPromptService.js
resource://gre/components/PermissionSettings.js
resource://gre/components/PhoneNumberService.js
resource://gre/components/PlacesCategoriesStarter.js
resource://gre/components/PresentationControlService.js
resource://gre/components/PresentationDataChannelSessionTransport.js
resource://gre/components/PresentationDeviceInfoManager.js
resource://gre/components/PrivateBrowsingTrackingProtectionWhitelist.js
resource://gre/components/Push.js
resource://gre/components/PushComponents.js
resource://gre/components/PushServiceHandler.js
Traceback (most recent call last):
  File "/<<PKGBUILDDIR>>/toolkit/mozapps/installer/packager.py", line 415, in <module>
    main()
  File "/<<PKGBUILDDIR>>/toolkit/mozapps/installer/packager.py", line 409, in main
    args.source, gre_path, base)
  File "/<<PKGBUILDDIR>>/toolkit/mozapps/installer/packager.py", line 166, in precompile_cache
    errors.fatal('Error while running startup cache precompilation')
  File "/<<PKGBUILDDIR>>/python/mozbuild/mozpack/errors.py", line 103, in fatal
    self._handle(self.FATAL, msg)
  File "/<<PKGBUILDDIR>>/python/mozbuild/mozpack/errors.py", line 98, in _handle
    raise ErrorMessage(msg)
mozpack.errors.ErrorMessage: Error: Error while running startup cache precompilation
/<<PKGBUILDDIR>>/toolkit/mozapps/installer/packager.mk:41: recipe for target 'stage-package' failed
make[3]: *** [stage-package] Error 1
make[3]: Leaving directory '/<<PKGBUILDDIR>>/build-browser/browser/installer'
/<<PKGBUILDDIR>>/browser/build.mk:21: recipe for target 'install' failed
make[2]: *** [install] Error 2
make[2]: Leaving directory '/<<PKGBUILDDIR>>/build-browser'
dh_auto_install: make -j1 install DESTDIR=/<<PKGBUILDDIR>>/debian/tmp AM_UPDATE_INFO_DIR=no installdir=/usr/lib/firefox MOZ_APP_BASE_VERSION=50 MOZ_PKG_MANIFEST=/<<PKGBUILDDIR>>/build-browser/debian/installer/package-manifest MOZ_NONLOCALIZED_PKG_LIST=xpcom debian MOZ_LOCALIZED_PKG_LIST=en-US TAR_CREATE_FLAGS=--exclude=.mkdir.done --hard-dereference -chf SIGN_NSS= returned exit code 2
debian/rules:296: recipe for target 'stamps/install-browser' failed

Running the xpcshell command manually reveals it's actually xpcshell which is segfaulting:

(unstable-hppa-sbuild)root@phantom:/build/firefox-bmck09/firefox-50.1.0/build-browser# export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/build/firefox-bmck09/firefox-50.1.0/build-browser/dist/bin/(unstable-hppa-sbuild)root@phantom:/build/firefox-bmck09/firefox-50.1.0/build-browser#
/build/firefox-bmck09/firefox-50.1.0/build-browser/dist/bin/xpcshell -g /build/firefox-bmck09/firefox-50.1.0/build-browser/dist/bin/ -a
/build/firefox-bmck09/firefox-50.1.0/build-browser/dist/bin/ -f /build/firefox-bmck09/firefox-50.1.0/toolkit/mozapps/installer/precompile_cache.js -e
precompile_startupcache\(\"resource://gre/\"\);
resource://gre/components/AlarmsManager.js
resource://gre/components/AppsService.js
resource://gre/components/BrowserElementParent.js
resource://gre/components/BrowserElementProxy.js
resource://gre/components/CSSUnprefixingService.js
resource://gre/components/ChromeNotifications.js
resource://gre/components/ColorAnalyzer.js
resource://gre/components/ConsoleAPIStorage.js
resource://gre/components/ContactManager.js
resource://gre/components/ContentProcessSingleton.js
resource://gre/components/DOMSecureElement.js
resource://gre/components/DownloadLegacy.js
resource://gre/components/EditorUtils.js
resource://gre/components/FeedProcessor.js
resource://gre/components/FormAutofillContentService.js
resource://gre/components/FormAutofillStartup.js
resource://gre/components/FormHistoryStartup.js
resource://gre/components/FxAccountsPush.js
resource://gre/components/InstallPackagedWebapp.js
resource://gre/components/MainProcessSingleton.js
resource://gre/components/MozKeyboard.js
resource://gre/components/NetworkGeolocationProvider.js
resource://gre/components/NotificationStorage.js
resource://gre/components/PACGenerator.js
resource://gre/components/PackagedAppUtils.js
resource://gre/components/PageIconProtocolHandler.js
resource://gre/components/PageThumbsProtocol.js
resource://gre/components/Payment.js
resource://gre/components/PaymentFlowInfo.js
resource://gre/components/PaymentProvider.js
resource://gre/components/PeerConnection.js
resource://gre/components/PermissionPromptService.js
resource://gre/components/PermissionSettings.js
resource://gre/components/PhoneNumberService.js
resource://gre/components/PlacesCategoriesStarter.js
resource://gre/components/PresentationControlService.js
resource://gre/components/PresentationDataChannelSessionTransport.js
resource://gre/components/PresentationDeviceInfoManager.js
resource://gre/components/PrivateBrowsingTrackingProtectionWhitelist.js
resource://gre/components/Push.js
resource://gre/components/PushComponents.js
resource://gre/components/PushServiceHandler.js
Segmentation fault
(unstable-hppa-sbuild)root@phantom:/build/firefox-bmck09/firefox-50.1.0/build-browser#

The backtrace in gdb reveals that the crash is happening the xpcom code:

Thread 1 "xpcshell" received signal SIGSEGV, Segmentation fault.
xptiTypelibGuts::GetEntryAt (this=0x35b8f727, i=38634) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiTypelibGuts.cpp:42
42          xptiInterfaceEntry* r = mEntryArray[i];
(gdb) bt
#0  xptiTypelibGuts::GetEntryAt (this=0x35b8f727, i=38634) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiTypelibGuts.cpp:42
#1  0xf6e1bffc in xptiInterfaceEntry::ResolveLocked (this=0xf9f116ba) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiInterfaceInfo.cpp:77
#2  0xf6e1c11c in xptiInterfaceEntry::Resolve (this=this@entry=0xf9f116ba) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiInterfaceInfo.cpp:54
#3  0xf6e1c168 in xptiInterfaceEntry::EnsureResolved (this=this@entry=0xf9f116ba) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiprivate.h:219
#4  0xf6e1c354 in xptiInterfaceEntry::GetMethodInfo (this=0xf9f116ba, index=5818, index@entry=3, info=info@entry=0xfa705710)
    at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptinfo/xptiInterfaceInfo.cpp:180
#5  0xf6e1d948 in PrepareAndDispatch (self=0xfa7053d4, methodIndex=<optimized out>, args=0xf9f116ba, floatargs=0xfa705630)
    at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptcall/md/unix/xptcstubs_pa32.cpp:39
#6  0xf6e1fb9c in SharedStub () at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptcall/md/unix/xptcstubs_asm_parisc_linux.s:58
#7  0xf6e1db7c in nsXPTCStubBase::Stub3 (this=<optimized out>) at /build/firefox-bmck09/firefox-50.1.0/xpcom/reflect/xptcall/xptcstubsdef.inc:1
#8  0xf749e798 in mozJSComponentLoader::ModuleEntry::GetFactory (module=..., entry=...) at /build/firefox-bmck09/firefox-50.1.0/js/xpconnect/loader/mozJSComponentLoader.cpp:1364
#9  0xf6e0119c in nsFactoryEntry::GetFactory (this=0xf9f116ba) at /build/firefox-bmck09/firefox-50.1.0/xpcom/components/nsComponentManager.cpp:1907
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

My suspicion is that there were some changes to the xptcall/xptinvoke code and the hppa-specific xpt stubs were not updated accordingly.

I will try to follow up with a patch once I know more.

> [1] https://buildd.debian.org/status/fetch.php?pkg=firefox&arch=hppa&ver=50.1.0-1&stamp=1481704086
OS: Unspecified → Linux
Hardware: Unspecified → Other
Component: Untriaged → Build Config
Component: Build Config → XPCOM
Product: Firefox → Core
So, the problem is very likely the missing atomic operations on hppa.

From js/src/jit/AtomicOperations.h:

  // You can disable the JIT with --disable-ion but you must still                                                                                                                           
  // provide the atomic operations that will be used by the JS engine.                                                                                                                       
  // When the JIT is disabled the operations are simply safe-for-races                                                                                                                       
  // C++ realizations of atomics.  These operations cannot be written                                                                                                                        
  // in portable C++, hence the default here is to crash.  See the                                                                                                                           
  // top of the file for more guidance.

We're missing these atomic operations on alpha, m68k and sh4 as well.
Attachment #8822708 - Flags: review?(mh+mozilla)
Attachment #8822708 - Flags: review?(martin)
Attachment #8822709 - Flags: review?(mh+mozilla)
Attachment #8822709 - Flags: review?(martin)
Attaching two patches which should fix the issue.

The first patch by me enables SPARC AtomicOperations on hppa, the second one - by John David Anglin (a very active hppa porter) - adds new Linux hppa xptcstubs code.
Fix the commit message for the first patch.
Attachment #8822708 - Attachment is obsolete: true
Attachment #8822708 - Flags: review?(mh+mozilla)
Attachment #8822708 - Flags: review?(martin)
Attachment #8822710 - Flags: review?(mh+mozilla)
Attachment #8822710 - Flags: review?(martin)
Also improved the commit message for the second patch.
Attachment #8822709 - Attachment is obsolete: true
Attachment #8822709 - Flags: review?(mh+mozilla)
Attachment #8822709 - Flags: review?(martin)
Attachment #8822712 - Flags: review?(mh+mozilla)
Attachment #8822712 - Flags: review?(martin)
Attachment #8822710 - Attachment is obsolete: true
Attachment #8822710 - Flags: review?(mh+mozilla)
Attachment #8822710 - Flags: review?(martin)
Attachment #8822923 - Flags: review?(mh+mozilla)
Attachment #8822923 - Flags: review?(martin)
Attachment #8822712 - Attachment is obsolete: true
Attachment #8822712 - Flags: review?(mh+mozilla)
Attachment #8822712 - Flags: review?(martin)
Attachment #8822924 - Flags: review?(mh+mozilla)
Attachment #8822924 - Flags: review?(martin)
Attaching two new patches. It turns out, that Firefox on hppa can be fixed with two very minimal fixes.
Added a comment to the inline assembly as requested by John David Anglin who wrote the patch.
Attachment #8822924 - Attachment is obsolete: true
Attachment #8822924 - Flags: review?(mh+mozilla)
Attachment #8822924 - Flags: review?(martin)
Attachment #8822950 - Flags: review?(mh+mozilla)
Attachment #8822950 - Flags: review?(martin)
Attachment #8822923 - Flags: review?(mh+mozilla)
Attachment #8822923 - Flags: review?(martin)
Attachment #8822923 - Flags: review?(jdemooij)
Attachment #8822950 - Flags: review?(nfroyd)
Attachment #8822950 - Flags: review?(mh+mozilla)
Attachment #8822950 - Flags: review?(martin)
Comment on attachment 8822923 [details] [diff] [review]
0001-Bug-1325495-js-jit-Use-PowerPC-atomic-operations-on-.patch

Review of attachment 8822923 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/src/jit/AtomicOperations.h
@@ +324,5 @@
>  # include "jit/arm/AtomicOperations-arm.h"
>  #elif defined(JS_CODEGEN_ARM64)
>  # include "jit/arm64/AtomicOperations-arm64.h"
> +#elif defined(__hppa__)
> +# include "jit/none/AtomicOperations-ppc.h"

Could you move this inside the "#elif defined(JS_CODEGEN_NONE)" block below? That way we handle all no-JIT platforms the same way.
Attachment #8822923 - Flags: review?(jdemooij)
Attachment #8822923 - Attachment is obsolete: true
Attachment #8825763 - Flags: review?(jdemooij)
Attachment #8822950 - Attachment is obsolete: true
Attachment #8822950 - Flags: review?(nfroyd)
Attachment #8825764 - Flags: review?(nfroyd)
(In reply to Jan de Mooij [:jandem] from comment #11)
> Could you move this inside the "#elif defined(JS_CODEGEN_NONE)" block below?
> That way we handle all no-JIT platforms the same way.

Done. Also rebased both patches.
Comment on attachment 8825763 [details] [diff] [review]
0001-Bug-1325495-js-jit-Use-PowerPC-atomic-operations-on-.patch

Review of attachment 8825763 [details] [diff] [review]:
-----------------------------------------------------------------

Thanks!

::: js/src/jit/AtomicOperations.h
@@ +341,5 @@
>  #  include "jit/none/AtomicOperations-ppc.h"
>  # elif defined(__aarch64__)
>  #  include "jit/arm64/AtomicOperations-arm64.h"
> +# elif defined(__hppa__)
> +# include "jit/none/AtomicOperations-ppc.h"

Nit: extra space before "include" so it matches the others.
Attachment #8825763 - Flags: review?(jdemooij) → review+
Attachment #8825763 - Attachment is obsolete: true
Attachment #8825788 - Flags: review?(jdemooij)
(In reply to Jan de Mooij [:jandem] from comment #15)
> Comment on attachment 8825763 [details] [diff] [review]
> 0001-Bug-1325495-js-jit-Use-PowerPC-atomic-operations-on-.patch
> 
> Review of attachment 8825763 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> Thanks!
> 
> ::: js/src/jit/AtomicOperations.h
> @@ +341,5 @@
> >  #  include "jit/none/AtomicOperations-ppc.h"
> >  # elif defined(__aarch64__)
> >  #  include "jit/arm64/AtomicOperations-arm64.h"
> > +# elif defined(__hppa__)
> > +# include "jit/none/AtomicOperations-ppc.h"
> 
> Nit: extra space before "include" so it matches the others.

Fixed. Thanks.
Attachment #8825788 - Flags: review?(jdemooij) → review+
Comment on attachment 8825764 [details] [diff] [review]
0002-Bug-1325495-xpcom-Save-r26-in-arg0-stack-slot-on-hpp.patch

Review of attachment 8825764 [details] [diff] [review]:
-----------------------------------------------------------------

rs=me, though it would probably be more robust to rewrite StubN in assembly, as is done for other architectures.
Attachment #8825764 - Flags: review?(nfroyd) → review+
Pushed by mh@glandium.org:
https://hg.mozilla.org/integration/mozilla-inbound/rev/1328eedd9e60
js:jit: Use PowerPC atomic operations on hppa. r=jandem
https://hg.mozilla.org/integration/mozilla-inbound/rev/ce9e9f0dc752
xpcom: Save %r26 in arg0 stack slot on hppa with gcc. r=froydnj
https://hg.mozilla.org/mozilla-central/rev/1328eedd9e60
https://hg.mozilla.org/mozilla-central/rev/ce9e9f0dc752
Status: UNCONFIRMED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla53
(whoops, wrong bug. Ignore the CC changes)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: