ebpf: fix ebpf compile error

Some/most of the samples/tools throw and error, e.g.:
LLVM ERROR: Cannot select: 0x56049b79dcb0: ch,glue = BPFISD::CALL 0x56049a93ad60, TargetExternalSymbol:i64'__stack_chk_fail'
  0x56049b391500: i64 = TargetExternalSymbol'__stack_chk_fail'
  In function: waker

bcc-stack-protector.patch adds -fno-stack-protector to the CFLAGS
which fixes this error.

Signed-off-by: Rolf Neugebauer <rolf.neugebauer@docker.com>
This commit is contained in:
Rolf Neugebauer 2017-01-06 18:06:05 +00:00
parent fe533386f0
commit be37d7b0fa
3 changed files with 13 additions and 3 deletions

View File

@ -6,7 +6,7 @@ COPY cdefs.h /usr/include/sys/
ADD kernel-headers.tar /
ADD kernel-dev.tar /
ADD kernel-modules.tar /
ADD 100-musl-compat.patch decl.patch intl.patch bcc-gnuism.patch ./
ADD 100-musl-compat.patch decl.patch intl.patch bcc-gnuism.patch bcc-stack-protector.patch ./
RUN cat elfutils-$ELFUTILS_VERSION.tar.bz2 | tar xjf -
RUN cd elfutils-$ELFUTILS_VERSION && \
patch -p1 < ../100-musl-compat.patch && \
@ -15,7 +15,7 @@ RUN cd elfutils-$ELFUTILS_VERSION && \
automake && \
./configure --prefix=/usr CFLAGS=-Wno-strict-aliasing && \
make -C libelf && make -C libelf install
RUN cd bcc && patch -p0 < ../bcc-gnuism.patch
RUN cd bcc && patch -p0 < ../bcc-gnuism.patch && patch -p0 < ../bcc-stack-protector.patch
RUN mkdir -p bcc/build && cd bcc/build && \
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DLUAJIT_INCLUDE_DIR=/usr/include/luajit-2.1 && \
make && \

View File

@ -2,7 +2,7 @@ KERNEL_FILES=-C ../../kernel/x86_64 kernel-headers.tar kernel-dev.tar kernel-mod
default: ebpf.tag
ebpf.tag: Dockerfile 100-musl-compat.patch bcc-gnuism.patch decl.patch intl.patch temp_failure.patch cdefs.h error.h
ebpf.tag: Dockerfile 100-musl-compat.patch bcc-gnuism.patch bcc-stack-protector.patch decl.patch intl.patch temp_failure.patch cdefs.h error.h
BUILD=$$( tar cf - $^ $(KERNEL_FILES) | docker build -q - ) && [ -n "$$BUILD" ] && echo "Built $$BUILD" && \
echo $$BUILD > $@

View File

@ -0,0 +1,10 @@
--- src/cc/frontends/clang/kbuild_helper.cc
+++ src/cc/frontends/clang/kbuild_helper.cc
@@ -89,6 +89,7 @@ int KBuildHelper::get_flags(const char *uname_machine, vector<string> *cflags) {
cflags->push_back("-D__HAVE_BUILTIN_BSWAP64__");
cflags->push_back("-Wno-unused-value");
cflags->push_back("-Wno-pointer-sign");
+ cflags->push_back("-fno-stack-protector");
return 0;
}