Skip to content

Commit e789975

Browse files
Initial commit
0 parents  commit e789975

File tree

5 files changed

+120
-0
lines changed

5 files changed

+120
-0
lines changed

build.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/sh
2+
set -xe
3+
4+
mkdir -p sources
5+
cd sources
6+
apt source $1
7+
cd ..
8+
9+
cowbuilder build --configfile pbuilderrc sources/*.dsc
10+
11+
rm -rf sources
12+

hooks/D65force-use-llvm-clang

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#!/bin/bash
2+
set -xe
3+
4+
apt-get install -y "${APTGETOPT[@]}" clang-8 lld-8 llvm-8-dev
5+
6+
ln -sf /usr/bin/clang-8 /usr/bin/clang
7+
ln -sf /usr/bin/clang++-8 /usr/bin/clang++
8+
ln -sf /usr/bin/clang-cpp-8 /usr/bin/clang-cpp
9+
ln -sf /usr/bin/lld-8 /usr/bin/lld
10+
11+
ln -sf /usr/bin/clang /usr/bin/cc
12+
ln -sf /usr/bin/clang /usr/bin/gcc
13+
ln -sf /usr/bin/clang /usr/bin/x86_64-linux-gnu-gcc
14+
ln -sf /usr/bin/clang++ /usr/bin/c++
15+
ln -sf /usr/bin/clang++ /usr/bin/g++
16+
ln -sf /usr/bin/clang++ /usr/bin/x86_64-linux-gnu-g++
17+
ln -sf /usr/bin/clang-cpp /usr/bin/cpp
18+
ln -sf /usr/bin/clang-cpp /usr/bin/x86_64-linux-gnu-cpp
19+
20+
ln -sf /usr/bin/lld /usr/bin/ld
21+
ln -sf /usr/bin/lld /usr/bin/x86_64-linux-gnu-ld
22+
23+
ln -sf /usr/bin/llvm-ranlib-8 /usr/bin/ranlib
24+
ln -sf /usr/bin/llvm-objcopy-8 /usr/bin/objcopy
25+
ln -sf /usr/bin/llvm-objcopy-8 /usr/bin/strip
26+
ln -sf /usr/bin/llvm-nm-8 /usr/bin/nm
27+
ln -sf /usr/bin/llvm-objdump-8 /usr/bin/objdump
28+
ln -sf /usr/bin/llvm-as-8 /usr/bin/as
29+
30+
exit 0

hooks/D80no-man-db-rebuild

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/sh
2+
# Don't rebuild man-db
3+
4+
echo "I: Preseed man-db/auto-update to false"
5+
debconf-set-selections <<EOF
6+
man-db man-db/auto-update boolean false
7+
EOF

init.sh

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/bin/sh
2+
set -xe
3+
4+
. ./pbuilderrc
5+
mkdir -p $APTCACHE
6+
mkdir -p $BUILDPLACE
7+
mkdir -p $BASEPATH
8+
cowbuilder create --configfile pbuilderrc
9+

pbuilderrc

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# pbuilder specific vars
2+
DISTRIBUTION=buster
3+
BUILDRESULT=debs
4+
BUILDPLACE=builder/build
5+
BASEPATH=builder/base.cow
6+
APTCACHE="$(pwd)/builder/aptcache"
7+
MIRRORSITE=http://deb.debian.org/debian/
8+
OTHERMIRROR="deb http://security.debian.org/ buster/updates main|deb http://deb.debian.org/debian buster-updates main|deb http://http.debian.net/debian buster-backports main"
9+
HOOKDIR=hooks
10+
EATMYDATA=yes
11+
DEBBUILDOPTS="--build=binary" # Builds the architecture specific binary packages
12+
EXTRAPACKAGES="clang-8 lld-8 llvm-8-dev"
13+
#APTCONFDIR=""
14+
#NO_COWDANCER_UPDATE=1
15+
#DEBOOTSTRAPOPTS=""
16+
17+
# pbuilder undocumented vars...
18+
BIN_NMU=yes
19+
BINNMU_MESSAGE="rebuild with clang and hardening options"
20+
BINNMU_MAINTAINER="Paul Grandperrin <[email protected]>"
21+
BINNMU_VERSION="hardened1"
22+
#BINARY_ARCH=binary
23+
24+
# dpkg-buildpackage specific vars
25+
#export DEB_VENDOR ?
26+
export DEB_BUILD_PROFILES="nocheck nodoc noudeb nobiarch"
27+
export DEB_BUILD_OPTIONS="nocheck nodoc hardening=+all"
28+
29+
# Toolchain selection
30+
export CC=clang
31+
export CPP=clang-cpp
32+
export CXX=clang++
33+
export LD=lld
34+
35+
# Toolchain flags
36+
FLAGS="$FLAGS -flto -fPIE -fPIC -pie"
37+
38+
# Safe Stack
39+
FLAGS="$FLAGS -fsanitize=safe-stack"
40+
41+
# CFI
42+
#FLAGS="$FLAGS -fvisibility=hidden" # if it fails, use default
43+
FLAGS="$FLAGS -fvisibility=default"
44+
FLAGS="$FLAGS -fsanitize=cfi-cast-strict"
45+
FLAGS="$FLAGS -fsanitize=cfi-derived-cast"
46+
FLAGS="$FLAGS -fsanitize=cfi-unrelated-cast"
47+
FLAGS="$FLAGS -fsanitize=cfi-nvcall"
48+
FLAGS="$FLAGS -fsanitize=cfi-vcall"
49+
FLAGS="$FLAGS -fsanitize=cfi-icall" # if it fails, try with -fsanitize-cfi-icall-generalize-pointers (incompat with cross-dso) and -fno-sanitize-cfi-canonical-jump-tables or replace with -fsanitize=function (slower, included in -fsanitize=undefined)
50+
FLAGS="$FLAGS -fsanitize=cfi-mfcall"
51+
52+
# UBSAN
53+
FLAGS="$FLAGS -fsanitize-trap=integer"
54+
FLAGS="$FLAGS -fsanitize-trap=nullability"
55+
FLAGS="$FLAGS -fsanitize-trap=function"
56+
FLAGS="$FLAGS -fsanitize-trap=bounds"
57+
FLAGS="$FLAGS -fsanitize-trap=pointer-overflow"
58+
59+
# customize dpkg-buildflags
60+
export DEB_CFLAGS_APPEND="$FLAGS"
61+
export DEB_CXXFLAGS_APPEND="$FLAGS"
62+
export DEB_LDFLAGS_APPEND="$FLAGS"

0 commit comments

Comments
 (0)