diff options
Diffstat (limited to 'www-client/chromium/files/chromium-79-gcc-alignas.patch')
-rw-r--r-- | www-client/chromium/files/chromium-79-gcc-alignas.patch | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/www-client/chromium/files/chromium-79-gcc-alignas.patch b/www-client/chromium/files/chromium-79-gcc-alignas.patch index f7f1fe7ac5bc..1e031e2a6f23 100644 --- a/www-client/chromium/files/chromium-79-gcc-alignas.patch +++ b/www-client/chromium/files/chromium-79-gcc-alignas.patch @@ -1,46 +1,6 @@ Re-use chromium alignas workaround in protobuf. --- -diff --git a/third_party/protobuf/src/google/protobuf/port_def.inc b/third_party/protobuf/src/google/protobuf/port_def.inc -index f1bd85d..9c204a1 100644 ---- a/third_party/protobuf/src/google/protobuf/port_def.inc -+++ b/third_party/protobuf/src/google/protobuf/port_def.inc -@@ -528,6 +528,35 @@ PROTOBUF_EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport)); - #undef IN - #endif // _MSC_VER - -+// Specify memory alignment for structs, classes, etc. -+// Use like: -+// class PROTOBUF_ALIGNAS(16) MyClass { ... } -+// PROTOBUF_ALIGNAS(16) int array[4]; -+// -+// In most places you can use the C++11 keyword "alignas", which is preferred. -+// -+// But compilers have trouble mixing __attribute__((...)) syntax with -+// alignas(...) syntax. -+// -+// Doesn't work in clang or gcc: -+// struct alignas(16) __attribute__((packed)) S { char c; }; -+// Works in clang but not gcc: -+// struct __attribute__((packed)) alignas(16) S2 { char c; }; -+// Works in clang and gcc: -+// struct alignas(16) S3 { char c; } __attribute__((packed)); -+// -+// There are also some attributes that must be specified *before* a class -+// definition: visibility (used for exporting functions/classes) is one of -+// these attributes. This means that it is not possible to use alignas() with a -+// class that is marked as exported. -+#if defined(_MSC_VER) -+#define PROTOBUF_ALIGNAS(byte_alignment) __declspec(align(byte_alignment)) -+#elif defined(__GNUC__) -+#define PROTOBUF_ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment))) -+#else -+#define PROTOBUF_ALIGNAS(byte_alignment) alignas(byte_alignment) -+#endif -+ - #if defined(__clang__) - #pragma clang diagnostic push - // TODO(gerbens) ideally we cleanup the code. But a cursory try shows many diff --git a/third_party/protobuf/src/google/protobuf/arena.h b/third_party/protobuf/src/google/protobuf/arena.h index dedc221..a8515ce 100644 --- a/third_party/protobuf/src/google/protobuf/arena.h |