mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 01:39:16 -04:00
Reported by: mikael Obtained from: https://cgit.freebsd.org/ports/commit/?id=2ea9b7459046eac3f7f3fcd7515cb0fb0340fccb
40 lines
1.4 KiB
C++
40 lines
1.4 KiB
C++
--- build/rust/allocator/alias.h.orig 2025-05-20 09:16:26 UTC
|
|
+++ build/rust/allocator/alias.h
|
|
@@ -0,0 +1,37 @@
|
|
+// Copyright 2023 The Chromium Authors
|
|
+// Use of this source code is governed by a BSD-style license that can be
|
|
+// found in the LICENSE file.
|
|
+
|
|
+// This file has been copied from //base/debug/alias.h (and then trimmed to just
|
|
+// the APIs / macros needed by //build/rust/std; additionally the APIs were
|
|
+// moved into the `build_rust_std` namespace).
|
|
+//
|
|
+// TODO(crbug.com/40279749): Avoid code duplication / reuse code.
|
|
+
|
|
+#ifndef BUILD_RUST_ALLOCATOR_ALIAS_H_
|
|
+#define BUILD_RUST_ALLOCATOR_ALIAS_H_
|
|
+
|
|
+#include <stddef.h>
|
|
+
|
|
+namespace build_rust_std {
|
|
+namespace debug {
|
|
+
|
|
+// Make the optimizer think that |var| is aliased. This can be used to prevent a
|
|
+// local variable from being optimized out (which is something that
|
|
+// `NO_CODE_FOLDING` macro definition below depends on). See
|
|
+// //base/debug/alias.h for more details.
|
|
+void Alias(const void* var);
|
|
+
|
|
+} // namespace debug
|
|
+
|
|
+} // namespace build_rust_std
|
|
+
|
|
+// Prevent code folding (where a linker identifies functions that are
|
|
+// bit-identical and overlays them, which saves space but it leads to confusing
|
|
+// call stacks because multiple symbols are at the same address). See
|
|
+// //base/debug/alias.h for more details.
|
|
+#define NO_CODE_FOLDING() \
|
|
+ const int line_number = __LINE__; \
|
|
+ build_rust_std::debug::Alias(&line_number)
|
|
+
|
|
+#endif // BUILD_RUST_ALLOCATOR_ALIAS_H_
|