зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 2 changesets (bug 1844484) for causing toolchain bustages in build/pure_virtual/pure_virtual.c CLOSED TREE
Backed out changeset 750b3385f0aa (bug 1844484) Backed out changeset a8537b37554e (bug 1844484)
This commit is contained in:
Родитель
277edd6f96
Коммит
22b794a8f1
|
@ -18,8 +18,6 @@ if CONFIG["OS_ARCH"] == "WINNT":
|
|||
else:
|
||||
DIRS += ["unix"]
|
||||
|
||||
DIRS += ["pure_virtual"]
|
||||
|
||||
if CONFIG["MOZ_STDCXX_COMPAT"]:
|
||||
DIRS += ["unix/stdc++compat"]
|
||||
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
Library("pure_virtual")
|
||||
|
||||
SOURCES += ["pure_virtual.c"]
|
||||
|
||||
FORCE_STATIC_LIB = True
|
||||
|
||||
USE_STATIC_LIBS = True
|
||||
|
||||
# Build a real library so that the linker can remove it if the symbol
|
||||
# is never used.
|
||||
NO_EXPAND_LIBS = True
|
|
@ -1,27 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <mozilla/Assertions.h>
|
||||
|
||||
// This function is used in vtables to point at pure virtual methods.
|
||||
// The implementation in the standard library usually aborts, but
|
||||
// the function is normally never called (a call would be a bug).
|
||||
// Each of these entries in vtables, however, require an unnecessary
|
||||
// dynamic relocation. Defining our own function makes the linker
|
||||
// point the vtables here instead of the standard library, replacing
|
||||
// the dynamic relocations with relative relocations.
|
||||
//
|
||||
// On Windows, it doesn't really make a difference, but on macOS it
|
||||
// can be packed better, saving about 10KB in libxul, and on 64-bits
|
||||
// ELF systems, with packed relative relocations, it saves 140KB.
|
||||
//
|
||||
// Another advantage of having our own is that the abort() will fall
|
||||
// back to our own abort() rather than the system's.
|
||||
#ifdef _MSC_VER
|
||||
int __cdecl _purecall() { MOZ_CRASH("pure virtual call"); }
|
||||
#else
|
||||
__attribute__((visibility("hidden"))) void __cxa_pure_virtual() {
|
||||
MOZ_CRASH("pure virtual call");
|
||||
}
|
||||
#endif
|
|
@ -388,8 +388,6 @@ class TreeMetadataEmitter(LoggingMixin):
|
|||
context, obj, variable, self.STDCXXCOMPAT_NAME[obj.KIND]
|
||||
)
|
||||
if obj.KIND == "target":
|
||||
if "pure_virtual" in self._libs and "mfbt" in self._libs:
|
||||
self._link_library(context, obj, variable, "pure_virtual")
|
||||
for lib in context.config.substs.get("STLPORT_LIBS", []):
|
||||
obj.link_system_library(lib)
|
||||
|
||||
|
|
|
@ -6,6 +6,14 @@ add_task(async function run_test() {
|
|||
return;
|
||||
}
|
||||
|
||||
var isOSX = "nsILocalFileMac" in Ci;
|
||||
if (isOSX) {
|
||||
dump(
|
||||
"INFO | test_crash_purevirtual.js | TODO: purecalls not caught on OS X\n"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// Try crashing with a pure virtual call
|
||||
await do_crash(
|
||||
function () {
|
||||
|
|
Загрузка…
Ссылка в новой задаче