Skip to content

Commit 302acaa

Browse files
davidolaszlocsomor
authored andcommitted
Fix grpc build on glibc 2.30
Closes #10285. This applies this PR: [1] on grpc directory. To sync the grpc with the latest release is outside of the scope of this CL. [1] grpc/grpc#18950
1 parent d3f8efc commit 302acaa

File tree

5 files changed

+86
-7
lines changed

5 files changed

+86
-7
lines changed

third_party/grpc/README.bazel.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
6. `rm -rf third_party/grpc/src/core/tsi/test_creds`
99
7. Update BUILD files by copying the rules from the BUILD file of gRPC;
1010
fix macros in third_party/grpc/build_defs.bzl if necessary
11-
8. Apply local patches if necessary: `patch -p3 < netinet_tcp_h.patch`
11+
8. Apply local patches if necessary: `patch -p3 < netinet_tcp_h.patch`,
12+
`patch -p1 < grpc-gettid.patch`
1213
9. Update //third_party/nanopb if necessary
1314

1415

third_party/grpc/grpc-gettid.patch

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
From 57586a1ca7f17b1916aed3dea4ff8de872dbf853 Mon Sep 17 00:00:00 2001
2+
From: Benjamin Peterson <[email protected]>
3+
Date: Fri, 3 May 2019 08:11:00 -0700
4+
Subject: [PATCH] Rename gettid() functions.
5+
6+
glibc 2.30 will declare its own gettid; see https://sourceware.org/git/?p=glibc.git;a=commit;h=1d0fc213824eaa2a8f8c4385daaa698ee8fb7c92. Rename the grpc versions to avoid naming conflicts.
7+
---
8+
src/core/lib/gpr/log_linux.cc | 6 ++----
9+
src/core/lib/gpr/log_posix.cc | 4 ++--
10+
src/core/lib/iomgr/ev_epollex_linux.cc | 4 ++--
11+
3 files changed, 6 insertions(+), 8 deletions(-)
12+
13+
diff --git a/src/core/lib/gpr/log_linux.cc b/src/core/lib/gpr/log_linux.cc
14+
index 81026e5689b..8b597b4cf2f 100644
15+
--- a/src/core/lib/gpr/log_linux.cc
16+
+++ b/src/core/lib/gpr/log_linux.cc
17+
@@ -40,7 +40,7 @@
18+
#include <time.h>
19+
#include <unistd.h>
20+
21+
-static long gettid(void) { return syscall(__NR_gettid); }
22+
+static long sys_gettid(void) { return syscall(__NR_gettid); }
23+
24+
void gpr_log(const char* file, int line, gpr_log_severity severity,
25+
const char* format, ...) {
26+
@@ -70,7 +70,7 @@ void gpr_default_log(gpr_log_func_args* args) {
27+
gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
28+
struct tm tm;
29+
static __thread long tid = 0;
30+
- if (tid == 0) tid = gettid();
31+
+ if (tid == 0) tid = sys_gettid();
32+
33+
timer = static_cast<time_t>(now.tv_sec);
34+
final_slash = strrchr(args->file, '/');
35+
diff --git a/src/core/lib/gpr/log_posix.cc b/src/core/lib/gpr/log_posix.cc
36+
index b6edc14ab6b..2f7c6ce3760 100644
37+
--- a/src/core/lib/gpr/log_posix.cc
38+
+++ b/src/core/lib/gpr/log_posix.cc
39+
@@ -31,7 +31,7 @@
40+
#include <string.h>
41+
#include <time.h>
42+
43+
-static intptr_t gettid(void) { return (intptr_t)pthread_self(); }
44+
+static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); }
45+
46+
void gpr_log(const char* file, int line, gpr_log_severity severity,
47+
const char* format, ...) {
48+
@@ -86,7 +86,7 @@ void gpr_default_log(gpr_log_func_args* args) {
49+
char* prefix;
50+
gpr_asprintf(&prefix, "%s%s.%09d %7" PRIdPTR " %s:%d]",
51+
gpr_log_severity_string(args->severity), time_buffer,
52+
- (int)(now.tv_nsec), gettid(), display_file, args->line);
53+
+ (int)(now.tv_nsec), sys_gettid(), display_file, args->line);
54+
55+
fprintf(stderr, "%-70s %s\n", prefix, args->message);
56+
gpr_free(prefix);
57+
diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc
58+
index c2d80c08ddb..4a83cb6c215 100644
59+
--- a/src/core/lib/iomgr/ev_epollex_linux.cc
60+
+++ b/src/core/lib/iomgr/ev_epollex_linux.cc
61+
@@ -1077,7 +1077,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
62+
}
63+
64+
#ifndef NDEBUG
65+
-static long gettid(void) { return syscall(__NR_gettid); }
66+
+static long sys_gettid(void) { return syscall(__NR_gettid); }
67+
#endif
68+
69+
/* pollset->mu lock must be held by the caller before calling this.
70+
@@ -1097,7 +1097,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
71+
#define WORKER_PTR (&worker)
72+
#endif
73+
#ifndef NDEBUG
74+
- WORKER_PTR->originator = gettid();
75+
+ WORKER_PTR->originator = sys_gettid();
76+
#endif
77+
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
78+
gpr_log(GPR_INFO,

third_party/grpc/src/core/lib/gpr/log_linux.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
#include <time.h>
4141
#include <unistd.h>
4242

43-
static long gettid(void) { return syscall(__NR_gettid); }
43+
static long sys_gettid(void) { return syscall(__NR_gettid); }
4444

4545
void gpr_log(const char* file, int line, gpr_log_severity severity,
4646
const char* format, ...) {
@@ -70,7 +70,7 @@ void gpr_default_log(gpr_log_func_args* args) {
7070
gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
7171
struct tm tm;
7272
static __thread long tid = 0;
73-
if (tid == 0) tid = gettid();
73+
if (tid == 0) tid = sys_gettid();
7474

7575
timer = static_cast<time_t>(now.tv_sec);
7676
final_slash = strrchr(args->file, '/');

third_party/grpc/src/core/lib/gpr/log_posix.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
#include <string.h>
3131
#include <time.h>
3232

33-
static intptr_t gettid(void) { return (intptr_t)pthread_self(); }
33+
static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); }
3434

3535
void gpr_log(const char* file, int line, gpr_log_severity severity,
3636
const char* format, ...) {
@@ -85,7 +85,7 @@ void gpr_default_log(gpr_log_func_args* args) {
8585
char* prefix;
8686
gpr_asprintf(&prefix, "%s%s.%09d %7tu %s:%d]",
8787
gpr_log_severity_string(args->severity), time_buffer,
88-
(int)(now.tv_nsec), gettid(), display_file, args->line);
88+
(int)(now.tv_nsec), sys_gettid(), display_file, args->line);
8989

9090
fprintf(stderr, "%-70s %s\n", prefix, args->message);
9191
gpr_free(prefix);

third_party/grpc/src/core/lib/iomgr/ev_epollex_linux.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1150,7 +1150,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
11501150
}
11511151

11521152
#ifndef NDEBUG
1153-
static long gettid(void) { return syscall(__NR_gettid); }
1153+
static long sys_gettid(void) { return syscall(__NR_gettid); }
11541154
#endif
11551155

11561156
/* pollset->mu lock must be held by the caller before calling this.
@@ -1170,7 +1170,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
11701170
#define WORKER_PTR (&worker)
11711171
#endif
11721172
#ifndef NDEBUG
1173-
WORKER_PTR->originator = gettid();
1173+
WORKER_PTR->originator = sys_gettid();
11741174
#endif
11751175
if (grpc_polling_trace.enabled()) {
11761176
gpr_log(GPR_INFO,

0 commit comments

Comments
 (0)