Skip to content

Commit

Permalink
Sync from Piper @402594188
Browse files Browse the repository at this point in the history
PROTOBUF_SYNC_PIPER
  • Loading branch information
acozzette committed Oct 12, 2021
1 parent 3afc828 commit 1f66b1b
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 8 deletions.
1 change: 1 addition & 0 deletions docs/third_party.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ GRPC (http://www.grpc.io/) is Google's RPC implementation for Protocol Buffers.
* https://github.com/Yeolar/raster (C++)
* https://github.com/jnordberg/wsrpc (JavaScript Node.js/Browser)
* https://github.com/ppissias/xsrpcj (Java)
* https://github.com/twitchtv/twirp (Multiple languages)

Inactive:

Expand Down
2 changes: 1 addition & 1 deletion editors/protobuf-mode.el
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
(eval-when-compile
(and (= emacs-major-version 24)
(>= emacs-minor-version 4)
(require 'cl))
(require 'cl-lib))
(require 'cc-langs)
(require 'cc-fonts))

Expand Down
2 changes: 1 addition & 1 deletion java/lite.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ protobuf Java runtime. If you are using Maven, use the following:
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-javalite</artifactId>
<version>3.9.1</version>
<version>3.18.1</version>
</dependency>
```

Expand Down
1 change: 1 addition & 0 deletions java/util/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.truth</groupId>
Expand Down
2 changes: 1 addition & 1 deletion src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ To build protobuf from source, the following tools are needed:

On Ubuntu/Debian, you can install them with:

$ sudo apt-get install autoconf automake libtool curl make g++ unzip
sudo apt-get install autoconf automake libtool curl make g++ unzip

On other platforms, please use the corresponding package managing tool to
install them before proceeding.
Expand Down
12 changes: 8 additions & 4 deletions src/google/protobuf/arenastring.cc
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,12 @@ void ArenaStringPtr::ClearToDefault(const LazyString& default_value,
}
}

inline void SetStrWithHeapBuffer(std::string* str, ArenaStringPtr* s) {
TaggedPtr<std::string> res;
res.Set(str);
s->UnsafeSetTaggedPointer(res);
}

const char* EpsCopyInputStream::ReadArenaString(const char* ptr,
ArenaStringPtr* s,
Arena* arena) {
Expand All @@ -264,13 +270,11 @@ const char* EpsCopyInputStream::ReadArenaString(const char* ptr,
int size = ReadSize(&ptr);
if (!ptr) return nullptr;

auto str = Arena::Create<std::string>(arena);
auto* str = Arena::Create<std::string>(arena);
ptr = ReadString(ptr, size, str);
GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);

TaggedPtr<std::string> res;
res.Set(str);
s->UnsafeSetTaggedPointer(res);
SetStrWithHeapBuffer(str, s);

return ptr;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,8 @@ void ParseFunctionGenerator::GenerateArenaString(Formatter& format,
", ~0x$2$u",
inlined_string_index / 32,
strings::Hex(1u << (inlined_string_index % 32), strings::ZERO_PAD_8));
} else {
GOOGLE_DCHECK(field->default_value_string().empty());
}
format(
");\n"
Expand Down
2 changes: 1 addition & 1 deletion tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ internal_build_java() {
cp -r java $dir
cd $dir && $MVN clean
# Skip tests here - callers will decide what tests they want to run
$MVN install -pl util -Dmaven.test.skip=true
$MVN install -pl core -Dmaven.test.skip=true
}

build_java() {
Expand Down
148 changes: 148 additions & 0 deletions toolchain/cc_toolchain_config.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
load(
"@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl",
"feature",
"flag_group",
"flag_set",
"tool",
"tool_path",
)

all_link_actions = [
ACTION_NAMES.cpp_link_executable,
ACTION_NAMES.cpp_link_dynamic_library,
ACTION_NAMES.cpp_link_nodeps_dynamic_library,
]

all_compile_actions = [
ACTION_NAMES.assemble,
ACTION_NAMES.preprocess_assemble,
ACTION_NAMES.linkstamp_compile,
ACTION_NAMES.c_compile,
ACTION_NAMES.cpp_compile,
ACTION_NAMES.cpp_header_parsing,
ACTION_NAMES.cpp_module_codegen,
ACTION_NAMES.cpp_module_compile,
ACTION_NAMES.clif_match,
ACTION_NAMES.lto_backend,
]

def _impl(ctx):
tool_paths = [
tool_path(
name = "gcc",
path = "/usr/local/bin/clang",
),
tool_path(
name = "ld",
path = "/usr/bin/ld",
),
tool_path(
name = "ar",
path = "/usr/bin/ar",
),
tool_path(
name = "compat-ld",
path = "/usr/bin/ld",
),
tool_path(
name = "cpp",
path = "/bin/false",
),
tool_path(
name = "dwp",
path = "/bin/false",
),
tool_path(
name = "gcov",
path = "/bin/false",
),
tool_path(
name = "nm",
path = "/bin/false",
),
tool_path(
name = "objcopy",
path = "/bin/false",
),
tool_path(
name = "objdump",
path = "/bin/false",
),
tool_path(
name = "strip",
path = "/bin/false",
),
]

linker_flags = feature(
name = "default_linker_flags",
enabled = True,
flag_sets = [
flag_set(
actions = all_link_actions,
flag_groups = [
flag_group(
flags = [
"-lstdc++",
"--target=" + ctx.attr.target_full_name,
],
),
],
),
],
)
compiler_flags = feature(
name = "default_compile_flags",
enabled = True,
flag_sets = [
flag_set(
actions = all_compile_actions,
flag_groups = [
flag_group(
flags = [
ctx.attr.bit_flag,
"-Wall",
"-no-canonical-prefixes",
"--target=" + ctx.attr.target_full_name,
"-isystem",
ctx.attr.toolchain_dir,
ctx.attr.include_flag,
],
),
],
),
],
)

return cc_common.create_cc_toolchain_config_info(
abi_libc_version = ctx.attr.target_cpu,
abi_version = ctx.attr.target_cpu,
ctx = ctx,
compiler = "clang",
cxx_builtin_include_directories = [
ctx.attr.toolchain_dir,
"/usr/include",
"/usr/local/lib/clang",
],
features = [linker_flags, compiler_flags],
host_system_name = "local",
target_cpu = ctx.attr.target_cpu,
target_libc = ctx.attr.target_cpu,
target_system_name = ctx.attr.target_full_name,
toolchain_identifier = ctx.attr.toolchain_name,
tool_paths = tool_paths,
)

cc_toolchain_config = rule(
implementation = _impl,
attrs = {
"bit_flag": attr.string(mandatory = True, values = ["-m32", "-m64"]),
"include_flag": attr.string(mandatory = False),
"target_cpu": attr.string(mandatory = True, values = ["aarch64", "ppc64", "systemz", "x86_32", "x86_64"]),
"target_full_name": attr.string(mandatory = True),
"toolchain_dir": attr.string(mandatory = True),
"toolchain_name": attr.string(mandatory = True),
},
provides = [CcToolchainConfigInfo],
)
8 changes: 8 additions & 0 deletions toolchain/toolchains.bazelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
build:cross_config --crosstool_top=//toolchain:clang_suite
build:cross_config --host_crosstool_top=@bazel_tools//tools/cpp:toolchain

build:linux-aarch_64 --config=cross_config --cpu=linux-aarch_64
build:linux-ppcle_64 --config=cross_config --cpu=linux-ppcle_64
build:linux-s390_64 --config=cross_config --cpu=linux-s390_64
build:linux-x86_32 --config=cross_config --cpu=linux-x86_32
build:linux-x86_64 --config=cross_config --cpu=linux-x86_64

0 comments on commit 1f66b1b

Please sign in to comment.