Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
tor-browser-build
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
brizental
tor-browser-build
Commits
eb83bb70
Commit
eb83bb70
authored
2 years ago
by
Jeremy Rand
Committed by
boklm
1 year ago
Browse files
Options
Downloads
Patches
Plain Diff
Bug 32355: gcc: Add linux-arm target
parent
1f881995
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
projects/gcc/build
+79
-5
79 additions, 5 deletions
projects/gcc/build
projects/gcc/config
+38
-9
38 additions, 9 deletions
projects/gcc/config
with
117 additions
and
14 deletions
projects/gcc/build
+
79
−
5
View file @
eb83bb70
...
...
@@ -16,11 +16,85 @@
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48817.
export
DEB_BUILD_HARDENING_FORMAT
=
0
[
%
END
-%
]
distdir
=/
var
/
tmp
/
dist
/
[
%
project
%
]
distdir
=/
var
/
tmp
/
dist
/
[
%
c
(
"
var/distdir
"
)
%
]
mkdir
/
var
/
tmp
/
build
tar
-
C
/
var
/
tmp
/
build
-
xf
$
rootdir
/
[
%
c
(
'
input_files_by_name/gcc
'
)
%
]
cd
/
var
/
tmp
/
build
/
[
%
project
%
]
-
[
%
c
(
"
version
"
)
%
]
.
/
configure
--
prefix
=
$
distdir
[
%
c
(
"
var/configure_opt
"
)
%
]
[
%
IF
c
(
"
var/linux-cross
"
)
-%
]
# Install binutils (needed for cross-compiling)
mkdir
/
var
/
tmp
/
dist
cd
/
var
/
tmp
/
dist
tar
xf
$
rootdir
/
[
%
c
(
'
input_files_by_name/binutils
'
)
%
]
mv
binutils
$
distdir
export
PATH
=
"
$distdir/bin:$PATH
"
# Install Linux headers, see Step 2 of
# https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
# Doing this before gcc configure is intended to solve a limits.h issue
cd
/
var
/
tmp
/
build
mkdir
linux
cd
linux
tar
-
xJf
$
rootdir
/
linux
-
[
%
c
(
"
var/linux_version
"
)
%
].
tar
.
xz
cd
linux
-
[
%
c
(
"
var/linux_version
"
)
%
]
make
ARCH
=
[
%
c
(
"
arch
"
)
%
]
INSTALL_HDR_PATH
=
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
headers_install
cd
/
var
/
tmp
/
build
mkdir
gcc
cd
gcc
tar
-
xJf
$
rootdir
/
[
%
c
(
'
input_files_by_name/gcc
'
)
%
]
# --with-headers is intended to solve a limits.h issue
[
%
project
%
]
-
[
%
c
(
"
version
"
)
%
]
/
configure
--
prefix
=
$
distdir
--
with
-
headers
=
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
include
/
linux
[
%
c
(
"
var/configure_opt
"
)
%
]
# For cross-compiling to work, we need to partially build GCC, then build
# glibc, then come back to finish GCC.
# Build only the components of GCC that don't need glibc, see Step 3 of
# https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
cd
/
var
/
tmp
/
build
/
gcc
make
-
j
[
%
c
(
"
num_procs
"
)
%
]
all
-
gcc
make
install
-
gcc
# Removing sys-include is intended to solve a limits.h issue
rm
--
recursive
--
force
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
sys
-
include
# Build glibc headers and startup files, see Step 4 of
# https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
cd
/
var
/
tmp
/
build
mkdir
glibc
cd
glibc
tar
-
xJf
$
rootdir
/
glibc
-
[
%
c
(
"
var/glibc_version
"
)
%
].
tar
.
xz
# TODO: Remove --disable-werror once glibc is upgraded to a version that's
# designed to work with the GCC version we're using.
glibc
-
[
%
c
(
"
var/glibc_version
"
)
%
]
/
configure
--
prefix
=
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
--
build
=
$
MACHTYPE
--
host
=
[
%
c
(
"
var/crosstarget
"
)
%
]
--
target
=
[
%
c
(
"
var/crosstarget
"
)
%
]
--
with
-
headers
=
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
include
--
disable
-
multilib
--
disable
-
werror
libc_cv_forced_unwind
=
yes
make
install
-
bootstrap
-
headers
=
yes
install
-
headers
make
-
j
[
%
c
(
"
num_procs
"
)
%
]
csu
/
subdir_lib
install
csu
/
crt1
.
o
csu
/
crti
.
o
csu
/
crtn
.
o
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
lib
[
%
c
(
"
var/crosstarget
"
)
%
]
-
gcc
-
nostdlib
-
nostartfiles
-
shared
-
x
c
/
dev
/
null
-
o
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
lib
/
libc
.
so
# stdio_lim.h is intended to solve a limits.h issue
touch
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
include
/
gnu
/
stubs
.
h
$
distdir
/
[
%
c
(
"
var/crosstarget
"
)
%
]
/
include
/
bits
/
stdio_lim
.
h
# Build compiler support library, see Step 5 of
# https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
cd
/
var
/
tmp
/
build
/
gcc
make
-
j
[
%
c
(
"
num_procs
"
)
%
]
all
-
target
-
libgcc
make
install
-
target
-
libgcc
# finish building glibc, see Step 6 of
# https://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/
cd
/
var
/
tmp
/
build
/
glibc
make
-
j
[
%
c
(
"
num_procs
"
)
%
]
make
install
# We're done with glibc, we can now finish building gcc...
cd
/
var
/
tmp
/
build
/
gcc
[
%
ELSE
-%
]
tar
-
C
/
var
/
tmp
/
build
-
xf
$
rootdir
/
[
%
c
(
'
input_files_by_name/gcc
'
)
%
]
cd
/
var
/
tmp
/
build
/
[
%
project
%
]
-
[
%
c
(
"
version
"
)
%
]
.
/
configure
--
prefix
=
$
distdir
[
%
c
(
"
var/configure_opt
"
)
%
]
[
%
END
-%
]
make
-
j
[
%
c
(
"
num_procs
"
)
%
]
make
install
# tor-browser-build#31321: we need a link to our GCC, to prevent some projects
...
...
@@ -28,6 +102,6 @@ make install
ln
-
s
gcc
$
distdir
/
bin
/
cc
cd
/
var
/
tmp
/
dist
[
%
c
(
'
tar
'
,
{
tar_src
=>
[
project
],
tar_src
=>
[
c
(
'
var/distdir
'
)
],
tar_args
=>
'
-czf
'
_
dest_dir
_
'
/
'
_
c
(
'
filename
'
),
})
%
]
This diff is collapsed.
Click to expand it.
projects/gcc/config
+
38
−
9
View file @
eb83bb70
...
...
@@ -7,14 +7,17 @@ version: '[% pc("gcc-source", "version") %]'
container
:
use_container
:
1
var
:
distdir
:
gcc
deps
:
-
build-essential
-
libmpc-dev
setup
:
|
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf $rootdir/[% c("compiler_tarfile") %]
export PATH="/var/tmp/dist/gcc/bin:$PATH"
export LD_LIBRARY_PATH=/var/tmp/dist/gcc/lib64:/var/tmp/dist/gcc/lib32
export PATH="/var/tmp/dist/[% c("var/distdir") %]/bin:$PATH"
[% IF ! c("var/linux-cross") -%]
export LD_LIBRARY_PATH=/var/tmp/dist/[% c("var/distdir") %]/lib64:/var/tmp/dist/[% c("var/distdir") %]/lib32
[% END -%]
[% IF c("hardened_gcc") -%]
# Config options for hardening-wrapper
...
...
@@ -25,14 +28,14 @@ var:
export DEB_BUILD_HARDENING_PIE=1
# Make sure we use the hardening wrapper
pushd /var/tmp/dist/
gcc
/bin
pushd /var/tmp/dist/
[% c("var/distdir") %]
/bin
cp /usr/bin/hardened-cc ./
mv
gcc
gcc.real
mv
c++
c++.real
mv
g++
g++.real
ln -sf hardened-cc gcc
ln -sf hardened-cc c++
ln -sf hardened-cc g++
mv
[% c("var/target_prefix") %]gcc [% c("var/target_prefix") %]
gcc.real
mv
[% c("var/target_prefix") %]c++ [% c("var/target_prefix") %]
c++.real
mv
[% c("var/target_prefix") %]g++ [% c("var/target_prefix") %]
g++.real
ln -sf hardened-cc
[% c("var/target_prefix") %]
gcc
ln -sf hardened-cc
[% c("var/target_prefix") %]
c++
ln -sf hardened-cc
[% c("var/target_prefix") %]
g++
popd
[% END -%]
...
...
@@ -50,8 +53,34 @@ targets:
arch_deps
:
-
hardening-wrapper
-
libc6-dev-i386
linux-cross
:
var
:
target_prefix
:
'
[%
c("var/crosstarget")
%]-'
distdir
:
gcc-cross
# TODO: Consider upgrading to a glibc that works out of the box with the
# GCC version we use. However, removing our glibc version workarounds may
# not be desirable since we want to be able to easily bump the GCC
# version without worrying about linux-cross breakage.
glibc_version
:
2.26
linux_version
:
4.10.1
arch_deps
:
-
hardening-wrapper
-
libc6-dev-i386
-
gawk
linux-arm
:
var
:
configure_opt
:
--disable-multilib --enable-languages=c,c++ --target=arm-linux-gnueabihf --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb
input_files
:
-
project
:
container-image
-
project
:
gcc-source
name
:
gcc
-
name
:
binutils
project
:
binutils
enable
:
'
[%
c("var/linux-cross")
-%]'
-
URL
:
'
https://ftp.gnu.org/gnu/glibc/glibc-[%
c("var/glibc_version")
%].tar.xz'
sha256sum
:
e54e0a934cd2bc94429be79da5e9385898d2306b9eaf3c92d5a77af96190f6bd
enable
:
'
[%
c("var/linux-cross")
-%]'
-
URL
:
'
https://www.kernel.org/pub/linux/kernel/v4.x/linux-[%
c("var/linux_version")
%].tar.xz'
sha256sum
:
6ca06bb5faf5f83600d7388bb623dae41df2a257de85ad5d1792e03302bc3543
enable
:
'
[%
c("var/linux-cross")
-%]'
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment