tbb-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 20519 discussions
[tor-browser-build/master] Bug 33564: Upgrade ZSTD to use Android NDK 20
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit caf2a191836a82ca5429a5dbd9b29e7c00746373
Author: sisbell <shane.isbell(a)gmail.com>
Date: Mon Mar 30 10:43:05 2020 -0700
Bug 33564: Upgrade ZSTD to use Android NDK 20
---
projects/zstd/build | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/projects/zstd/build b/projects/zstd/build
index 3d76a1a..b78d518 100644
--- a/projects/zstd/build
+++ b/projects/zstd/build
@@ -7,7 +7,11 @@ mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
export CPPFLAGS=-DZSTD_MULTITHREAD
-export CC=[% c("var/configure_host") %]-clang
+[% IF c("var/android-fenix") -%]
+ export CC=[% c("var/CC") %]
+[% ELSE -%]
+ export CC=[% c("var/configure_host") %]-clang
+[% END -%]
make -C lib -j[% c("buildconf/num_procs") %] PREFIX=$distdir install
# Only need static libraries
rm $distdir/lib/libzstd.so*
1
0
[tor-browser-build/master] Bug 33561: Upgrade OpenSSL to use Android NDK 20
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit ef590817fc328216594f1a634951ae245482d6e9
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed May 13 11:31:27 2020 +0000
Bug 33561: Upgrade OpenSSL to use Android NDK 20
---
projects/openssl/build | 2 +-
projects/openssl/config | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/openssl/build b/projects/openssl/build
index 8ceb952..5f275a0 100644
--- a/projects/openssl/build
+++ b/projects/openssl/build
@@ -17,7 +17,7 @@ export CC='gcc -m32'
patch -p1 < $rootdir/use-SOURCE_DATE_EPOCH.patch
[% END -%]
# OpenSSL expects the NDK home to include the pre-assembled architecture directory
-[% IF c("var/android") -%]
+[% IF c("var/android") && !c("var/android-fenix") -%]
export ANDROID_NDK_HOME=$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]
[% END -%]
export SOURCE_DATE_EPOCH='[% c("timestamp") %]'
diff --git a/projects/openssl/config b/projects/openssl/config
index 7399c0a..ab62b14 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -24,7 +24,7 @@ targets:
configure_opts: --cross-compile-prefix=x86_64-apple-darwin11- darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
android:
var:
- configure_opts: CC=clang android-[% c("var/toolchain_arch") %] -no-shared
+ configure_opts: '[% IF c("var/android-fenix") %]CC=[% c("var/CC") %] android-[% c("var/toolchain_arch") %] -no-shared -D__ANDROID_API__=[% c("var/android_min_api") %][% ELSE %]CC=clang android-[% c("var/toolchain_arch") %] -no-shared[% END %]'
input_files:
- project: container-image
1
0
[tor-browser-build/master] Bug 33563: Upgrade Tor to use Android NDK 20
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 56578679ab388a1b06e70ab68c6a89bdaaec0cbb
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri May 15 11:27:10 2020 +0000
Bug 33563: Upgrade Tor to use Android NDK 20
We remove --libdir as well for the Fenix toolchain as it does nothing
(and would be wrongly used anyway if pointing to ANDROID_NDK_HOME).
---
projects/tor/build | 6 +++++-
projects/tor/config | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/projects/tor/build b/projects/tor/build
index 7747549..4345d35 100644
--- a/projects/tor/build
+++ b/projects/tor/build
@@ -148,7 +148,11 @@ cd $distdir
[% END %]
[% IF c("var/android") %]
- install -s --strip-program=[% c("var/configure_host") %]-strip $distdir/bin/tor $libsdir/libTor.so
+ [% IF c("var/android-fenix") %]
+ install -s --strip-program=[% c("var/cross_prefix") %]-strip $distdir/bin/tor $libsdir/libTor.so
+ [% ELSE %]
+ install -s --strip-program=[% c("var/configure_host") %]-strip $distdir/bin/tor $libsdir/libTor.so
+ [% END %]
[% END %]
mkdir -p [% dest_dir _ '/' _ c('filename') %]
diff --git a/projects/tor/config b/projects/tor/config
index 72d7a8a..8fec5b2 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -47,7 +47,7 @@ targets:
flag_mwindows: ''
android:
var:
- configure_opt_project: --libdir=$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/lib --enable-android --enable-static-openssl --enable-static-libevent --enable-zstd --disable-tool-name-check --disable-system-torrc --disable-system-torrc
+ configure_opt_project: '[% IF !c("var/android-fenix") %]--libdir=$ANDROID_NDK_HOME/[% c("var/toolchain_arch") %]/lib [% END %]--enable-android --enable-static-openssl --enable-static-libevent --enable-zstd --disable-tool-name-check --disable-system-torrc --disable-system-torrc'
arch_deps:
- libtinfo5
1
0
17 Jul '20
commit e212e6d6dfa330301abf7eec4ad0330397f8d288
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed May 6 12:21:46 2020 +0000
Bug 33973: Create fat GeckoView .aar
Many thanks to boklm for the invaluable help with this patch.
---
projects/geckoview/config | 102 ++++++++++++++++++++++++++++++++++++++++++++++
rbm.conf | 14 +++++++
2 files changed, 116 insertions(+)
diff --git a/projects/geckoview/config b/projects/geckoview/config
index 9270c43..e82139a 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -28,6 +28,108 @@ var:
# this should be updated when the list of gradle dependencies is changed
gradle_dependencies_version: 1
+steps:
+ merge_aars:
+ filename: 'geckoview-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+ version: '[% c("abbrev") %]'
+ merge_aars: |
+ #!/bin/bash
+ [% c("var/set_default_env") -%]
+ [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+ distdir=/var/tmp/dist
+ builddir=/var/tmp/build
+ mkdir -p /var/tmp/build
+ mkdir -p $distdir/[% project %]
+
+ cat > get-moz-build-date << "EOF"
+ [% INCLUDE "get-moz-build-date" %]
+ EOF
+
+ tar -C $distdir -xf [% c('input_files_by_name/node') %]
+ tar -C $distdir -xf [% c('input_files_by_name/python') %]
+ export PATH="/var/tmp/dist/fenix-node/bin:/var/tmp/dist/python/bin:$PATH"
+
+ tar -C $builddir -xf [% c('input_files_by_name/geckoview_armv7') %]
+ tar -C $builddir -xf [% c('input_files_by_name/geckoview_aarch64') %]
+ tar -C $builddir -xf [% c('input_files_by_name/geckoview_x86') %]
+ tar -C $builddir -xf [% c('input_files_by_name/geckoview_x86_64') %]
+ tar -C $builddir -xf [% project %]-[% c('version') %].tar.gz
+
+ # Specify the architectures we want to merge
+ export MOZ_ANDROID_FAT_AAR_ARCHITECTURES=armeabi-v7a,arm64-v8a,x86,x86_64
+ export MOZ_ANDROID_FAT_AAR_ARMEABI_V7A=$builddir/geckoview/*armeabi-v7a*.aar
+ export MOZ_ANDROID_FAT_AAR_ARM64_V8A=$builddir/geckoview/*arm64-v8a*.aar
+ # Specifying just "x86" is not differentiating enough
+ export MOZ_ANDROID_FAT_AAR_X86=$builddir/geckoview/*x86-*.aar
+ export MOZ_ANDROID_FAT_AAR_X86_64=$builddir/geckoview/*x86_64*.aar
+
+ cd $builddir/[% project %]-[% c("version") %]
+ mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
+
+ eval $(perl $rootdir/get-moz-build-date [% c("var/copyright_year") %] [% c("var/torbrowser_version") %])
+ if [ -z $MOZ_BUILD_DATE ]
+ then
+ echo "MOZ_BUILD_DATE is not set"
+ exit 1
+ fi
+
+ gradle_repo=/var/tmp/dist/gradle-dependencies
+ export GRADLE_MAVEN_REPOSITORIES="file://$gradle_repo"
+ export GRADLE_FLAGS="--no-daemon --offline"
+ mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo
+ cp -r $gradle_repo/m2/* $gradle_repo
+
+ # We still need to specify --tor-browser-version due to bug 34005.
+ ./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %]
+ ./mach build --verbose
+ find obj-* -regex '.*geckoview.*[0-9].\(aar\|pom\)' -exec cp {} $distdir/[% project %] \;
+
+ cd $distdir/
+ [% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
+
+
+ input_files:
+ - project: container-image
+ pkg_type: build
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ pkg_type: build
+ - project: fenix-node
+ name: node
+ pkg_type: build
+ - project: python
+ name: python
+ pkg_type: build
+ - filename: mozconfig-android-all
+ name: mozconfig
+ - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
+ name: gradle-dependencies
+ exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+ - name: geckoview_armv7
+ project: geckoview
+ pkg_type: build
+ target_prepend:
+ - torbrowser-android-fenix-armv7
+ - name: geckoview_aarch64
+ project: geckoview
+ pkg_type: build
+ target_prepend:
+ - torbrowser-android-fenix-aarch64
+ - name: geckoview_x86
+ project: geckoview
+ pkg_type: build
+ target_prepend:
+ - torbrowser-android-fenix-x86
+ - name: geckoview_x86_64
+ project: geckoview
+ pkg_type: build
+ target_prepend:
+ - torbrowser-android-fenix-x86_64
+
+
targets:
nightly:
git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/torbrowser_branch") %]-1'
diff --git a/rbm.conf b/rbm.conf
index 9d74a37..e1376ac 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -196,6 +196,17 @@ targets:
- zip
- unzip
+ torbrowser-android-all:
+ - android-all
+ # For now we still need both android-fenix and android. We don't need the
+ # prefix for the other -all pieces as they are only used for Fenix anyway.
+ - android-fenix
+ - android
+ android-all:
+ arch: all
+ var:
+ android-all: 1
+ osname: android-all
torbrowser-android-fenix-armv7:
- android-fenix-armv7
- android-armv7
@@ -298,6 +309,9 @@ targets:
container:
suite: buster
arch: amd64
+ disable_network:
+ # Disable network in the script for merging GeckoView .aar files
+ merge_aars: 1
deps:
- build-essential
- python
1
0
[tor-browser-build/master] Bug 33558: Update TOPL to use updated Android toolchain
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 9907f974f6b8f0a1b9cb403e6f452b0481a8bc9f
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 12 09:24:30 2020 +0000
Bug 33558: Update TOPL to use updated Android toolchain
Based on a patch by sisbell, thanks!
We add a new project to not interfere with Fennec toolchain
requirements for now until we stop building Fennec-based Tor Browser
for Android.
---
.../0001-Bug-30318-Add-snowflake-support.patch | 90 ++++++
...ug-33931-Filter-bridges-in-stream-by-type.patch | 76 ++++++
projects/fenix-tor-onion-proxy-library/build | 45 +++
projects/fenix-tor-onion-proxy-library/config | 31 +++
.../gradle-dependencies-list.txt | 303 +++++++++++++++++++++
.../fenix-tor-onion-proxy-library/gradle.patch | 72 +++++
6 files changed, 617 insertions(+)
diff --git a/projects/fenix-tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch b/projects/fenix-tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch
new file mode 100644
index 0000000..03e06aa
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/0001-Bug-30318-Add-snowflake-support.patch
@@ -0,0 +1,90 @@
+From e006e215b274b1b834e098b199ea2697bc11b0f1 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk(a)torproject.org>
+Date: Sun, 10 May 2020 08:29:10 +0000
+Subject: [PATCH] Bug 30318: Add snowflake support
+
+
+diff --git a/android/build.gradle b/android/build.gradle
+index a8d9bdc..2392731 100644
+--- a/android/build.gradle
++++ b/android/build.gradle
+@@ -93,6 +93,9 @@ task copyPluggableTransports(type: Copy) {
+ rename { filename ->
+ filename.replace 'obfs4proxy', 'libObfs4proxy.so'
+ }
++ rename { filename ->
++ filename.replace 'snowflake-client', 'libSnowflake.so'
++ }
+ }
+
+ gradle.projectsEvaluated {
+diff --git a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
+index 2405097..bcb6a37 100644
+--- a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
++++ b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
+@@ -109,22 +109,33 @@ public final class TorConfigBuilder {
+ return this;
+ }
+
+- public TorConfigBuilder configurePluggableTransportsFromSettings(File pluggableTransportClient) throws IOException {
+- if (pluggableTransportClient == null) {
++ public TorConfigBuilder configurePluggableTransportsFromSettings(File pluggableTransportObfs, File pluggableTransportSnow) throws IOException {
++ if (pluggableTransportObfs == null || pluggableTransportSnow == null) {
+ return this;
+ }
+
+- if (!pluggableTransportClient.exists()) {
+- throw new IOException("Bridge binary does not exist: " + pluggableTransportClient
++ if (!pluggableTransportObfs.exists()) {
++ throw new IOException("Obfs4proxy binary does not exist: " + pluggableTransportObfs
+ .getCanonicalPath());
+ }
+
+- if (!pluggableTransportClient.canExecute()) {
+- throw new IOException("Bridge binary is not executable: " + pluggableTransportClient
++ if (!pluggableTransportSnow.exists()) {
++ throw new IOException("Snowflake binary does not exist: " + pluggableTransportSnow
+ .getCanonicalPath());
+ }
+
+- transportPlugin(pluggableTransportClient.getCanonicalPath());
++ if (!pluggableTransportObfs.canExecute()) {
++ throw new IOException("Obfs4proxy binary is not executable: " + pluggableTransportObfs
++ .getCanonicalPath());
++ }
++
++ if (!pluggableTransportSnow.canExecute()) {
++ throw new IOException("Snowflake binary is not executable: " + pluggableTransportSnow
++ .getCanonicalPath());
++ }
++
++
++ transportPlugin(pluggableTransportObfs.getCanonicalPath(), pluggableTransportSnow.getCanonicalPath());
+ return this;
+ }
+
+@@ -491,8 +502,9 @@ public final class TorConfigBuilder {
+ return transPort(settings.transPort());
+ }
+
+- public TorConfigBuilder transportPlugin(String clientPath) {
+- buffer.append("ClientTransportPlugin meek_lite,obfs3,obfs4 exec ").append(clientPath).append('\n');
++ public TorConfigBuilder transportPlugin(String obfsPath, String snowPath) {
++ buffer.append("ClientTransportPlugin meek_lite,obfs3,obfs4 exec ").append(obfsPath).append('\n');
++ buffer.append("ClientTransportPlugin snowflake exec ").append(snowPath).append(" -url https://snowflake-broker.azureedge.net/ -front ajax.aspnetcdn.com -ice stun:stun.l.google.com:19302\n");
+ return this;
+ }
+
+@@ -557,6 +569,9 @@ public final class TorConfigBuilder {
+ case 3:
+ reqBridgeType = "meek_lite";
+ break;
++ case 4:
++ reqBridgeType = "snowflake";
++ break;
+ default:
+ throw new IOException("Requested unknown transport type: " + bridgesType);
+ }
+--
+2.26.2
+
diff --git a/projects/fenix-tor-onion-proxy-library/0001-Bug-33931-Filter-bridges-in-stream-by-type.patch b/projects/fenix-tor-onion-proxy-library/0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
new file mode 100644
index 0000000..e04e7d9
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
@@ -0,0 +1,76 @@
+From 9a2048f02d602cab7bd937c66a4d3f9c35fbfa9e Mon Sep 17 00:00:00 2001
+From: Matthew Finkel <sysrqb(a)torproject.org>
+Date: Thu, 30 Apr 2020 15:40:25 +0000
+Subject: [PATCH] Bug 33931 - Filter bridges in stream by type
+
+The InputStream contains a first-byte that indicates the format of the
+following datastream. If the first-byte is 1, then the following stream
+is a string of bridges that are separated by the '\n' byte. If the
+first-byte is not 1, then the following data stream is default bridges
+and that list should be filtered such that only the requested bridge
+type is used.
+---
+ .../thali/toronionproxy/TorConfigBuilder.java | 35 ++++++++++++++++---
+ 1 file changed, 31 insertions(+), 4 deletions(-)
+
+diff --git a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
+index ab11948..2405097 100644
+--- a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
++++ b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfigBuilder.java
+@@ -535,9 +535,32 @@ public final class TorConfigBuilder {
+ TorConfigBuilder addBridgesFromResources() throws IOException {
+ if(settings.hasBridges()) {
+ InputStream bridgesStream = context.getInstaller().openBridgesStream();
+- int formatType = bridgesStream.read();
+- if (formatType == 0) {
+- addBridges(bridgesStream);
++ // The first byte encodes the type of bridges contained within the
++ // following data stream. Currently, it may contain either default bridges
++ // or user-provided bridges.
++ int bridgesType = bridgesStream.read();
++
++ // When bridgesType is 0x01, then the following stream is
++ // user-provided (custom) bridges.
++ // When bridgesType is one of: 0x02 or 0x03, then the Stream
++ // consists of default PT bridges. That list must be filtered, after
++ // parsing each bridge line, such that only the requested bridge type
++ // is used.
++ if (bridgesType != 1) {
++ // Terrible hack. Must keep in sync with tas::CustomTorInstaller::openBridgesStream
++ // and transports defined by TorConfigBuilder::transportPlugin().
++ String reqBridgeType;
++ switch (bridgesType) {
++ case 2:
++ reqBridgeType = "obfs4";
++ break;
++ case 3:
++ reqBridgeType = "meek_lite";
++ break;
++ default:
++ throw new IOException("Requested unknown transport type: " + bridgesType);
++ }
++ addBridges(bridgesStream, reqBridgeType);
+ } else {
+ addCustomBridges(bridgesStream);
+ }
+@@ -548,12 +571,16 @@ public final class TorConfigBuilder {
+ /**
+ * Add bridges from bridges.txt file.
+ */
+- private void addBridges(InputStream input) {
++ private void addBridges(InputStream input, String bridgeType) {
+ if (input == null) {
+ return;
+ }
+ List<Bridge> bridges = readBridgesFromStream(input);
+ for (Bridge b : bridges) {
++ if (!b.type.equals(bridgeType)) {
++ // This is not the transport we're looking for.
++ continue;
++ }
+ bridge(b.type, b.config);
+ }
+ }
+--
+2.20.1
+
diff --git a/projects/fenix-tor-onion-proxy-library/build b/projects/fenix-tor-onion-proxy-library/build
new file mode 100644
index 0000000..3e02fb4
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/build
@@ -0,0 +1,45 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+output_dir=[% dest_dir %]/[% c('filename') %]
+gradle_repo=$rootdir/[% c('input_files_by_name/gradle-dependencies') %]
+
+# The download script assumes artifact package name is the complete URL path.
+# In some cases this is incorrect, so copy those artifacts to correct location
+cp -r $gradle_repo/guardianproject/gpmaven/master/* $gradle_repo
+cp -r $gradle_repo/dl/android/maven2/* $gradle_repo
+cp -r $gradle_repo/maven2/* $gradle_repo
+cp -r $gradle_repo/plugins-release/* $gradle_repo
+
+mkdir -p /var/tmp/build $output_dir
+
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+# Patch projects
+cd /var/tmp/build/[% project %]-[% c('version') %]
+# Gradle patch provided so that when generating a gradle dependency list, the
+# build will pull down the correct android tool versions
+patch -p1 < $rootdir/gradle.patch
+patch -p1 < $rootdir/0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
+patch -p1 < $rootdir/0001-Bug-30318-Add-snowflake-support.patch
+
+# Extract obfs4proxy from TorBrowser/Tor/PluggableTransports/obfs4proxy
+tar --strip-components=4 -xf $rootdir/[% c('input_files_by_name/obfs4') %]
+
+# Extract snowflake from TorBrowser/Tor/PluggableTransports/snowflake
+tar --strip-components=4 -xf $rootdir/[% c('input_files_by_name/snowflake') %]
+
+# Overwrite the obfs4proxy binary provided by Pluto and add Snowflake
+for d in external/pluto/bin/*; do
+ cp obfs4proxy $d/
+ cp snowflake-client $d/
+done
+
+rm obfs4proxy
+rm snowflake-client
+
+# Build Android Libraries and Apps
+gradle --offline --no-daemon -P androidplugin=3.6.0 -Dmaven.repo.local=$gradle_repo assembleRelease -x lint
+
+# Package
+cp universal/build/libs/* android/build/outputs/aar/* $output_dir
diff --git a/projects/fenix-tor-onion-proxy-library/config b/projects/fenix-tor-onion-proxy-library/config
new file mode 100644
index 0000000..1b0d051
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/config
@@ -0,0 +1,31 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %]'
+git_hash: aeb63ebd079b646a3ec1b7b84d755653baa467d7
+git_url: https://github.com/thaliproject/Tor_Onion_Proxy_Library.git
+git_submodule: 1
+
+var:
+ deps:
+ - build-essential
+ - unzip
+ - zip
+ container:
+ use_container: 1
+ # this should be updated when the list of gradle dependencies is changed
+ gradle_dependencies_version: 1
+
+input_files:
+ - project: container-image
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - project: obfs4
+ name: obfs4
+ - project: snowflake
+ name: snowflake
+ - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
+ name: gradle-dependencies
+ exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+ - filename: gradle.patch
+ - filename: 0001-Bug-33931-Filter-bridges-in-stream-by-type.patch
+ - filename: 0001-Bug-30318-Add-snowflake-support.patch
diff --git a/projects/fenix-tor-onion-proxy-library/gradle-dependencies-list.txt b/projects/fenix-tor-onion-proxy-library/gradle-dependencies-list.txt
new file mode 100644
index 0000000..30a2b8f
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/gradle-dependencies-list.txt
@@ -0,0 +1,303 @@
+# On how to update dependencies see projects/common/how-to-create-gradle-dependencies-list.txt
+# Don't forget to update var/gradle_dependencies_version when modifying this file
+sha256sum | url
+e6d2aee708189bc3d9dff647b7671d03750007223639db16146bd7382bfb7934 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+8d22885c700e913c8d17a373b96bbb05bc6d6a1c2848b0c57928e2de325bf158 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+bf2b0ed68625a159254198aeca04f4fe6a5b99638500c88b2d59b7ecd42b6f67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+b450ad9617683054753abf126d3ebf2b2d99a3a4975355cdfc2cf31cef7ace67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+10e1f9691dc9485d4c122d16b8ebb2c062a7675c983055bb28cec2496026e658 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
+099461a4afeb91d9852e4f6a69959403c328286840d991a001a068afc243bac6 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
+a0c36940b7351c2673bf3c96b6774017db4f1e8342ee063cafc3533cecd22707 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signf…
+a8f9f10afa0b381b5e64eafafbd09015775d9934eea475ccaf3320431b4b2a50 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signf…
+271ecbc906cda8dcd9e655ba0473129c3408a4189c806f616c378e6fd18fb3b7 | https://dl.google.com/dl/android/maven2/com/android/support/animated-vector…
+d4783f9cce5b193cb59486fa9fd9f06e828fe4d2d9a5744fab372b9a4a95ecca | https://dl.google.com/dl/android/maven2/com/android/support/animated-vector…
+a3a8e5230359746ed91801579b5fbe4668e3b1c4e6a14c7d67c8f58cb0311752 | https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28…
+d9f2abe237eab1b651694c0d292dea9ec5b341ae70bfaafffbbb5d46b78c5e17 | https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28…
+115bde87721f7334579b0c735f60dd7c98af1bb7f34010c5b0553b95dc351aa2 | https://dl.google.com/dl/android/maven2/com/android/support/asynclayoutinfl…
+790f1d0ca7c1a65d5afb40baf5b5423fa3163f6f90a47f3193ae0c8bb11c6e78 | https://dl.google.com/dl/android/maven2/com/android/support/asynclayoutinfl…
+93c258c8a09f531a267653829742c0f8f6da0e348b11cb8655b0855628f2d4f0 | https://dl.google.com/dl/android/maven2/com/android/support/collections/28.…
+f6c4146b8b2029e52971402d1c29ed59d2a98b4fab33ef8e6f44233ac0cf27ba | https://dl.google.com/dl/android/maven2/com/android/support/collections/28.…
+9dfacd80423dc979048fbaed83c0ee543c46259feb2417377e79a656888d3892 | https://dl.google.com/dl/android/maven2/com/android/support/coordinatorlayo…
+cb83674d682f81daf7b2d43e965a18b83ef4f5bb02a69d14bb20175753361a4f | https://dl.google.com/dl/android/maven2/com/android/support/coordinatorlayo…
+87feffe742b8d62ca8a9833abe564838bf6a672e31c7ad1306ec4006adf90d21 | https://dl.google.com/dl/android/maven2/com/android/support/cursoradapter/2…
+5727103ce28357bce8f74655c0994508d55d060f9ec6dafba0103e7fe55f275b | https://dl.google.com/dl/android/maven2/com/android/support/cursoradapter/2…
+98db03845f994e08248bf701c1ff0ccaa12e70f94251ec9272900f0f694e072b | https://dl.google.com/dl/android/maven2/com/android/support/customview/28.0…
+187c2729dfd51ef8db5963598d14da67bad5ceb4ea5252f382044249327010e5 | https://dl.google.com/dl/android/maven2/com/android/support/customview/28.0…
+47cdcd3e9302b7b064923f05487a5c03babbd9bbda4726b71e97791fab5d4779 | https://dl.google.com/dl/android/maven2/com/android/support/documentfile/28…
+5ffda693e34d152463f8a9a6c00407fb11747a2271c278e082a287abad3f9cba | https://dl.google.com/dl/android/maven2/com/android/support/documentfile/28…
+8f6809afae4793550c37461c9810e954ae6a23dbb4d23e5333bf18148df1150a | https://dl.google.com/dl/android/maven2/com/android/support/drawerlayout/28…
+424f2d0b4a3ac46e0ad5349192ad0ecdc0bfcb10ed91767a08230cd16a3cfe36 | https://dl.google.com/dl/android/maven2/com/android/support/drawerlayout/28…
+7bc7ee86a0db39a4b51956f3e89842d2bd962118d57d779eb6ed6b34ba0677ea | https://dl.google.com/dl/android/maven2/com/android/support/interpolator/28…
+296b5f5eaa5cb38f67bca092aaf56bf6d23a13aa07cd81a377f861f52d609f9b | https://dl.google.com/dl/android/maven2/com/android/support/interpolator/28…
+920b85efd72dc33e915b0f88a883fe73b88483c6df8751a741e17611f2460341 | https://dl.google.com/dl/android/maven2/com/android/support/loader/28.0.0/l…
+9a9bad607f4b946d1503fe9b751af156da361e642e86f4fb5355b89b9557e8df | https://dl.google.com/dl/android/maven2/com/android/support/loader/28.0.0/l…
+d287c823af5fdde72c099fcfc5f630efe9687af7a914343ae6fd92de32c8a806 | https://dl.google.com/dl/android/maven2/com/android/support/localbroadcastm…
+351a941335421113dff16b1ff9d4618bbcb093fd1508fc8639f18c5533313091 | https://dl.google.com/dl/android/maven2/com/android/support/localbroadcastm…
+4be8a812d73e4a80e35b91ceae127def3f0bb9726bf3bc439aa0cc81503f5728 | https://dl.google.com/dl/android/maven2/com/android/support/print/28.0.0/pr…
+e15dd914e64f5cfcbd91aeb1b921fd6ead39c21926e171a4955dd12c849c6e78 | https://dl.google.com/dl/android/maven2/com/android/support/print/28.0.0/pr…
+d1d234f66a1b36a9aee9b94fa6c66f97128c0828078c8e889e9037ec898cd600 | https://dl.google.com/dl/android/maven2/com/android/support/slidingpanelayo…
+be47ac0d8fd8bdd783071596c5ea271362484752d282fb8c3421d1853ad02619 | https://dl.google.com/dl/android/maven2/com/android/support/slidingpanelayo…
+5d5b9414f02d3fa0ee7526b8d5ddae0da67c8ecc8c4d63ffa6cf91488a93b927 | https://dl.google.com/dl/android/maven2/com/android/support/support-annotat…
+a086481e014492fd3a4d5f4459875b8a70a201258f0b225836212ee29df0091a | https://dl.google.com/dl/android/maven2/com/android/support/support-annotat…
+e17e3b01dbea3f9ea1c86943292f903ca93d2231c6242e456e0b6a9c5817118a | https://dl.google.com/dl/android/maven2/com/android/support/support-compat/…
+6b79a06c2282fc0f961cfd826a26ad41ff5c457b0c11d9a6b6a63e51f53d961a | https://dl.google.com/dl/android/maven2/com/android/support/support-compat/…
+bbc7f65fc95649464733af373361532ab5f9f3b749c3badaa2bbf27e574b6c6f | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui…
+708ad4a6a48ce625aee395fd0625ae5441fee8f0e25861406603f765e679b544 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui…
+c81e1e98ca3cb2edae002c69cf35b22aec364b8cb2f1042c97e206eb5790ac41 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ut…
+86a744b8739e8b354d0ecaec35dd943dea9a66f0296a3a9c1eb384fc93a4eaf7 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ut…
+3772fc738ada86824ba1a4b3f197c3dbd67b7ddcfe2c9db1de95ef2e3487a915 | https://dl.google.com/dl/android/maven2/com/android/support/support-fragmen…
+d24bdade5b77b26b82d39beda9fa0f42bcdf61cb5661a3c66ddfde3f77869b07 | https://dl.google.com/dl/android/maven2/com/android/support/support-fragmen…
+f658986d968172bccfed28578471c96050780fe5e133861e4d331069cc373f4d | https://dl.google.com/dl/android/maven2/com/android/support/support-vector-…
+1e54416142b0f1274db09bbea1808f5cf9311c895bb0d84adaa18a7b5132aadc | https://dl.google.com/dl/android/maven2/com/android/support/support-vector-…
+a3b41f7f6730866b49865e86e49f988d4858699765f534300fb2ff5f9325e712 | https://dl.google.com/dl/android/maven2/com/android/support/swiperefreshlay…
+c2e08d32b75d98a844f20be02510c830f7e5b53f64907af2270a898d59dc872f | https://dl.google.com/dl/android/maven2/com/android/support/swiperefreshlay…
+60eb1cb08f71b65c3f6123135e03ebeb5930b5e126e1e5b2ac91b386908c9d02 | https://dl.google.com/dl/android/maven2/com/android/support/versionedparcel…
+e7d6f726e702b418998fab6284df2f509f5acdf9203ced37c8d1274f9e38447b | https://dl.google.com/dl/android/maven2/com/android/support/versionedparcel…
+013c4c53058758ec104dbae970be58159f75dfe342ba8b937d15ff5282e35ffc | https://dl.google.com/dl/android/maven2/com/android/support/viewpager/28.0.…
+080bba6573f6a4a9b2af443bf4ecb2a7ac4302a027274cc9bf9fdd51f409430e | https://dl.google.com/dl/android/maven2/com/android/support/viewpager/28.0.…
+f7a0143fa51920ea9289ebfc11349fcb4bc70cebd1f6b746de2998fa7fdf5f2d | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+b98df4993e7f76236fd28b6b73f62b2349f0399e780d50c8743e708c08f9b073 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+fe69b530190d1be5d375b4d27c1831f1921ee023bcc2a4779a692a11b883a5d1 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+65965684318c80df0f40e90f9a50800d8c57e9b3eda48096f9990b769f93524b | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+d897e7af0116944be7c4b917831527155fa3723f1fb77f45ba84537c9923cd99 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+ade7c62a6a19e93635ad78bb8f4bac080e32a1ecc7423c146522e013472f672f | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+29720b801195d7809a8e91da9dbaee2305320f28777c7e9649da6b2392dc48a7 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+9835e19c8b5ba3660f1778d27a82f03c4ac944cb3d22f14881b372ae251246e2 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+fb242380c243cd2069fd992b2803cca4a9e4366157cd327984eab75eb9e9a9e7 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.…
+827af30b20f5c227cba52f365d685e92ff08c45e2d4f37fca57eb5f951006dd2 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.…
+f74465e394c73d71f0f9053f3ebc90999d06bea3ad7c1fa3576b6a3a088d0db3 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0…
+c616e4a81a19bf74fb98f072383b316da8be882c3e9efce7fee82b802da5ccd5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0…
+fac0435e08898f89eeeb9ca236bea707155ff816c12205ced285ad53604133ca | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto…
+a24bdd4e8e374fdcd8cef8d77ea723f147ccd0f25dc6de4fbe290039be904339 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto…
+1fc041276d0e090b6ac99f26e8ab59d1c2257293bc88ee49ff074e69345bc665 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.…
+2cf2d4a8fbe06e60026b6f2f90a7d6c73b7d3f66abbb984e6a1740b85776a028 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.…
+8126c2fef74b0ebd1d6e647c3a84ef4f3e9a60231952abc74e4a097a6449374a | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6…
+055661a9e3089fb7154e0f358281a7406b1da4bc6d61dea1a0e19231239f36cf | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6…
+74cc34c112d8586cedb0f94a9728b0402492436e10c6493ee6da60308be0b262 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6…
+f4485a00d7a5c792cb5f2a8c5c8446bada583570f25182dbf84d700e30441386 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6…
+e18b976ea7620026259eeae4dc0378bd2ff5388dd91b8201113b2089b281ae3f | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+369428537e6613f4e229cbd70360aeff18a628c41566a7dd5b3d143808eef41a | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+ac90b88ce12f9d0ae0f9845ff2ad9bdf65aa07d3e7b4b0515794cffe4b603fe8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-tes…
+af0c92edfbc6549bebb636e82eb8a851c85e12bc4bcdfa2b81161bbb9e994050 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-tes…
+20f2e347e9b4ccd9cdcdc2f6e1956ba3cc1641991fbbadc1f86ca60dd6ca64e1 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/…
+ad9c1614680f29b5c39018c32e2b44d3adfc52d667e7bf29ca64eb2feb697034 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/…
+bdd59f532634d4fde2b3a6864bdc61058d94a62a5310f431f75b6f571d00d196 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.…
+ee16c99fea79a677092828264e01961816cef6ef4fa1f5702db6a58093dc0157 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.…
+841cfc9f6224c2d12e761ac3a305b268e0ee735b0ddd7e70cfebbf5a2df9cfa6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+69d6a67a8f84d03ba331dc9e228bd477c903f3643bde330c8c3a1cc72e8e1b7a | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+0930bb58d94e09c61161576ca38853b3dba4ac9320fcf323f9b31bc58a18afda | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+c39f0d195566b2ca9e1c954a665a553dc60320d4022acad82fd56a31a6d395d5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+689e5637b0b61b460f447064ff62ed4267203a26a70cf071fa34d7c3faba5366 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+be08f1215cd2bb5cbd22b1146ea92e0f14558fafc1603cbef7553b3a6677984c | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+9b2709e8f64978960a701675fa8d6e7dc5109ec6ddf1bb301c9ebf88545c9bc6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+fc1c1056089f4418ac0de5aef2c797a38a39ce8cd70cacb95269b834625fcde8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+f83adfad2f11074d97e6b0706872a60ec54c6ff42d6554bec1c900d9077825d5 | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/com…
+4f9c30f02a6ee14fe175c1dd53274fd615d8e11dc22fb9912adcb58a69bb0bca | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/com…
+62eab1a996349a50e1e2a38f9277ebcebd2e10b1614b15f0ee8be1e1aedb8503 | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.…
+764cf4d884e271972c3a1ea6fbc27fa6fcb7d4eb38787fbb40fa91f9f57a1add | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.…
+837f7e464ab3bc491637869950ba56a7cc61977590d2d8ea85801cef3de253bb | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvli…
+b19445e91383f59fb54c75e053d389a447eeac6c606b98420fcd74e044c0d95b | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvli…
+452a2589b6ba40db238cff741fb0f01de83bb9e40b5a58a6f597473abb35900f | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+c84395f45a7d7e87f2f484e6e8180860cc92e464d2f344a90b8d2202520c99fe | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+2c13673bbd2f88c0cdd1df45a4ee63d0e0322c39796103c7abf175fcafe9ba35 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+712c98251cf99c8d47ae32968fc3a46b0f1e376c744bc2409a28a0c122ba9c17 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+09768c6b91a9cbd615074faf903b8010870f3b64a46a710718eecfce0edb21bf | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetb…
+3680ff0f4ee339b0e05865f4057a2d2321b3adaf4bcddeb732314fa7f3fb2bc7 | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetb…
+951e8a3832d8f8cb7c10a41c6bd45c16a7a7ae7cc72958ac734f9db0650f61f9 | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutl…
+476d3579571a4588f8187024f0043b043917a9b102c2c9f1f8fd6fc0085ab7df | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutl…
+1efa62b21a76ac2ec98c213937a846dab30f95082fcca806605b0215f9bba6d6 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/…
+235bd153831ba5180c3487ffb9d20364cd402b72aa38429dd87bdb6cdb4a2227 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/…
+b5e1235b181a5a68a14de7adc88997c66cda26036895fc771e87aca63267f2a4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.…
+54ab64c262cd2762fb2a2c4aead50a23c3ab500cb0f285864b4c7789a2898df5 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.…
+941a2cd8c4b88b02abad9e7fc8219a65642ec4222f531bc0dbb69ae2b4f97147 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/…
+12a8ff3487f7d014492354942d4e88b20925ae6b6679ddf4d426131936e51741 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/…
+9298f4493601af4ba0ccd8f0623ec5cdb7c604c2fea59c3ddf1a82dab824b4c4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/…
+40d80c18a03c236c1ed50dbbb792266b7348b280fcebfce5bf3e41a7f929ecb9 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/…
+f661cca9e27b7029cc074b2b7167d1a6882abeb5a9f55efb8005a05e5ef6e11f | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-…
+fe047cd786c3d1d32a92b2afe45d6c1ad8fefc214216136ffa0de491bb1cd51b | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-…
+da6c7429828e8149702d43b01bb32a57cf9687db6f407552585ba5f26bdf650b | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0…
+d583cc98e2215aa1d558b577435696c5d279674d48922e7095fc4f1dda0f5137 | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0…
+2bdd20936544902649d85d5db4a538cca888bc9b079ca49886476f7eea270dbc | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0…
+353c976f0c5d38f9dc64f571e1ca0a2c57ef0b3dbe76f5bbe062dc396fe7c8a3 | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0…
+8dae7e1f611f12c13e660e5245ade4311bb111976c191eacf6ae907a66a3e37d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdk…
+709acf0644fa2d6ea5ff226b902f49b5503dd76a13b2637b5e9216342987e50d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdk…
+3b9d663a8c1fc4fdc812d729961532fb943fd30e5c9e276121f59cdf6a68e665 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipfli…
+3b46e78152954f6bde5a6d6c219508a8c1229f858e685c156314f1f82e76e1ce | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipfli…
+5a12ac3f190fc2cfab73435d859511220b13eb38f8784a530d06395969cf8c59 | https://raw.githubusercontent.com/guardianproject/gpmaven/master/org/torpro…
+177603e3dce43e843799fe0284f8afe8121bb0cdbcdd34cd06bc09f7bd3e6c6f | https://raw.githubusercontent.com/guardianproject/gpmaven/master/org/torpro…
+e8b4151ae1679f1abe7a14ee371ac9b3c651ae7b63290d1f586bdd0f78face9a | https://repo.maven.apache.org/maven2/com/android/tools/build/transform-api/…
+d49d179f707d3f3a00b2a7d36136b54aa8d44fa22770703cd82fe52fb39e22eb | https://repo.maven.apache.org/maven2/com/android/tools/build/transform-api/…
+05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-par…
+b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-paren…
+feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/…
+766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2…
+b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2…
+8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5…
+2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+10a5949aa0f95c8de4fd47edfe20534d2acefd8c224f8afea1f607e112816120 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
+a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+4a5aa70cc968a4d137e599ad37553e5cfeed2265e8c193476d7119036c536fe7 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.1-jre/guava-…
+bd99d75006131ae25c9860a1d63e84e36371f112fdb0c2fe3d5d6ab38e9eb271 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.1-jre/guava-…
+f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-and…
+d3610165c6de2b4d8d6418487717b63c52b5a39c5e35a553e24873ecb60e0628 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/27.1-jre…
+b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.j…
+efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.p…
+c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimf…
+dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.…
+83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.…
+4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.…
+4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+20ef4b82e43ff7c652281a21313cf3b941092467add3fa73509c26f6969efdab | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.10.0/javapoet-…
+1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1 | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.10.0/javapoet-…
+fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0…
+993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/3.0.7/is…
+6443e10ba2e259fb821d9b6becf10db5316285fc30c53cec9d7b19a3877e7fdf | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/2.3.1/ja…
+f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/2.3.1…
+b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-runtime-pare…
+7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/2…
+785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+bbc796ab84a6778a751c2eff1136078abd2b4d35b5047062804f3582ef3c42c8 | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+cfb8cdad4c0dd05ed8cacbe146bf1718764403947b9de8348e1bfd42f62ea73e | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/fastinfoset-pr…
+74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+da2926f3c8be898643cc10acdec6de0b0351a57fb2735770fa0177b06ade71b9 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+88b955a0df57880a26a74708bc34f74dcaf8ebf4e78843a28b50eae945732b06 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+12b20cf922773445c3445c2883cbf671fa982111e9bf9f875020f9313b3814b1 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.3.1/j…
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1…
+1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/5/jvnet-parent-5…
+26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
+31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
+75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-parent/6.0.3/…
+a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
+8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
+401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4-master/4.5.3/antlr4-m…
+ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom
+36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom
+9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
+7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
+4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom
+2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/25/c…
+3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/c…
+7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/c…
+87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/c…
+c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-paren…
+fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-…
+6cc1266cf306557b4f2d09cbd8cd6e75b5ef0c5773ca4ef763d4f730df947b64 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.3.1/jaxb…
+45fecfa5c8217ce1f3652ab95179790ec8cc0dec0384bca51cbeb94a293d9f2f | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+f8101b86157fbfc01949ffdc7c59ea71ca23b7ece25f6a79061fe01cb750ff00 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+34975dde1c6920f1a39791142235689bc3cd357e24d05edd8ff93b885bd68d60 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+4714d46cacf702ab2cd478d6048c5d9cc57abdb55f4c07b6b7aa72799e02d36c | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
+47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
+ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotat…
+965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotat…
+143e715c10ff6d65eb5a7695be7b696c6e013702dff103d23ba54760bf93867b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+b2b8add63c5ce9b67571ed469f7c37fd043ee2420206255e96a146018d8e2fa0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+e51e512619a7e7650a30eb4eb3e9c03e6909c7b5e3c026404e076254c098b932 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+dbe5babcd8d43e9b08c2845680b53fc1bb3e051c4805802ddd0ed3e8e2c50a84 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+a2e7f341cf3047b5f00a1917ef777d323cdab2a57377468b8ed62aa31469cf7f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+e22db009bb1a61636d9425635989736db5e3fca494809abf244468dc474cfc04 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+11f4a57e3e7d81f3f152d5dcefe39bd77614b5a94125ff3b11526b0a19ac3989 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+c416080aeabdb9118a08ee78c28e2856038cd85858422a71f7c46bf276f667a7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+3839ba7deb798375da1807bc469d1cf315db7a6275599f733184374772ec3b21 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+e30187e5720ca640b8e68686f20dd0250dcef0193d56e5569c3c4a61277312b6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+95b05d9590af4154c6513b9c5dc1fb2e55b539972ba0a9ef28e9a0c01d83ad77 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+0a84c20cf71f6a3d21fe226b0d588332fc7ae3e90cb583c60a483317eb9f3644 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.jar
+83f65b1083d5ce4f8ba7f9545cfe9ff17824589c9a7cc82c3a4695801e4f5f68 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.pom
+e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+c6b54477e9d5bae1e7addff2e24cbf92aaff2ff08fd6bc0596c3933c3fadc2cb | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+f4c697886cdb4a5b2472054a0b5e34371e9b48e620be40c3ed48e1f4b6d51eb4 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+d39e7dd12f4ff535a0839d1949c39c7644355a4470220c94b76a5c168c57a068 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+75fbbca440ef463f41c2b0ab1a80abe67e910ac486da60a7863cbcb5bae7e145 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+e07bce4bb55d5a06f4c10d912fc9dee8a9b9c04ec549bbb8db4f20db34706f75 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
+fbd7b254e02d8aef60c418a5f0e14a783b38a16162caffb2d2a16ccd5d2c09b4 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+bd9b9cb1a3987b1427f7a18babe7f92078e32bbe2e1dca6dced00cc0e3a077a9 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+7cd9d7a0b5d93dfd461a148891b43509cf403a9c7f9fb49060d3554df1c81e1e | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+18f5c52120db036e88d6136f8839c832d074bdda95c756c6f429249d2db54ac6 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.25/slf4j-pa…
+b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-pare…
+fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-pare…
+3a616a32f433e9e23f556b38575c31b013613d3ae85206263b7625fe1f4c151a | https://repo.spring.io/plugins-release/android/arch/core/common/1.1.1/commo…
+eb91acbeeaccc7fa382f88b02a22d5eddf314665bbb8fed090c067b703f50a5c | https://repo.spring.io/plugins-release/android/arch/core/common/1.1.1/commo…
+c3215aa5873311b3f88a6f4e4a3c25ad89971bc127de8c3e1291c57f93a05c39 | https://repo.spring.io/plugins-release/android/arch/core/runtime/1.1.1/runt…
+30453099142d085d801460a20d7e02a3f4d3004238879eaeb62083f59f1193a9 | https://repo.spring.io/plugins-release/android/arch/core/runtime/1.1.1/runt…
+8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56 | https://repo.spring.io/plugins-release/android/arch/lifecycle/common/1.1.1/…
+1742e74f222d06ea26f811191adf18e4cb74213b785e3f5d0d930224e83b4e82 | https://repo.spring.io/plugins-release/android/arch/lifecycle/common/1.1.1/…
+50ab0490c1ff1a7cfb4e554032998b080888946d0dd424f39900efc4a1bcd750 | https://repo.spring.io/plugins-release/android/arch/lifecycle/livedata/1.1.…
+e8db306738739a616a74c38533a91cc066ee194fd45f492f188164e6cb1b856e | https://repo.spring.io/plugins-release/android/arch/lifecycle/livedata/1.1.…
+d6fdd8b985d6178d7ea2f16986a24e83f1bee936b74d43167c69e08d3cc12c50 | https://repo.spring.io/plugins-release/android/arch/lifecycle/livedata-core…
+67a11cd85fd5c96ecdb84538e1eb58d7be59200e7d36d99943f31ecb514fe2a1 | https://repo.spring.io/plugins-release/android/arch/lifecycle/livedata-core…
+c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550 | https://repo.spring.io/plugins-release/android/arch/lifecycle/runtime/1.1.1…
+c7a7d3c2a9d6c21d8b6d470933b9472c733a4799b3ff702081b608adf1c7e592 | https://repo.spring.io/plugins-release/android/arch/lifecycle/runtime/1.1.1…
+7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a | https://repo.spring.io/plugins-release/android/arch/lifecycle/viewmodel/1.1…
+deae2518ee1d17db319fbaf4055e32d591d58569eb9ccad53d8d323cf1840555 | https://repo.spring.io/plugins-release/android/arch/lifecycle/viewmodel/1.1…
+ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://repo.spring.io/plugins-release/net/freehaven/tor/control/jtorctl/0.…
+3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://repo.spring.io/plugins-release/net/freehaven/tor/control/jtorctl/0.…
+1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://repo.spring.io/plugins-release/org/jetbrains/trove4j/trove4j/201608…
+5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://repo.spring.io/plugins-release/org/jetbrains/trove4j/trove4j/201608…
diff --git a/projects/fenix-tor-onion-proxy-library/gradle.patch b/projects/fenix-tor-onion-proxy-library/gradle.patch
new file mode 100644
index 0000000..c77db5f
--- /dev/null
+++ b/projects/fenix-tor-onion-proxy-library/gradle.patch
@@ -0,0 +1,72 @@
+From 66fc98ddb787d22787e79fc2e422076a42b64ad4 Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk(a)torproject.org>
+Date: Mon, 18 May 2020 10:12:01 +0000
+Subject: [PATCH] Bug 33558: Update TOPL to use updated Android toolchain
+
+
+diff --git a/android/build.gradle b/android/build.gradle
+index a8d9bdc..696f62e 100644
+--- a/android/build.gradle
++++ b/android/build.gradle
+@@ -7,6 +7,7 @@ buildscript {
+ mavenLocal()
+ mavenCentral()
+ google()
++ maven { url "https://repo.spring.io/plugins-release" }
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:${androidplugin}"
+@@ -14,11 +15,11 @@ buildscript {
+ }
+
+ android {
+- compileSdkVersion 28
++ compileSdkVersion 29
+
+ defaultConfig {
+ minSdkVersion 16
+- targetSdkVersion 28
++ targetSdkVersion 29
+ versionCode 1
+ versionName "0.0.3"
+ consumerProguardFiles 'proguard-rules.pro'
+@@ -40,7 +41,9 @@ publishing {
+ groupId 'com.msopentech.thali.toronionproxy.android'
+ artifactId 'android'
+ version '0.0.3'
+- artifact(sourceJar)
++ afterEvaluate {
++ artifact(sourceJar)
++ }
+ artifact("$buildDir/outputs/aar/android-release.aar")
+ pom.withXml {
+ def dependenciesNode = asNode().appendNode('dependencies')
+diff --git a/android_tor_installer/build.gradle b/android_tor_installer/build.gradle
+index 554fd49..1913fa9 100644
+--- a/android_tor_installer/build.gradle
++++ b/android_tor_installer/build.gradle
+@@ -7,6 +7,7 @@ buildscript {
+ mavenLocal()
+ mavenCentral()
+ google()
++ maven { url "https://repo.spring.io/plugins-release" }
+ }
+ dependencies {
+ classpath "com.android.tools.build:gradle:${androidplugin}"
+@@ -14,11 +15,11 @@ buildscript {
+ }
+
+ android {
+- compileSdkVersion 28
++ compileSdkVersion 29
+
+ defaultConfig {
+ minSdkVersion 16
+- targetSdkVersion 28
++ targetSdkVersion 29
+ versionCode 1
+ versionName "0.0.3"
+
+--
+2.26.2
+
1
0
[tor-browser-build/master] Bug 31845: Bump GCC version for Linux to 9.3.0
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit f1fdc912f5e8b2281236d33b5fdfcdc10741660e
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 2 07:09:07 2020 +0000
Bug 31845: Bump GCC version for Linux to 9.3.0
We'll update abicheck.cc in a follow-up commit (bug 34359).
---
projects/gcc/config | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/gcc/config b/projects/gcc/config
index a56089a..c515b19 100644
--- a/projects/gcc/config
+++ b/projects/gcc/config
@@ -3,7 +3,7 @@ filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
# Note: When updating the gcc version, if this includes a libstdc++
# ABI change we should also update projects/firefox/abicheck.cc to
# require the new version.
-version: 8.3.0
+version: 9.3.0
var:
container:
use_container: 1
@@ -54,4 +54,4 @@ targets:
input_files:
- project: container-image
- URL: 'https://ftp.gnu.org/gnu/gcc/gcc-[% c("version") %]/gcc-[% c("version") %].tar.xz'
- sha256sum: 64baadfe6cc0f4947a84cb12d7f0dfaf45bb58b7e92461639596c21e02d97d2c
+ sha256sum: 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1
1
0
[tor-browser-build/master] Bug 33559: Update tor-android-service to use new Android toolchain
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 4daa56823d1cb9da2ca852f3b41c27c1db6f25fd
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jun 12 09:37:43 2020 +0000
Bug 33559: Update tor-android-service to use new Android toolchain
Additionally, we clean up the project to remove unused parts.
Based on a patch by sisbell, thanks!
We add a new project to not interfere with Fennec toolchain
requirements for now until we stop building Fennec-based Tor Browser
for Android.
---
projects/fenix-tor-android-service/build | 30 ++
projects/fenix-tor-android-service/config | 26 ++
.../gradle-dependencies-list.txt | 301 +++++++++++++++++++++
3 files changed, 357 insertions(+)
diff --git a/projects/fenix-tor-android-service/build b/projects/fenix-tor-android-service/build
new file mode 100644
index 0000000..4fb41bc
--- /dev/null
+++ b/projects/fenix-tor-android-service/build
@@ -0,0 +1,30 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+output_dir=[% dest_dir %]/[% c('filename') %]
+gradle_repo=$rootdir/[% c('input_files_by_name/gradle-dependencies') %]
+# The download script assumes artifact package name is the complete URL path.
+# In some cases this is incorrect, so copy those artifacts to correct location
+cp -r $gradle_repo/dl/android/maven2/* $gradle_repo
+cp -r $gradle_repo/plugins-release/* $gradle_repo
+cp -r $gradle_repo/maven2/* $gradle_repo
+
+mkdir -p /var/tmp/build $output_dir
+
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+cd /var/tmp/build/[% project %]-[% c('version') %]
+
+# Replace pre-packaged tor library with the latest build
+rm -fR service/src/main/jniLibs/*
+tar -C service/src/main -xf $rootdir/[% c('input_files_by_name/tor') %]/tor.tar.gz
+
+# Replace libraries with the config dependencies
+rm service/libs/*
+cp $rootdir/[% c('input_files_by_name/topl') %]/*{.aar,.jar} service/libs/
+
+# Build Android Libraries and Apps
+gradle --offline --no-daemon -P androidplugin=3.6.0 -P appcompatVersion=28.0.0 -P compileVersion=29 -P targetVersion=29 -P minVersion=16 -Dmaven.repo.local=$gradle_repo assembleRelease -x lint
+
+# Package
+cp jsocksAndroid/build/outputs/aar/* service/build/outputs/aar/* $output_dir
diff --git a/projects/fenix-tor-android-service/config b/projects/fenix-tor-android-service/config
new file mode 100644
index 0000000..d1cf024
--- /dev/null
+++ b/projects/fenix-tor-android-service/config
@@ -0,0 +1,26 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %]'
+git_hash: 8f40b9b2a6f4f8c05b84c5a0fec26a4b7ad77098
+git_url: https://git.torproject.org/tor-android-service.git
+git_submodule: 1
+
+var:
+ deps:
+ - build-essential
+ container:
+ use_container: 1
+ # this should be updated when the list of gradle dependencies is changed
+ gradle_dependencies_version: 1
+
+input_files:
+ - project: container-image
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
+ name: gradle-dependencies
+ exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
+ - project: fenix-tor-onion-proxy-library
+ name: topl
+ - project: tor
+ name: tor
diff --git a/projects/fenix-tor-android-service/gradle-dependencies-list.txt b/projects/fenix-tor-android-service/gradle-dependencies-list.txt
new file mode 100644
index 0000000..ecaca43
--- /dev/null
+++ b/projects/fenix-tor-android-service/gradle-dependencies-list.txt
@@ -0,0 +1,301 @@
+# On how to update dependencies see projects/common/how-to-create-gradle-dependencies-list.txt
+# Don't forget to update var/gradle_dependencies_version when modifying this file
+sha256sum | url
+3a616a32f433e9e23f556b38575c31b013613d3ae85206263b7625fe1f4c151a | https://dl.google.com/dl/android/maven2/android/arch/core/common/1.1.1/comm…
+eb91acbeeaccc7fa382f88b02a22d5eddf314665bbb8fed090c067b703f50a5c | https://dl.google.com/dl/android/maven2/android/arch/core/common/1.1.1/comm…
+c3215aa5873311b3f88a6f4e4a3c25ad89971bc127de8c3e1291c57f93a05c39 | https://dl.google.com/dl/android/maven2/android/arch/core/runtime/1.1.1/run…
+30453099142d085d801460a20d7e02a3f4d3004238879eaeb62083f59f1193a9 | https://dl.google.com/dl/android/maven2/android/arch/core/runtime/1.1.1/run…
+8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.1.1…
+1742e74f222d06ea26f811191adf18e4cb74213b785e3f5d0d930224e83b4e82 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.1.1…
+50ab0490c1ff1a7cfb4e554032998b080888946d0dd424f39900efc4a1bcd750 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/livedata/1.1…
+e8db306738739a616a74c38533a91cc066ee194fd45f492f188164e6cb1b856e | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/livedata/1.1…
+d6fdd8b985d6178d7ea2f16986a24e83f1bee936b74d43167c69e08d3cc12c50 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/livedata-cor…
+67a11cd85fd5c96ecdb84538e1eb58d7be59200e7d36d99943f31ecb514fe2a1 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/livedata-cor…
+c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.1.…
+c7a7d3c2a9d6c21d8b6d470933b9472c733a4799b3ff702081b608adf1c7e592 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.1.…
+7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/viewmodel/1.…
+deae2518ee1d17db319fbaf4055e32d591d58569eb9ccad53d8d323cf1840555 | https://dl.google.com/dl/android/maven2/android/arch/lifecycle/viewmodel/1.…
+e6d2aee708189bc3d9dff647b7671d03750007223639db16146bd7382bfb7934 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+8d22885c700e913c8d17a373b96bbb05bc6d6a1c2848b0c57928e2de325bf158 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+bf2b0ed68625a159254198aeca04f4fe6a5b99638500c88b2d59b7ecd42b6f67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+b450ad9617683054753abf126d3ebf2b2d99a3a4975355cdfc2cf31cef7ace67 | https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-co…
+10e1f9691dc9485d4c122d16b8ebb2c062a7675c983055bb28cec2496026e658 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
+099461a4afeb91d9852e4f6a69959403c328286840d991a001a068afc243bac6 | https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary…
+a0c36940b7351c2673bf3c96b6774017db4f1e8342ee063cafc3533cecd22707 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signf…
+a8f9f10afa0b381b5e64eafafbd09015775d9934eea475ccaf3320431b4b2a50 | https://dl.google.com/dl/android/maven2/com/android/signflinger/3.6.0/signf…
+271ecbc906cda8dcd9e655ba0473129c3408a4189c806f616c378e6fd18fb3b7 | https://dl.google.com/dl/android/maven2/com/android/support/animated-vector…
+d4783f9cce5b193cb59486fa9fd9f06e828fe4d2d9a5744fab372b9a4a95ecca | https://dl.google.com/dl/android/maven2/com/android/support/animated-vector…
+a3a8e5230359746ed91801579b5fbe4668e3b1c4e6a14c7d67c8f58cb0311752 | https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28…
+d9f2abe237eab1b651694c0d292dea9ec5b341ae70bfaafffbbb5d46b78c5e17 | https://dl.google.com/dl/android/maven2/com/android/support/appcompat-v7/28…
+115bde87721f7334579b0c735f60dd7c98af1bb7f34010c5b0553b95dc351aa2 | https://dl.google.com/dl/android/maven2/com/android/support/asynclayoutinfl…
+790f1d0ca7c1a65d5afb40baf5b5423fa3163f6f90a47f3193ae0c8bb11c6e78 | https://dl.google.com/dl/android/maven2/com/android/support/asynclayoutinfl…
+93c258c8a09f531a267653829742c0f8f6da0e348b11cb8655b0855628f2d4f0 | https://dl.google.com/dl/android/maven2/com/android/support/collections/28.…
+f6c4146b8b2029e52971402d1c29ed59d2a98b4fab33ef8e6f44233ac0cf27ba | https://dl.google.com/dl/android/maven2/com/android/support/collections/28.…
+9dfacd80423dc979048fbaed83c0ee543c46259feb2417377e79a656888d3892 | https://dl.google.com/dl/android/maven2/com/android/support/coordinatorlayo…
+cb83674d682f81daf7b2d43e965a18b83ef4f5bb02a69d14bb20175753361a4f | https://dl.google.com/dl/android/maven2/com/android/support/coordinatorlayo…
+87feffe742b8d62ca8a9833abe564838bf6a672e31c7ad1306ec4006adf90d21 | https://dl.google.com/dl/android/maven2/com/android/support/cursoradapter/2…
+5727103ce28357bce8f74655c0994508d55d060f9ec6dafba0103e7fe55f275b | https://dl.google.com/dl/android/maven2/com/android/support/cursoradapter/2…
+98db03845f994e08248bf701c1ff0ccaa12e70f94251ec9272900f0f694e072b | https://dl.google.com/dl/android/maven2/com/android/support/customview/28.0…
+187c2729dfd51ef8db5963598d14da67bad5ceb4ea5252f382044249327010e5 | https://dl.google.com/dl/android/maven2/com/android/support/customview/28.0…
+47cdcd3e9302b7b064923f05487a5c03babbd9bbda4726b71e97791fab5d4779 | https://dl.google.com/dl/android/maven2/com/android/support/documentfile/28…
+5ffda693e34d152463f8a9a6c00407fb11747a2271c278e082a287abad3f9cba | https://dl.google.com/dl/android/maven2/com/android/support/documentfile/28…
+8f6809afae4793550c37461c9810e954ae6a23dbb4d23e5333bf18148df1150a | https://dl.google.com/dl/android/maven2/com/android/support/drawerlayout/28…
+424f2d0b4a3ac46e0ad5349192ad0ecdc0bfcb10ed91767a08230cd16a3cfe36 | https://dl.google.com/dl/android/maven2/com/android/support/drawerlayout/28…
+7bc7ee86a0db39a4b51956f3e89842d2bd962118d57d779eb6ed6b34ba0677ea | https://dl.google.com/dl/android/maven2/com/android/support/interpolator/28…
+296b5f5eaa5cb38f67bca092aaf56bf6d23a13aa07cd81a377f861f52d609f9b | https://dl.google.com/dl/android/maven2/com/android/support/interpolator/28…
+920b85efd72dc33e915b0f88a883fe73b88483c6df8751a741e17611f2460341 | https://dl.google.com/dl/android/maven2/com/android/support/loader/28.0.0/l…
+9a9bad607f4b946d1503fe9b751af156da361e642e86f4fb5355b89b9557e8df | https://dl.google.com/dl/android/maven2/com/android/support/loader/28.0.0/l…
+d287c823af5fdde72c099fcfc5f630efe9687af7a914343ae6fd92de32c8a806 | https://dl.google.com/dl/android/maven2/com/android/support/localbroadcastm…
+351a941335421113dff16b1ff9d4618bbcb093fd1508fc8639f18c5533313091 | https://dl.google.com/dl/android/maven2/com/android/support/localbroadcastm…
+4be8a812d73e4a80e35b91ceae127def3f0bb9726bf3bc439aa0cc81503f5728 | https://dl.google.com/dl/android/maven2/com/android/support/print/28.0.0/pr…
+e15dd914e64f5cfcbd91aeb1b921fd6ead39c21926e171a4955dd12c849c6e78 | https://dl.google.com/dl/android/maven2/com/android/support/print/28.0.0/pr…
+d1d234f66a1b36a9aee9b94fa6c66f97128c0828078c8e889e9037ec898cd600 | https://dl.google.com/dl/android/maven2/com/android/support/slidingpanelayo…
+be47ac0d8fd8bdd783071596c5ea271362484752d282fb8c3421d1853ad02619 | https://dl.google.com/dl/android/maven2/com/android/support/slidingpanelayo…
+5d5b9414f02d3fa0ee7526b8d5ddae0da67c8ecc8c4d63ffa6cf91488a93b927 | https://dl.google.com/dl/android/maven2/com/android/support/support-annotat…
+a086481e014492fd3a4d5f4459875b8a70a201258f0b225836212ee29df0091a | https://dl.google.com/dl/android/maven2/com/android/support/support-annotat…
+e17e3b01dbea3f9ea1c86943292f903ca93d2231c6242e456e0b6a9c5817118a | https://dl.google.com/dl/android/maven2/com/android/support/support-compat/…
+6b79a06c2282fc0f961cfd826a26ad41ff5c457b0c11d9a6b6a63e51f53d961a | https://dl.google.com/dl/android/maven2/com/android/support/support-compat/…
+bbc7f65fc95649464733af373361532ab5f9f3b749c3badaa2bbf27e574b6c6f | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui…
+708ad4a6a48ce625aee395fd0625ae5441fee8f0e25861406603f765e679b544 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui…
+c81e1e98ca3cb2edae002c69cf35b22aec364b8cb2f1042c97e206eb5790ac41 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ut…
+86a744b8739e8b354d0ecaec35dd943dea9a66f0296a3a9c1eb384fc93a4eaf7 | https://dl.google.com/dl/android/maven2/com/android/support/support-core-ut…
+3772fc738ada86824ba1a4b3f197c3dbd67b7ddcfe2c9db1de95ef2e3487a915 | https://dl.google.com/dl/android/maven2/com/android/support/support-fragmen…
+d24bdade5b77b26b82d39beda9fa0f42bcdf61cb5661a3c66ddfde3f77869b07 | https://dl.google.com/dl/android/maven2/com/android/support/support-fragmen…
+f658986d968172bccfed28578471c96050780fe5e133861e4d331069cc373f4d | https://dl.google.com/dl/android/maven2/com/android/support/support-vector-…
+1e54416142b0f1274db09bbea1808f5cf9311c895bb0d84adaa18a7b5132aadc | https://dl.google.com/dl/android/maven2/com/android/support/support-vector-…
+a3b41f7f6730866b49865e86e49f988d4858699765f534300fb2ff5f9325e712 | https://dl.google.com/dl/android/maven2/com/android/support/swiperefreshlay…
+c2e08d32b75d98a844f20be02510c830f7e5b53f64907af2270a898d59dc872f | https://dl.google.com/dl/android/maven2/com/android/support/swiperefreshlay…
+60eb1cb08f71b65c3f6123135e03ebeb5930b5e126e1e5b2ac91b386908c9d02 | https://dl.google.com/dl/android/maven2/com/android/support/versionedparcel…
+e7d6f726e702b418998fab6284df2f509f5acdf9203ced37c8d1274f9e38447b | https://dl.google.com/dl/android/maven2/com/android/support/versionedparcel…
+013c4c53058758ec104dbae970be58159f75dfe342ba8b937d15ff5282e35ffc | https://dl.google.com/dl/android/maven2/com/android/support/viewpager/28.0.…
+080bba6573f6a4a9b2af443bf4ecb2a7ac4302a027274cc9bf9fdd51f409430e | https://dl.google.com/dl/android/maven2/com/android/support/viewpager/28.0.…
+f7a0143fa51920ea9289ebfc11349fcb4bc70cebd1f6b746de2998fa7fdf5f2d | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+b98df4993e7f76236fd28b6b73f62b2349f0399e780d50c8743e708c08f9b073 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+fe69b530190d1be5d375b4d27c1831f1921ee023bcc2a4779a692a11b883a5d1 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+65965684318c80df0f40e90f9a50800d8c57e9b3eda48096f9990b769f93524b | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+d897e7af0116944be7c4b917831527155fa3723f1fb77f45ba84537c9923cd99 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+ade7c62a6a19e93635ad78bb8f4bac080e32a1ecc7423c146522e013472f672f | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+29720b801195d7809a8e91da9dbaee2305320f28777c7e9649da6b2392dc48a7 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+9835e19c8b5ba3660f1778d27a82f03c4ac944cb3d22f14881b372ae251246e2 | https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library…
+fb242380c243cd2069fd992b2803cca4a9e4366157cd327984eab75eb9e9a9e7 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.…
+827af30b20f5c227cba52f365d685e92ff08c45e2d4f37fca57eb5f951006dd2 | https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.6.…
+f74465e394c73d71f0f9053f3ebc90999d06bea3ad7c1fa3576b6a3a088d0db3 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0…
+c616e4a81a19bf74fb98f072383b316da8be882c3e9efce7fee82b802da5ccd5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.6.0…
+fac0435e08898f89eeeb9ca236bea707155ff816c12205ced285ad53604133ca | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto…
+a24bdd4e8e374fdcd8cef8d77ea723f147ccd0f25dc6de4fbe290039be904339 | https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2-proto…
+1fc041276d0e090b6ac99f26e8ab59d1c2257293bc88ee49ff074e69345bc665 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.…
+2cf2d4a8fbe06e60026b6f2f90a7d6c73b7d3f66abbb984e6a1740b85776a028 | https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.6.…
+8126c2fef74b0ebd1d6e647c3a84ef4f3e9a60231952abc74e4a097a6449374a | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6…
+055661a9e3089fb7154e0f358281a7406b1da4bc6d61dea1a0e19231239f36cf | https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.6…
+74cc34c112d8586cedb0f94a9728b0402492436e10c6493ee6da60308be0b262 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6…
+f4485a00d7a5c792cb5f2a8c5c8446bada583570f25182dbf84d700e30441386 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.6…
+e18b976ea7620026259eeae4dc0378bd2ff5388dd91b8201113b2089b281ae3f | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+369428537e6613f4e229cbd70360aeff18a628c41566a7dd5b3d143808eef41a | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-mod…
+ac90b88ce12f9d0ae0f9845ff2ad9bdf65aa07d3e7b4b0515794cffe4b603fe8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-tes…
+af0c92edfbc6549bebb636e82eb8a851c85e12bc4bcdfa2b81161bbb9e994050 | https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-tes…
+20f2e347e9b4ccd9cdcdc2f6e1956ba3cc1641991fbbadc1f86ca60dd6ca64e1 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/…
+ad9c1614680f29b5c39018c32e2b44d3adfc52d667e7bf29ca64eb2feb697034 | https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/…
+bdd59f532634d4fde2b3a6864bdc61058d94a62a5310f431f75b6f571d00d196 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.…
+ee16c99fea79a677092828264e01961816cef6ef4fa1f5702db6a58093dc0157 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.6.…
+841cfc9f6224c2d12e761ac3a305b268e0ee735b0ddd7e70cfebbf5a2df9cfa6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+69d6a67a8f84d03ba331dc9e228bd477c903f3643bde330c8c3a1cc72e8e1b7a | https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/…
+0930bb58d94e09c61161576ca38853b3dba4ac9320fcf323f9b31bc58a18afda | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+c39f0d195566b2ca9e1c954a665a553dc60320d4022acad82fd56a31a6d395d5 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+689e5637b0b61b460f447064ff62ed4267203a26a70cf071fa34d7c3faba5366 | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+be08f1215cd2bb5cbd22b1146ea92e0f14558fafc1603cbef7553b3a6677984c | https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/je…
+9b2709e8f64978960a701675fa8d6e7dc5109ec6ddf1bb301c9ebf88545c9bc6 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+fc1c1056089f4418ac0de5aef2c797a38a39ce8cd70cacb95269b834625fcde8 | https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-me…
+4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740 | https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-a…
+7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575 | https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-a…
+f83adfad2f11074d97e6b0706872a60ec54c6ff42d6554bec1c900d9077825d5 | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/com…
+4f9c30f02a6ee14fe175c1dd53274fd615d8e11dc22fb9912adcb58a69bb0bca | https://dl.google.com/dl/android/maven2/com/android/tools/common/26.6.0/com…
+62eab1a996349a50e1e2a38f9277ebcebd2e10b1614b15f0ee8be1e1aedb8503 | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.…
+764cf4d884e271972c3a1ea6fbc27fa6fcb7d4eb38787fbb40fa91f9f57a1add | https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.6.…
+837f7e464ab3bc491637869950ba56a7cc61977590d2d8ea85801cef3de253bb | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvli…
+b19445e91383f59fb54c75e053d389a447eeac6c606b98420fcd74e044c0d95b | https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.6.0/dvli…
+452a2589b6ba40db238cff741fb0f01de83bb9e40b5a58a6f597473abb35900f | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+c84395f45a7d7e87f2f484e6e8180860cc92e464d2f344a90b8d2202520c99fe | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+2c13673bbd2f88c0cdd1df45a4ee63d0e0322c39796103c7abf175fcafe9ba35 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+712c98251cf99c8d47ae32968fc3a46b0f1e376c744bc2409a28a0c122ba9c17 | https://dl.google.com/dl/android/maven2/com/android/tools/external/com-inte…
+09768c6b91a9cbd615074faf903b8010870f3b64a46a710718eecfce0edb21bf | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetb…
+3680ff0f4ee339b0e05865f4057a2d2321b3adaf4bcddeb732314fa7f3fb2bc7 | https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetb…
+951e8a3832d8f8cb7c10a41c6bd45c16a7a7ae7cc72958ac734f9db0650f61f9 | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutl…
+476d3579571a4588f8187024f0043b043917a9b102c2c9f1f8fd6fc0085ab7df | https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutl…
+1efa62b21a76ac2ec98c213937a846dab30f95082fcca806605b0215f9bba6d6 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/…
+235bd153831ba5180c3487ffb9d20364cd402b72aa38429dd87bdb6cdb4a2227 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/26.6.0/…
+b5e1235b181a5a68a14de7adc88997c66cda26036895fc771e87aca63267f2a4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.…
+54ab64c262cd2762fb2a2c4aead50a23c3ab500cb0f285864b4c7789a2898df5 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/26.…
+941a2cd8c4b88b02abad9e7fc8219a65642ec4222f531bc0dbb69ae2b4f97147 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/…
+12a8ff3487f7d014492354942d4e88b20925ae6b6679ddf4d426131936e51741 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/…
+9298f4493601af4ba0ccd8f0623ec5cdb7c604c2fea59c3ddf1a82dab824b4c4 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/…
+40d80c18a03c236c1ed50dbbb792266b7348b280fcebfce5bf3e41a7f929ecb9 | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/…
+f661cca9e27b7029cc074b2b7167d1a6882abeb5a9f55efb8005a05e5ef6e11f | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-…
+fe047cd786c3d1d32a92b2afe45d6c1ad8fefc214216136ffa0de491bb1cd51b | https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-…
+da6c7429828e8149702d43b01bb32a57cf9687db6f407552585ba5f26bdf650b | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0…
+d583cc98e2215aa1d558b577435696c5d279674d48922e7095fc4f1dda0f5137 | https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.6.0…
+2bdd20936544902649d85d5db4a538cca888bc9b079ca49886476f7eea270dbc | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0…
+353c976f0c5d38f9dc64f571e1ca0a2c57ef0b3dbe76f5bbe062dc396fe7c8a3 | https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.6.0…
+8dae7e1f611f12c13e660e5245ade4311bb111976c191eacf6ae907a66a3e37d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdk…
+709acf0644fa2d6ea5ff226b902f49b5503dd76a13b2637b5e9216342987e50d | https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.6.0/sdk…
+3b9d663a8c1fc4fdc812d729961532fb943fd30e5c9e276121f59cdf6a68e665 | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipfli…
+3b46e78152954f6bde5a6d6c219508a8c1229f858e685c156314f1f82e76e1ce | https://dl.google.com/dl/android/maven2/com/android/zipflinger/3.6.0/zipfli…
+05f740c6648165db00cf618dd56c200c4725e358e6d54f5853e0bec15734ea0a | https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-par…
+b48b04ddba40e8ac33bf036f06fc43995fc5084bd94bdaace807ce27d3bea3fb | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+1c76cd462fc96e7aa96dc70ce82f0d54063d6df16db35c9c7d9cc0d1a99d3fff | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annot…
+27b640c82179f5cff62009c0b72033d9bc60f60e9902a66802274b7fe37fc81c | https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-paren…
+feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/…
+766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/3.0.2/…
+233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2…
+b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2…
+8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://repo.maven.apache.org/maven2/com/google/code/gson/gson-parent/2.8.5…
+2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple…
+757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniv…
+6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+10a5949aa0f95c8de4fd47edfe20534d2acefd8c224f8afea1f607e112816120 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+3edce6b711ba368efe16b9b7aacb0214fbd648414cb9b965953a2e7ed89a819a | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_anno…
+c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+767525d9a81129cd081968382980336327be4162b1e2251a182911daa733c123 | https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_pare…
+cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
+a171ee4c734dd2da837e4b16be9df4661afab72a41adaf31eb84dfdaf936ca26 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+e96042ce78fecba0da2be964522947c87b40a291b5fd3cd672a434924103c4b9 | https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/f…
+4a5aa70cc968a4d137e599ad37553e5cfeed2265e8c193476d7119036c536fe7 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.1-jre/guava-…
+bd99d75006131ae25c9860a1d63e84e36371f112fdb0c2fe3d5d6ab38e9eb271 | https://repo.maven.apache.org/maven2/com/google/guava/guava/27.1-jre/guava-…
+f8698ab46ca996ce889c1afc8ca4f25eb8ac6b034dc898d4583742360016cc04 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/26.0-and…
+d3610165c6de2b4d8d6418487717b63c52b5a39c5e35a553e24873ecb60e0628 | https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/27.1-jre…
+b372a037d4230aa57fbeffdef30fd6123f9c0c2db85d0aced00c91b974f33f99 | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+18d4b1db26153d4e55079ce1f76bb1fe05cdb862ef9954a88cbcc4ff38b8679b | https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999…
+2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1…
+c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.j…
+efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.p…
+c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimf…
+dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.…
+83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.…
+4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util…
+24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.…
+4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commo…
+cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2…
+daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/co…
+20ef4b82e43ff7c652281a21313cf3b941092467add3fa73509c26f6969efdab | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.10.0/javapoet-…
+1690340a222279f2cbadf373e88826fa20f7f3cc3ec0252f36818fed32701ab1 | https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.10.0/javapoet-…
+fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawrit…
+1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0…
+993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://repo.maven.apache.org/maven2/com/sun/activation/javax.activation/1.…
+6f83d3c85fdca9ef24010cb2f652aab1a508bff6331c087b60d0301782b78c6f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons/3.0.7/is…
+6443e10ba2e259fb821d9b6becf10db5316285fc30c53cec9d7b19a3877e7fdf | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+6d704e450a816a45bce806ba22c22fe83d8e8dcf7a71517603de630a1726809f | https://repo.maven.apache.org/maven2/com/sun/istack/istack-commons-runtime/…
+c2204f54b43593808c9af6502865ee71679823156dabdef341e71d35662c7aa0 | https://repo.maven.apache.org/maven2/com/sun/xml/bind/jaxb-bom-ext/2.3.1/ja…
+f699ef37ec7966e284742dfca83075221179041a9a49aef7991280192604462d | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-parent/2.3.1…
+b56383eb4d43498b145d379e2a93d5fcdcd8ff9291f89b58b82cb91658dbf14c | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-runtime-pare…
+7a8473e935504841c606686d84e9c017a739ac2c144fde687aa003a7dd44de7f | https://repo.maven.apache.org/maven2/com/sun/xml/bind/mvn/jaxb-txw-parent/2…
+785861db11ca1bd0d1956682b974ad73eb19cd3e01a4b3fa82d62eca97210aec | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+bbc796ab84a6778a751c2eff1136078abd2b4d35b5047062804f3582ef3c42c8 | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/FastInfoset/1.…
+cfb8cdad4c0dd05ed8cacbe146bf1718764403947b9de8348e1bfd42f62ea73e | https://repo.maven.apache.org/maven2/com/sun/xml/fastinfoset/fastinfoset-pr…
+74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7…
+43fdef0b5b6ceb31b0424b208b930c74ab58fac2ceeb7b3f6fd3aeb8b5ca4393 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+da2926f3c8be898643cc10acdec6de0b0351a57fb2735770fa0177b06ade71b9 | https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/…
+91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inje…
+88b955a0df57880a26a74708bc34f74dcaf8ebf4e78843a28b50eae945732b06 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+12b20cf922773445c3445c2883cbf671fa982111e9bf9f875020f9313b3814b1 | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api…
+cd1beaa4560dc4dfdb826b9d809e464db22526dfb54264bae78a6ff7efb08e1f | https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.3.1/j…
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1…
+1af699f8d9ddab67f9a0d202fbd7915eb0362a5a6dfd5ffc54cafa3465c9cb0a | https://repo.maven.apache.org/maven2/net/java/jvnet-parent/5/jvnet-parent-5…
+26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://repo.maven.apache.org/maven2/net/sf/jopt-simple/jopt-simple/4.9/jop…
+f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
+31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://repo.maven.apache.org/maven2/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
+75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-base/6.0.3/pr…
+cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-gradle/6.0.3/…
+d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://repo.maven.apache.org/maven2/net/sf/proguard/proguard-parent/6.0.3/…
+a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
+8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://repo.maven.apache.org/maven2/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
+401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://repo.maven.apache.org/maven2/org/antlr/antlr4-master/4.5.3/antlr4-m…
+ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom
+36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom
+9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
+7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
+4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom
+2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.…
+467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/25/c…
+3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/c…
+7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/c…
+87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/c…
+c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4…
+b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponen…
+78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4…
+0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5…
+7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/b…
+963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/b…
+64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.…
+51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-all/2.4.15/…
+92654f493ecfec52082e76354f0ebf87648dc3d5cec2e3c3cdb947c016747a53 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+e956ab5d2eb48fabae12300d0cd2d3294d4a2a41abc2068c23cb4d60ad76cbe5 | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annot…
+18a03df16e2a184c582db7b125633c15fb7714027a84c1b532d72933dc08b81f | https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-paren…
+fc648dcdc404f8bf66e0583914ecf980176618201227bea114fae85043cb755e | https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-…
+6cc1266cf306557b4f2d09cbd8cd6e75b5ef0c5773ca4ef763d4f730df947b64 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.3.1/jaxb…
+45fecfa5c8217ce1f3652ab95179790ec8cc0dec0384bca51cbeb94a293d9f2f | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+f8101b86157fbfc01949ffdc7c59ea71ca23b7ece25f6a79061fe01cb750ff00 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-runtime/2.3.1/…
+34975dde1c6920f1a39791142235689bc3cd357e24d05edd8ff93b885bd68d60 | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+4714d46cacf702ab2cd478d6048c5d9cc57abdb55f4c07b6b7aa72799e02d36c | https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.3.1/txw2-2.3…
+1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
+47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
+ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotat…
+965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotat…
+143e715c10ff6d65eb5a7695be7b696c6e013702dff103d23ba54760bf93867b | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+b2b8add63c5ce9b67571ed469f7c37fd043ee2420206255e96a146018d8e2fa0 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.…
+e51e512619a7e7650a30eb4eb3e9c03e6909c7b5e3c026404e076254c098b932 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+dbe5babcd8d43e9b08c2845680b53fc1bb3e051c4805802ddd0ed3e8e2c50a84 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3…
+a2e7f341cf3047b5f00a1917ef777d323cdab2a57377468b8ed62aa31469cf7f | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+e22db009bb1a61636d9425635989736db5e3fca494809abf244468dc474cfc04 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-com…
+11f4a57e3e7d81f3f152d5dcefe39bd77614b5a94125ff3b11526b0a19ac3989 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+c416080aeabdb9118a08ee78c28e2856038cd85858422a71f7c46bf276f667a7 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+3839ba7deb798375da1807bc469d1cf315db7a6275599f733184374772ec3b21 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+e30187e5720ca640b8e68686f20dd0250dcef0193d56e5569c3c4a61277312b6 | https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk…
+95b05d9590af4154c6513b9c5dc1fb2e55b539972ba0a9ef28e9a0c01d83ad77 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+0a84c20cf71f6a3d21fe226b0d588332fc7ae3e90cb583c60a483317eb9f3644 | https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1…
+b88ef66468b3c978ad0c97fd6e90979e56155b4ac69089ba7a44e9aa7ffe9acf | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.jar
+83f65b1083d5ce4f8ba7f9545cfe9ff17824589c9a7cc82c3a4695801e4f5f68 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.pom
+e981f8f650c4d900bb033650b18e122fa6b161eadd5f88978d08751f72ee8474 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+c6b54477e9d5bae1e7addff2e24cbf92aaff2ff08fd6bc0596c3933c3fadc2cb | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analy…
+fed348ef05958e3e846a3ac074a12af5f7936ef3d21ce44a62c4fa08a771927d | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+f4c697886cdb4a5b2472054a0b5e34371e9b48e620be40c3ed48e1f4b6d51eb4 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-common…
+cfd7a0874f9de36a999c127feeadfbfe6e04d4a71ee954d7af3d853f0be48a6c | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+d39e7dd12f4ff535a0839d1949c39c7644355a4470220c94b76a5c168c57a068 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.…
+75fbbca440ef463f41c2b0ab1a80abe67e910ac486da60a7863cbcb5bae7e145 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+e07bce4bb55d5a06f4c10d912fc9dee8a9b9c04ec549bbb8db4f20db34706f75 | https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.…
+0f8a1b116e760b8fe6389c51b84e4b07a70fc11082d4f936e453b583dd50b43b | https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
+fbd7b254e02d8aef60c418a5f0e14a783b38a16162caffb2d2a16ccd5d2c09b4 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+bd9b9cb1a3987b1427f7a18babe7f92078e32bbe2e1dca6dced00cc0e3a077a9 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-android/1.7.25/slf4j-a…
+18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+7cd9d7a0b5d93dfd461a148891b43509cf403a9c7f9fb49060d3554df1c81e1e | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1…
+18f5c52120db036e88d6136f8839c832d074bdda95c756c6f429249d2db54ac6 | https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.25/slf4j-pa…
+b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-pare…
+fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-pare…
+ec3a75bebddbf19ff56a281cf5d1ad146169dcaa0e69d7b14f4aaba2e7775f34 | https://repo.spring.io/plugins-release/net/freehaven/tor/control/jtorctl/0.…
+3369726ca2b0e3736c741ff3c22e06f707a1007ff20ccc5b5ba5d0d9a01ead30 | https://repo.spring.io/plugins-release/net/freehaven/tor/control/jtorctl/0.…
+1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://repo.spring.io/plugins-release/org/jetbrains/trove4j/trove4j/201608…
+5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://repo.spring.io/plugins-release/org/jetbrains/trove4j/trove4j/201608…
1
0
[tor-browser-build/master] Bug 40006: Adapt cbindgen for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit f232e5d23544a7fbfa4b8f619a49315d370aca2b
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 11:12:40 2020 +0000
Bug 40006: Adapt cbindgen for Firefox 78 ESR
---
projects/cbindgen/build | 2 +-
projects/cbindgen/config | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/projects/cbindgen/build b/projects/cbindgen/build
index 429f567..2a1c9e0 100644
--- a/projects/cbindgen/build
+++ b/projects/cbindgen/build
@@ -11,7 +11,7 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
# Now prepare the offline build
# Move the directory for hardcoding the path in .cargo/config
mv /var/tmp/build/[% project %]-[% c('version') %] $builddir
-tar -C $builddir -xjf cbindgen-vendor.tar.bz2
+tar -C $builddir -xjf cbindgen-vendor-[% c('version') %].tar.bz2
cd $builddir
mkdir .cargo
cat > .cargo/config << 'EOF'
diff --git a/projects/cbindgen/config b/projects/cbindgen/config
index ddfb9f9..3dd94f6 100644
--- a/projects/cbindgen/config
+++ b/projects/cbindgen/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
-version: '[% c("abbrev") %]'
+version: 0.14.1
git_url: https://github.com/eqrion/cbindgen
-git_hash: 23a991a5b21e89aa1dcdc70f1371be20c93ece8e #v0.8.7
+git_hash: 0761b9bbe48d01ded1bbec45bbeea5544b3b1002 # v0.14.1
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -12,5 +12,5 @@ input_files:
- name: rust
project: rust
# `cargo vendor vendor` in the `cbindgen` directory has vendored the sources.
- - URL: https://people.torproject.org/~boklm/mirrors/sources/cbindgen-vendor.tar.bz2
- sha256sum: f4cde3d56df893b543b35b7e4a6e295a275dbb3cee8e8eae549efe679db50ab9
+ - URL: https://people.torproject.org/~gk/mirrors/sources/cbindgen-vendor-[% c('version') %].tar.bz2
+ sha256sum: 1c500bc1b8de4eb400f90a528c4b5c6b2c7357e401a95c5354469a18fd365dbc
1
0
[tor-browser-build/master] Bug 34387: Fix Namecoin patches for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit f431cfcd39c4e6bec0094655206e94a495123bad
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 11:53:35 2020 +0000
Bug 34387: Fix Namecoin patches for Firefox 78 ESR
---
projects/firefox/namecoin-etld.patch | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/projects/firefox/namecoin-etld.patch b/projects/firefox/namecoin-etld.patch
index e2e49a5..a48383c 100644
--- a/projects/firefox/namecoin-etld.patch
+++ b/projects/firefox/namecoin-etld.patch
@@ -1,21 +1,8 @@
-diff --git a/mobile/android/app/src/main/assets/publicsuffixlist b/mobile/android/app/src/main/assets/publicsuffixlist
-index 7f834b1a89bd..6874b4005ae3 100644
---- a/mobile/android/app/src/main/assets/publicsuffixlist
-+++ b/mobile/android/app/src/main/assets/publicsuffixlist
-@@ -3005,6 +3005,8 @@ edu.mn
- gov.mn
- london
- fashion
-+onion
-+bit.onion
- creditunion
- vision
- eurovision
diff --git a/netwerk/dns/effective_tld_names.dat b/netwerk/dns/effective_tld_names.dat
index 0c53819d860d..469fb3d53ba1 100644
--- a/netwerk/dns/effective_tld_names.dat
+++ b/netwerk/dns/effective_tld_names.dat
-@@ -5497,6 +5497,7 @@ pro.om
+@@ -5499,6 +5499,7 @@ pro.om
onion
tor.onion
securedrop.tor.onion
1
0
[tor-browser-build/master] Bug 40004: Adapt Rust project for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit d78cf48aa087db33bdf7a16c833a06d49551093e
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 11:02:03 2020 +0000
Bug 40004: Adapt Rust project for Firefox 78 ESR
---
projects/rust/42574.patch | 236 ----------------------------------------------
projects/rust/build | 1 -
projects/rust/config | 5 +-
3 files changed, 2 insertions(+), 240 deletions(-)
diff --git a/projects/rust/42574.patch b/projects/rust/42574.patch
deleted file mode 100644
index 285d254..0000000
--- a/projects/rust/42574.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 3757213db371dcea53cae357cf9c56d1b0604f98 Mon Sep 17 00:00:00 2001
-From: Alina Sbirlea <asbirlea(a)google.com>
-Date: Fri, 12 Jul 2019 22:30:30 +0000
-Subject: [PATCH] [MemorySSA] Use SetVector to avoid nondeterminism.
-
-Summary:
-Use a SetVector for DeadBlockSet.
-Resolves PR42574.
-
-Reviewers: george.burgess.iv, uabelho, dblaikie
-
-Subscribers: jlebar, Prazek, mgrang, llvm-commits
-
-Tags: #llvm
-
-Differential Revision: https://reviews.llvm.org/D64601
-
-llvm-svn: 365970
-
-diff --git a/llvm/include/llvm/Analysis/MemorySSAUpdater.h b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-index 169d5bd9fa8..276620bd445 100644
---- a/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-+++ b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-@@ -32,6 +32,7 @@
- #ifndef LLVM_ANALYSIS_MEMORYSSAUPDATER_H
- #define LLVM_ANALYSIS_MEMORYSSAUPDATER_H
-
-+#include "llvm/ADT/SetVector.h"
- #include "llvm/ADT/SmallPtrSet.h"
- #include "llvm/ADT/SmallSet.h"
- #include "llvm/ADT/SmallVector.h"
-@@ -239,7 +240,7 @@ public:
- /// Deleted blocks still have successor info, but their predecessor edges and
- /// Phi nodes may already be updated. Instructions in DeadBlocks should be
- /// deleted after this call.
-- void removeBlocks(const SmallPtrSetImpl<BasicBlock *> &DeadBlocks);
-+ void removeBlocks(const SmallSetVector<BasicBlock *, 8> &DeadBlocks);
-
- /// Get handle on MemorySSA.
- MemorySSA* getMemorySSA() const { return MSSA; }
-diff --git a/llvm/lib/Analysis/MemorySSAUpdater.cpp b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-index 6c817d20368..a6c7142a697 100644
---- a/llvm/lib/Analysis/MemorySSAUpdater.cpp
-+++ b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-@@ -1101,7 +1101,7 @@ void MemorySSAUpdater::removeMemoryAccess(MemoryAccess *MA) {
- }
-
- void MemorySSAUpdater::removeBlocks(
-- const SmallPtrSetImpl<BasicBlock *> &DeadBlocks) {
-+ const SmallSetVector<BasicBlock *, 8> &DeadBlocks) {
- // First delete all uses of BB in MemoryPhis.
- for (BasicBlock *BB : DeadBlocks) {
- Instruction *TI = BB->getTerminator();
-diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-index 2e5927f9a06..f464df26a02 100644
---- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-+++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-@@ -388,8 +388,8 @@ private:
- void deleteDeadLoopBlocks() {
- DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-- DeadLoopBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-+ DeadLoopBlocks.end());
- MSSAU->removeBlocks(DeadLoopBlocksSet);
- }
- for (auto *BB : DeadLoopBlocks) {
-diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-index 5a67178cef3..814cf814989 100644
---- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-+++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-@@ -1436,8 +1436,8 @@ deleteDeadClonedBlocks(Loop &L, ArrayRef<BasicBlock *> ExitBlocks,
-
- // Remove all MemorySSA in the dead blocks
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet(DeadBlocks.begin(),
-- DeadBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet(DeadBlocks.begin(),
-+ DeadBlocks.end());
- MSSAU->removeBlocks(DeadBlockSet);
- }
-
-@@ -1455,7 +1455,7 @@ static void deleteDeadBlocksFromLoop(Loop &L,
- MemorySSAUpdater *MSSAU) {
- // Find all the dead blocks tied to this loop, and remove them from their
- // successors.
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
-
- // Start with loop/exit blocks and get a transitive closure of reachable dead
- // blocks.
-diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
-index 499e611acb5..83dabcd7952 100644
---- a/llvm/lib/Transforms/Utils/Local.cpp
-+++ b/llvm/lib/Transforms/Utils/Local.cpp
-@@ -2211,7 +2211,7 @@ bool llvm::removeUnreachableBlocks(Function &F, LazyValueInfo *LVI,
- assert(Reachable.size() < F.size());
- NumRemoved += F.size()-Reachable.size();
-
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
- for (Function::iterator I = ++F.begin(), E = F.end(); I != E; ++I) {
- auto *BB = &*I;
- if (Reachable.count(BB))
-diff --git a/llvm/test/Analysis/MemorySSA/nondeterminism.ll b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-new file mode 100644
-index 00000000000..0bb3df30b58
---- /dev/null
-+++ b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-@@ -0,0 +1,122 @@
-+; RUN: opt -simplifycfg -enable-mssa-loop-dependency -S --preserve-ll-uselistorder %s | FileCheck %s
-+; REQUIRES: x86-registered-target
-+; CHECK-LABEL: @n
-+; CHECK: uselistorder i16 0, { 3, 2, 4, 1, 5, 0, 6 }
-+
-+; Note: test was added in an effort to ensure determinism when updating memoryssa. See PR42574.
-+; If the uselistorder check becomes no longer relevant, the test can be disabled or removed.
-+
-+%rec9 = type { i16, i32, i32 }
-+
-+@a = global [1 x [1 x %rec9]] zeroinitializer
-+
-+define i16 @n() {
-+ br label %..split_crit_edge
-+
-+..split_crit_edge: ; preds = %0
-+ br label %.split
-+
-+bb4.us4: ; preds = %bb2.split.us32, %bb6.us28
-+ %i.4.01.us5 = phi i16 [ %_tmp49.us30, %bb6.us28 ]
-+ br label %g.exit4.us21
-+
-+bb1.i.us14: ; preds = %bb4.us4
-+ br label %g.exit4.us21
-+
-+g.exit4.us21: ; preds = %bb1.i.us14, %g.exit4.critedge.us9
-+ %i.4.02.us22 = phi i16 [ %i.4.01.us5, %bb4.us4 ], [ %i.4.01.us5, %bb1.i.us14 ]
-+ br label %bb6.us28
-+
-+bb5.us26: ; preds = %g.exit4.us21
-+ br label %bb6.us28
-+
-+bb6.us28: ; preds = %bb5.us26, %g.exit4.us21
-+ %i.4.03.us29 = phi i16 [ %i.4.02.us22, %bb5.us26 ], [ %i.4.02.us22, %g.exit4.us21 ]
-+ %_tmp49.us30 = add nuw nsw i16 %i.4.03.us29, 1
-+ br label %bb4.us4
-+
-+bb4.us.us: ; preds = %bb2.split.us.us, %bb6.us.us
-+ %i.4.01.us.us = phi i16 [ %_tmp49.us.us, %bb6.us.us ]
-+ br label %bb1.i.us.us
-+
-+bb1.i.us.us: ; preds = %bb4.us.us
-+ br label %g.exit4.us.us
-+
-+g.exit4.us.us: ; preds = %bb1.i.us.us, %g.exit4.critedge.us.us
-+ %i.4.02.us.us = phi i16 [ %i.4.01.us.us, %bb1.i.us.us ]
-+ br label %bb5.us.us
-+
-+bb5.us.us: ; preds = %g.exit4.us.us
-+ br label %bb6.us.us
-+
-+bb6.us.us: ; preds = %bb5.us.us, %g.exit4.us.us
-+ %i.4.03.us.us = phi i16 [ %i.4.02.us.us, %bb5.us.us ]
-+ %_tmp49.us.us = add nuw nsw i16 %i.4.03.us.us, 1
-+ br label %bb4.us.us
-+
-+
-+.split: ; preds = %..split_crit_edge
-+ br label %bb2
-+
-+bb2: ; preds = %.split, %bb7
-+ %h.3.0 = phi i16 [ undef, %.split ], [ %_tmp53, %bb7 ]
-+ br label %bb2.bb2.split_crit_edge
-+
-+bb2.bb2.split_crit_edge: ; preds = %bb2
-+ br label %bb2.split
-+
-+bb2.split.us: ; preds = %bb2
-+ br label %bb4.us
-+
-+bb4.us: ; preds = %bb6.us, %bb2.split.us
-+ %i.4.01.us = phi i16 [ 0, %bb2.split.us ]
-+ br label %bb1.i.us
-+
-+g.exit4.critedge.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+bb1.i.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+g.exit4.us: ; preds = %bb1.i.us, %g.exit4.critedge.us
-+ %i.4.02.us = phi i16 [ %i.4.01.us, %g.exit4.critedge.us ], [ %i.4.01.us, %bb1.i.us ]
-+ br label %bb5.us
-+
-+bb5.us: ; preds = %g.exit4.us
-+ br label %bb7
-+
-+bb2.split: ; preds = %bb2.bb2.split_crit_edge
-+ br label %bb4
-+
-+bb4: ; preds = %bb2.split, %bb6
-+ %i.4.01 = phi i16 [ 0, %bb2.split ]
-+ %_tmp16 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 0
-+ %_tmp17 = load i16, i16* %_tmp16, align 1
-+ br label %g.exit4.critedge
-+
-+bb1.i: ; preds = %bb4
-+ br label %g.exit4
-+
-+g.exit4.critedge: ; preds = %bb4
-+ %_tmp28.c = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 1
-+ %_tmp29.c = load i32, i32* %_tmp28.c, align 1
-+ %_tmp30.c = trunc i32 %_tmp29.c to i16
-+ br label %g.exit4
-+
-+g.exit4: ; preds = %g.exit4.critedge, %bb1.i
-+ %i.4.02 = phi i16 [ %i.4.01, %g.exit4.critedge ], [ %i.4.01, %bb1.i ]
-+ %_tmp41 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.02, i32 2
-+ br label %bb6
-+
-+bb5: ; preds = %g.exit4
-+ br label %bb6
-+
-+bb6: ; preds = %bb5, %g.exit4
-+ %i.4.03 = phi i16 [ %i.4.02, %bb5 ], [ %i.4.02, %g.exit4 ]
-+ %_tmp49 = add nuw nsw i16 %i.4.03, 1
-+ br label %bb7
-+
-+bb7: ; preds = %bb7.us-lcssa.us, %bb7.us-lcssa
-+ %_tmp53 = add nsw i16 %h.3.0, 1
-+ br label %bb2
-+}
---
-2.24.0
-
diff --git a/projects/rust/build b/projects/rust/build
index 8b45e3f..a8f886b 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -54,7 +54,6 @@ cd /var/tmp/build/rustc-[% c('version') %]-src
# LLVM has reproducibility issues when optimizing bitcode, which we need to
# patch. See: #32053 for more details.
cd src/llvm-project
-patch -p1 < $rootdir/42574.patch
patch -p1 < $rootdir/43909.patch
cd ../../
diff --git a/projects/rust/config b/projects/rust/config
index 13aad3e..3ffcd58 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -5,8 +5,8 @@ version: '[% c("input_file_var/rust_version") %]'
# those values can be changed from the input_files section of other
# projects. See projects/lucetc/config and bug 32436.
input_file_var:
- rust_version: 1.34.2
- prev_version: 1.33.0
+ rust_version: 1.41.1
+ prev_version: 1.40.0
var:
prev_version: '[% c("input_file_var/prev_version") %]'
@@ -112,5 +112,4 @@ input_files:
gpg_keyring: rust.gpg
- filename: unwind.patch
enable: '[% c("var/windows-i686") %]'
- - filename: 42574.patch
- filename: 43909.patch
1
0
[tor-browser-build/master] Bug 34388: Update lucetc and wasi-sdk projects to latest ESR 78 code
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 7c462d7a3ba54e10f3df39f577072c4ac3f53a5c
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 9 08:39:04 2020 +0000
Bug 34388: Update lucetc and wasi-sdk projects to latest ESR 78 code
We "re-use" the same vendored tarball filename for now as lucetc has not
been used previously anyway.
---
projects/fenix-rust/config | 4 ++--
projects/lucetc/build | 4 +++-
projects/lucetc/config | 8 ++------
projects/rust/config | 4 ++--
projects/wasi-sysroot/build | 2 ++
projects/wasi-sysroot/config | 2 +-
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/projects/fenix-rust/config b/projects/fenix-rust/config
index 9ad9908..df0ba86 100644
--- a/projects/fenix-rust/config
+++ b/projects/fenix-rust/config
@@ -2,8 +2,8 @@
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
version: '[% c("input_file_var/rust_version") %]'
-# those values can be changed from the input_files section of other
-# projects. See projects/lucetc/config and bug 32436.
+# Those values can be changed from the input_files section of other
+# projects. See bug 32436.
input_file_var:
rust_version: 1.43.0
prev_version: 1.42.0
diff --git a/projects/lucetc/build b/projects/lucetc/build
index 0157cc9..3f835bd 100644
--- a/projects/lucetc/build
+++ b/projects/lucetc/build
@@ -13,11 +13,12 @@ tar -C /var/tmp/dist -xf [% c('input_files_by_name/wasi-sysroot') %]
export PATH="/var/tmp/dist/cmake/bin:/var/tmp/dist/clang/bin:/var/tmp/dist/binutils/bin:/var/tmp/dist/rust/bin:$PATH"
export CC=$distdir/clang/bin/clang
export CFLAGS="-L$distdir/clang/lib"
-export CXXFLAGS=$CFLAGS
export CXX=$distdir/clang/bin/clang++
+export CXXFLAGS=$CFLAGS
export AR=$distdir/clang/bin/llvm-ar
export RUSTFLAGS="-C linker=$CXX -C link-arg=$CXXFLAGS"
export LUCET_PREFIX=$distdir/[% project %]
+# XXX: Why do we need that when Mozilla doesn't? See: taskcluster/scripts/misc/build-lucetc.sh
export WASI_SYSROOT=$distdir/wasi-sysroot
mkdir -p /var/tmp/build
@@ -39,6 +40,7 @@ directory = "/var/tmp/build/lucetc/vendor"
EOF
make -j[% c("buildconf/num_procs") %] build
+# XXX: Should not be needed, just the lucetc binary, see: taskcluster/scripts/misc/build-lucetc.sh
make install
cd $distdir
diff --git a/projects/lucetc/config b/projects/lucetc/config
index 647d83f..f60629e 100644
--- a/projects/lucetc/config
+++ b/projects/lucetc/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
version: '[% c("abbrev") %]'
-git_hash: 5c22392b5b1aaa60e915c75e92b57391e1e61e6d
+git_hash: a0a1ce981638109f1f76cd1eecf17a0436a20055
git_url: https://github.com/PLSysSec/lucet_sandbox_compiler/
git_submodule: 1
@@ -23,13 +23,9 @@ input_files:
project: binutils
- name: rust
project: rust
- input_file_var:
- # lucetc needs Rust >= 1.36.0
- rust_version: 1.36.0
- prev_version: 1.35.0
- name: wasi-sysroot
project: wasi-sysroot
# `cargo vendor vendor` in the `lucetc-sandbox-compiler` directory has vendored
# the sources.
- URL: https://people.torproject.org/~gk/mirrors/sources/lucetc-vendor.tar.bz2
- sha256sum: 5a7802834d0d4b9210f323cf69cc305946f22dba4ddaf2c4c0eb6d3621da2c2a
+ sha256sum: 12ba97fca12177e7ed5b5409fcfdbd31dc7db2e82282768d99dee5bcb1b1246a
diff --git a/projects/rust/config b/projects/rust/config
index 3ffcd58..4144b17 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -2,8 +2,8 @@
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
version: '[% c("input_file_var/rust_version") %]'
-# those values can be changed from the input_files section of other
-# projects. See projects/lucetc/config and bug 32436.
+# Those values can be changed from the input_files section of other
+# projects. See bug 32436.
input_file_var:
rust_version: 1.41.1
prev_version: 1.40.0
diff --git a/projects/wasi-sysroot/build b/projects/wasi-sysroot/build
index 5ea885c..6cdcf2f 100644
--- a/projects/wasi-sysroot/build
+++ b/projects/wasi-sysroot/build
@@ -23,6 +23,8 @@ cd $builddir
# hard-code the version for now.
patch -p1 < $rootdir/no-git.patch
+# XXX: We don't want to use the clang 9.0 wasi-sdk would use, see:
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1605708
make -j[% c("buildconf/num_procs") %] PREFIX=$distdir/[% project %]
cd $distdir
diff --git a/projects/wasi-sysroot/config b/projects/wasi-sysroot/config
index 512769b..8b3ae15 100644
--- a/projects/wasi-sysroot/config
+++ b/projects/wasi-sysroot/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %]'
version: '[% c("abbrev") %]'
-git_hash: 87b7a019472770f08d49cf3b558867dc76ea74eb
+git_hash: 5225b05436ce57f01fe649f411f3ff701246628b
git_url: https://github.com/CraneStation/wasi-sdk
git_submodule: 1
1
0
[tor-browser-build/master] Bug 34391: Remove unused --enable-signmar option
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 83772c1776809b853e686773c18ccb76a7edfd49
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 21:42:28 2020 +0000
Bug 34391: Remove unused --enable-signmar option
The --enable-signmar option is gone with
https://bugzilla.mozilla.org/show_bug.cgi?id=1562952. The signmar tool
is always built now.
---
projects/firefox/mozconfig-linux-i686 | 3 +--
projects/firefox/mozconfig-linux-x86_64 | 1 -
projects/firefox/mozconfig-osx-x86_64 | 3 +--
projects/firefox/mozconfig-windows-i686 | 1 -
projects/firefox/mozconfig-windows-x86_64 | 1 -
5 files changed, 2 insertions(+), 7 deletions(-)
diff --git a/projects/firefox/mozconfig-linux-i686 b/projects/firefox/mozconfig-linux-i686
index 87b64d7..3ea241f 100755
--- a/projects/firefox/mozconfig-linux-i686
+++ b/projects/firefox/mozconfig-linux-i686
@@ -23,7 +23,6 @@ ac_add_options --enable-official-branding
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-tor-browser-update
-ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-tests
@@ -38,4 +37,4 @@ ac_add_options --enable-proxy-bypass-protection
ac_add_options --disable-debug-symbols
# Disable telemetry
-ac_add_options MOZ_TELEMETRY_REPORTING=
\ No newline at end of file
+ac_add_options MOZ_TELEMETRY_REPORTING=
diff --git a/projects/firefox/mozconfig-linux-x86_64 b/projects/firefox/mozconfig-linux-x86_64
index 59517cd..e4d2b99 100755
--- a/projects/firefox/mozconfig-linux-x86_64
+++ b/projects/firefox/mozconfig-linux-x86_64
@@ -21,7 +21,6 @@ ac_add_options --enable-official-branding
ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-tor-browser-update
-ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-strip
diff --git a/projects/firefox/mozconfig-osx-x86_64 b/projects/firefox/mozconfig-osx-x86_64
index 8fa7885..8f088a5 100644
--- a/projects/firefox/mozconfig-osx-x86_64
+++ b/projects/firefox/mozconfig-osx-x86_64
@@ -37,7 +37,6 @@ ac_add_options --disable-debug
ac_add_options --enable-tor-browser-data-outside-app-dir
ac_add_options --enable-tor-browser-update
-ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-crashreporter
@@ -48,4 +47,4 @@ ac_add_options --disable-eme
ac_add_options --enable-proxy-bypass-protection
# Disable telemetry
-ac_add_options MOZ_TELEMETRY_REPORTING=
\ No newline at end of file
+ac_add_options MOZ_TELEMETRY_REPORTING=
diff --git a/projects/firefox/mozconfig-windows-i686 b/projects/firefox/mozconfig-windows-i686
index 4fd9958..8cb2850 100644
--- a/projects/firefox/mozconfig-windows-i686
+++ b/projects/firefox/mozconfig-windows-i686
@@ -27,7 +27,6 @@ ac_add_options --enable-strip
ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
-ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-bits-download
diff --git a/projects/firefox/mozconfig-windows-x86_64 b/projects/firefox/mozconfig-windows-x86_64
index ae5cf67..d35dc18 100644
--- a/projects/firefox/mozconfig-windows-x86_64
+++ b/projects/firefox/mozconfig-windows-x86_64
@@ -27,7 +27,6 @@ ac_add_options --enable-strip
ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
-ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
ac_add_options --disable-bits-download
1
0
[tor-browser-build/master] Bug 34390: Don't copy DBM libraries anymore
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 4f130777523edbe01f2f072910be97bea73ded12
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 21:44:27 2020 +0000
Bug 34390: Don't copy DBM libraries anymore
DBM is not built by default anymore since
https://bugzilla.mozilla.org/show_bug.cgi?id=1594933 landed.
---
projects/firefox/build | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 16984f3..9461034 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -199,10 +199,10 @@ cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
cp -p obj-*/dist/bin/pk12util $MARTOOLS/
cp -p obj-*/dist/bin/shlibsign $MARTOOLS/
[% IF c("var/linux") %]
- NSS_LIBS="libfreeblpriv3.so libmozsqlite3.so libnss3.so libnssckbi.so libnssdbm3.so libnssutil3.so libsmime3.so libsoftokn3.so libssl3.so"
+ NSS_LIBS="libfreeblpriv3.so libmozsqlite3.so libnss3.so libnssckbi.so libnssutil3.so libsmime3.so libsoftokn3.so libssl3.so"
NSPR_LIBS="libnspr4.so libplc4.so libplds4.so"
[% ELSE %]
- NSS_LIBS="libfreebl3.dylib libmozglue.dylib libnss3.dylib libnssckbi.dylib libnssdbm3.dylib libsoftokn3.dylib"
+ NSS_LIBS="libfreebl3.dylib libmozglue.dylib libnss3.dylib libnssckbi.dylib libsoftokn3.dylib"
# No NSPR_LIBS for macOS
NSPR_LIBS=""
[% END %]
@@ -216,7 +216,7 @@ cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
cp -p obj-*/dist/bin/modutil.exe $MARTOOLS/
cp -p obj-*/dist/bin/pk12util.exe $MARTOOLS/
cp -p obj-*/dist/bin/shlibsign.exe $MARTOOLS/
- NSS_LIBS="freebl3.dll mozglue.dll nss3.dll nssckbi.dll nssdbm3.dll softokn3.dll"
+ NSS_LIBS="freebl3.dll mozglue.dll nss3.dll nssckbi.dll softokn3.dll"
for LIB in $NSS_LIBS; do
cp -p obj-*/dist/bin/$LIB $MARTOOLS/
done
1
0
[tor-browser-build/master] Bug 32389: Enable WASM sandbox for Linux builds
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit b7d40046c0609e77cd9eb088f5e05775edd1c4a2
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 16 19:56:35 2020 +0000
Bug 32389: Enable WASM sandbox for Linux builds
---
projects/firefox/build | 14 ++++++++++++++
projects/firefox/config | 6 ++++++
2 files changed, 20 insertions(+)
diff --git a/projects/firefox/build b/projects/firefox/build
index 9461034..294e35a 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -39,6 +39,20 @@ export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
[% END -%]
[% END -%]
+[% IF c("var/rlbox") -%]
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/wasi-sysroot') %]
+ # XXX: We need the libclang_rt.builtins-wasm32.a in our clang lib directory.
+ # Copy it over.
+ # https://searchfox.org/mozilla-central/source/build/build-clang/build-clang.…,
+ # include it directly in our clang
+ mkdir /var/tmp/dist/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
+ cp /var/tmp/dist/wasi-sysroot/lib/clang/9.0.0/lib/wasi/libclang_rt.builtins-wasm32.a /var/tmp/dist/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/lucetc') %]
+ export PATH="/var/tmp/dist/lucetc/bin:$PATH"
+ export WASM_SANDBOXED_LIBRARIES=graphite,ogg
+ export WASI_SYSROOT=/var/tmp/dist/wasi-sysroot/share/wasi-sysroot
+[% END -%]
+
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
[% IF c("var/osx") %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 7c700a8..0ecce9d 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -135,6 +135,12 @@ input_files:
name: rust
- project: cbindgen
name: cbindgen
+ - project: wasi-sysroot
+ name: wasi-sysroot
+ enable: '[% c("var/rlbox") %]'
+ - project: lucetc
+ name: lucetc
+ enable: '[% c("var/rlbox") %]'
- project: node
name: node
- project: nasm
1
0
[tor-browser-build/master] Bug 40005: Adapt Node project for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 3410482e8620a030c2c8a998555b7b4b92118d76
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jun 14 11:15:00 2020 +0000
Bug 40005: Adapt Node project for Firefox 78 ESR
We remove our fenix-node project, too, as there is no difference
between it and the node project anymore. It seems both ESR and non-ESR
are using the same version for the time being.
---
projects/fenix-node/build | 24 ------------------------
projects/fenix-node/config | 18 ------------------
projects/geckoview/build | 2 +-
projects/geckoview/config | 6 +++---
projects/node/build | 4 ++--
projects/node/config | 5 +++--
6 files changed, 9 insertions(+), 50 deletions(-)
diff --git a/projects/fenix-node/build b/projects/fenix-node/build
deleted file mode 100644
index 8cc8ea5..0000000
--- a/projects/fenix-node/build
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-[% c("var/set_default_env") -%]
-[% IF c("var/linux") %]
- # We need a link to our GCC, otherwise the system cc gets used which points to
- # /usr/bin/gcc.
- [% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
- hardened_gcc => 0 }) %]
- ln -s gcc /var/tmp/dist/gcc/bin/cc
- tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
- export PATH="/var/tmp/dist/binutils/bin:$PATH"
-[% END -%]
-distdir=/var/tmp/dist/[% project %]
-tar -xf [% c('input_files_by_name/node') %]
-cd node-[% c('version') %]
-
-./configure --prefix=$distdir
-make -j[% c("buildconf/num_procs") %]
-make install
-
-cd /var/tmp/dist
-[% c('tar', {
- tar_src => [ project ],
- tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
- }) %]
diff --git a/projects/fenix-node/config b/projects/fenix-node/config
deleted file mode 100644
index b3534f4..0000000
--- a/projects/fenix-node/config
+++ /dev/null
@@ -1,18 +0,0 @@
-# vim: filetype=yaml sw=2
-version: v10.21.0
-filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-var:
- container:
- use_container: 1
-
-input_files:
- - project: container-image
- - project: binutils
- name: binutils
- enable: '[% c("var/linux") %]'
- - project: '[% c("var/compiler") %]'
- name: '[% c("var/compiler") %]'
- enable: '[% c("var/linux") %]'
- - URL: 'https://nodejs.org/download/release/[% c("version") %]/node-[% c("version") %].tar.xz'
- sha256sum: 26b01fa28338cacaa8a66d7963ab2514e81678c268ab52ec55dcf937aadcb73b
- name: node
diff --git a/projects/geckoview/build b/projects/geckoview/build
index b12c096..9eee8c4 100644
--- a/projects/geckoview/build
+++ b/projects/geckoview/build
@@ -20,7 +20,7 @@ tar -C /var/tmp/dist -xf [% c('input_files_by_name/node') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
-export PATH="/var/tmp/dist/fenix-rust/bin:/var/tmp/dist/fenix-cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/python/bin:/var/tmp/dist/fenix-node/bin:/var/tmp/dist/fenix-clang/bin:/var/tmp/dist/binutils/bin:$PATH"
+export PATH="/var/tmp/dist/fenix-rust/bin:/var/tmp/dist/fenix-cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/python/bin:/var/tmp/dist/node/bin:/var/tmp/dist/fenix-clang/bin:/var/tmp/dist/binutils/bin:$PATH"
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
diff --git a/projects/geckoview/config b/projects/geckoview/config
index e82139a..c046660 100644
--- a/projects/geckoview/config
+++ b/projects/geckoview/config
@@ -47,7 +47,7 @@ steps:
tar -C $distdir -xf [% c('input_files_by_name/node') %]
tar -C $distdir -xf [% c('input_files_by_name/python') %]
- export PATH="/var/tmp/dist/fenix-node/bin:/var/tmp/dist/python/bin:$PATH"
+ export PATH="/var/tmp/dist/node/bin:/var/tmp/dist/python/bin:$PATH"
tar -C $builddir -xf [% c('input_files_by_name/geckoview_armv7') %]
tar -C $builddir -xf [% c('input_files_by_name/geckoview_aarch64') %]
@@ -97,7 +97,7 @@ steps:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
pkg_type: build
- - project: fenix-node
+ - project: node
name: node
pkg_type: build
- project: python
@@ -147,7 +147,7 @@ input_files:
name: rust
- project: fenix-cbindgen
name: cbindgen
- - project: fenix-node
+ - project: node
name: node
- project: nasm
name: nasm
diff --git a/projects/node/build b/projects/node/build
index 0e6ca04..8cc8ea5 100644
--- a/projects/node/build
+++ b/projects/node/build
@@ -10,8 +10,8 @@
export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
distdir=/var/tmp/dist/[% project %]
-tar -xf [% project %]-[% c('version') %].tar.xz
-cd [% project %]-[% c('version') %]
+tar -xf [% c('input_files_by_name/node') %]
+cd node-[% c('version') %]
./configure --prefix=$distdir
make -j[% c("buildconf/num_procs") %]
diff --git a/projects/node/config b/projects/node/config
index e023380..b3534f4 100644
--- a/projects/node/config
+++ b/projects/node/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: v10.16.0
+version: v10.21.0
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
container:
@@ -14,4 +14,5 @@ input_files:
name: '[% c("var/compiler") %]'
enable: '[% c("var/linux") %]'
- URL: 'https://nodejs.org/download/release/[% c("version") %]/node-[% c("version") %].tar.xz'
- sha256sum: 18e37f891d10ea7fbc8f6410c444c2b1d9cc3cbbb1d35aa9c41f761816956608
+ sha256sum: 26b01fa28338cacaa8a66d7963ab2514e81678c268ab52ec55dcf937aadcb73b
+ name: node
1
0
[tor-browser-build/master] Bug 40018: Add libtapi project for cctools
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 58d6189af6914b00264bf556ef61b8c53ff5f2f1
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jul 9 15:09:07 2020 +0000
Bug 40018: Add libtapi project for cctools
---
projects/libtapi/build | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
projects/libtapi/config | 20 ++++++++++++++++++++
2 files changed, 68 insertions(+)
diff --git a/projects/libtapi/build b/projects/libtapi/build
new file mode 100644
index 0000000..a0d9c3e
--- /dev/null
+++ b/projects/libtapi/build
@@ -0,0 +1,48 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+builddir=/var/tmp/build/[% project %]-[% c('version') %]
+distdir=/var/tmp/dist/[% project %]
+mkdir -p /var/tmp/dist
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
+
+# We don't export the path to clang here to follow Mozilla's build script at
+# taskcluster/scripts/misc/build-cctools-port.sh more closely.
+export PATH="/var/tmp/dist/cmake/bin:/var/tmp/dist/ninja:$PATH"
+export CLANG_DIR=/var/tmp/dist/clang
+mkdir -p /var/tmp/build
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+export CC=$CLANG_DIR/bin/clang
+export CXX=$CLANG_DIR/bin/clang++
+# We also need this LD_LIBRARY_PATH at build time, since tapi builds bits of
+# clang build tools, and then executes those tools.
+export LD_LIBRARY_PATH=$CLANG_DIR/lib
+
+cd $builddir
+mkdir build
+cd build
+# Values taken from build.sh
+TAPI_REPOSITORY=tapi-1000.10.8
+TAPI_VERSION=10.0.0
+
+INCLUDE_FIX="-I $builddir/src/llvm/projects/clang/include -I $PWD/projects/clang/include"
+
+cmake $builddir/src/llvm \
+ -GNinja \
+ -DCMAKE_CXX_FLAGS="$INCLUDE_FIX" \
+ -DLLVM_INCLUDE_TESTS=OFF \
+ -DCMAKE_BUILD_TYPE=RELEASE \
+ -DCMAKE_INSTALL_PREFIX=$distdir \
+ -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
+ -DTAPI_REPOSITORY_STRING=$TAPI_REPOSITORY \
+ -DTAPI_FULL_VERSION=$TAPI_VERSION
+
+ninja clangBasic
+ninja libtapi install-libtapi install-tapi-headers
+
+cd /var/tmp/dist
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/libtapi/config b/projects/libtapi/config
new file mode 100644
index 0000000..6c4f5d0
--- /dev/null
+++ b/projects/libtapi/config
@@ -0,0 +1,20 @@
+# vim: filetype=yaml sw=2
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: '[% c("abbrev") %]'
+# This can be found in
+# taskcluster/ci/fetch/toolchains.yml
+git_hash: 3efb201881e7a76a21e0554906cf306432539cef
+git_url: https://github.com/tpoechtrager/apple-libtapi
+
+var:
+ container:
+ use_container: 1
+
+input_files:
+ - project: container-image
+ - name: clang
+ project: clang
+ - name: cmake
+ project: cmake
+ - name: ninja
+ project: ninja
1
0
[tor-browser-build/master] Bug 34230: Update Windows toolchain for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit e26758540bb98e8dc3f9b94e06acd0b75f1a4aa8
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Jun 30 07:09:10 2020 +0000
Bug 34230: Update Windows toolchain for Firefox 78 ESR
The sort patch is not needed anymore as the reproducibility issue
got fixed with commit 1405ac457b8b583215cf92d73fbe4479f7c86029 in
libcxx.
--enable-strip is gone for Windows, see:
https://hg.mozilla.org/mozilla-central/rev/943fe6210744.
We rebase the libunwind related patch for 32bit Windows for
compatibility with Rust 1.41.1, too.
---
projects/firefox/mozconfig-windows-i686 | 1 -
projects/firefox/mozconfig-windows-x86_64 | 1 -
projects/firefox/nsis-uninstall.patch | 18 +++----
projects/llvm-mingw/config | 2 +-
projects/mingw-w64-clang/build | 1 -
projects/mingw-w64-clang/config | 5 +-
projects/mingw-w64-clang/sort.patch | 22 --------
projects/mingw-w64/config | 6 +--
projects/rust/unwind.patch | 85 ++++++++++++++++---------------
9 files changed, 56 insertions(+), 85 deletions(-)
diff --git a/projects/firefox/mozconfig-windows-i686 b/projects/firefox/mozconfig-windows-i686
index 8cb2850..a2364e9 100644
--- a/projects/firefox/mozconfig-windows-i686
+++ b/projects/firefox/mozconfig-windows-i686
@@ -23,7 +23,6 @@ export MOZILLA_OFFICIAL=1
ac_add_options --disable-debug
ac_add_options --enable-optimize
-ac_add_options --enable-strip
ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
diff --git a/projects/firefox/mozconfig-windows-x86_64 b/projects/firefox/mozconfig-windows-x86_64
index d35dc18..188b3c5 100644
--- a/projects/firefox/mozconfig-windows-x86_64
+++ b/projects/firefox/mozconfig-windows-x86_64
@@ -23,7 +23,6 @@ export MOZILLA_OFFICIAL=1
ac_add_options --disable-debug
ac_add_options --enable-optimize
-ac_add_options --enable-strip
ac_add_options --enable-official-branding
ac_add_options --enable-tor-browser-update
diff --git a/projects/firefox/nsis-uninstall.patch b/projects/firefox/nsis-uninstall.patch
index 60e4e3d..93d56aa 100644
--- a/projects/firefox/nsis-uninstall.patch
+++ b/projects/firefox/nsis-uninstall.patch
@@ -1,13 +1,9 @@
-From e338a77c64c0afb72e857c7daa63346d35ad3891 Mon Sep 17 00:00:00 2001
+From 67c1d7d66d99494102832e12059a84fa439c88e0 Mon Sep 17 00:00:00 2001
From: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Tue, 12 Jun 2018 21:58:24 -0400
-Subject: [PATCH 1/1] Bug 26205: Don't build the uninstaller for Windows during
+Subject: [PATCH] Bug 26205: Don't build the uninstaller for Windows during
Firefox compilation
----
- browser/Makefile.in | 4 ----
- browser/installer/Makefile.in | 4 ----
- 2 files changed, 8 deletions(-)
diff --git a/browser/Makefile.in b/browser/Makefile.in
index 2eb9e708f68e..0c9442183942 100644
@@ -25,7 +21,7 @@ index 2eb9e708f68e..0c9442183942 100644
$(MAKE) -C installer/windows maintenanceservice_installer
endif
diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in
-index 1bf11252ee06..dee6d5434106 100644
+index 0325f0ffab9a..a5a9488623a3 100644
--- a/browser/installer/Makefile.in
+++ b/browser/installer/Makefile.in
@@ -98,10 +98,6 @@ ifdef NECKO_WIFI
@@ -36,9 +32,9 @@ index 1bf11252ee06..dee6d5434106 100644
-DEFINES += -DHAVE_MAKENSISU=1
-endif
-
- ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
- MOZ_PKG_MAC_DSSTORE=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/dsstore
- MOZ_PKG_MAC_BACKGROUND=$(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/background.png
+ ifdef MOZ_DEFAULT_BROWSER_AGENT
+ DEFINES += -DMOZ_DEFAULT_BROWSER_AGENT=1
+ endif
--
-2.18.0.rc2
+2.27.0
diff --git a/projects/llvm-mingw/config b/projects/llvm-mingw/config
index b1ebf42..eaaed6e 100644
--- a/projects/llvm-mingw/config
+++ b/projects/llvm-mingw/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
version: '[% c("abbrev") %]'
-git_hash: c3a16814bd26aa6702e1e5b482a3d9044bb0f725
+git_hash: 9f8e5cebd6dbbb7546e8917e6c59284699a48d26
git_url: https://github.com/mstorsjo/llvm-mingw.git
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
diff --git a/projects/mingw-w64-clang/build b/projects/mingw-w64-clang/build
index 302975d..ecb0e2c 100644
--- a/projects/mingw-w64-clang/build
+++ b/projects/mingw-w64-clang/build
@@ -172,7 +172,6 @@ make -j[% c("buildconf/num_procs") %] VERBOSE=1
# libcxx
cd $builddir/libcxx
-patch -p1 < $rootdir/sort.patch
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=$distdir/[% c("arch") %]-w64-mingw32 \
diff --git a/projects/mingw-w64-clang/config b/projects/mingw-w64-clang/config
index 11480b9..9ae0e61 100644
--- a/projects/mingw-w64-clang/config
+++ b/projects/mingw-w64-clang/config
@@ -1,9 +1,9 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: 0a1d495478d8ed1a94fc77b9dbb428b7e0372588
+git_hash: 1b373beec6d07478ffba33726bb3bb21f32e4411
version: '[% c("abbrev") %]'
-llvm_version: 8.0.1
+llvm_version: 9.0.1
gpg_keyring: clang.gpg
sig_ext: sig
@@ -36,4 +36,3 @@ input_files:
- project: llvm-mingw
name: llvm-mingw
- filename: mingw-winrt.patch
- - filename: sort.patch
diff --git a/projects/mingw-w64-clang/sort.patch b/projects/mingw-w64-clang/sort.patch
deleted file mode 100644
index e9143b0..0000000
--- a/projects/mingw-w64-clang/sort.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9eeb3b9ea13b25591c9081a5f05a1904d367d523 Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Wed, 11 Sep 2019 13:25:54 +0000
-Subject: [PATCH] sorted
-
-
-diff --git a/utils/merge_archives.py b/utils/merge_archives.py
-index 58d92f0e2..597ca2471 100755
---- a/utils/merge_archives.py
-+++ b/utils/merge_archives.py
-@@ -124,7 +124,7 @@ def main():
- execute_command_verbose([ar_exe, 'x', arc], cwd=temp_directory_root,
- verbose=args.verbose)
-
-- files = glob.glob(os.path.join(temp_directory_root, '*.o*'))
-+ files = sorted(glob.glob(os.path.join(temp_directory_root, '*.o*')))
- if not files:
- print_and_exit('Failed to glob for %s' % temp_directory_root)
- cmd = [ar_exe, 'qcs', args.output] + files
---
-2.23.0
-
diff --git a/projects/mingw-w64/config b/projects/mingw-w64/config
index 1ccbcdf..b0ace13 100644
--- a/projects/mingw-w64/config
+++ b/projects/mingw-w64/config
@@ -1,12 +1,12 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
git_url: https://git.code.sf.net/p/mingw-w64/mingw-w64
-git_hash: 0a1d495478d8ed1a94fc77b9dbb428b7e0372588
+git_hash: 1b373beec6d07478ffba33726bb3bb21f32e4411
version: '[% c("abbrev") %]'
var:
container:
use_container: 1
- gcc_version: 9.2.0
+ gcc_version: 9.3.0
deps:
- automake
- build-essential
@@ -30,6 +30,6 @@ targets:
input_files:
- project: container-image
- URL: 'https://ftp.gnu.org/gnu/gcc/gcc-[% c("var/gcc_version") %]/gcc-[% c("var/gcc_version") %].tar.xz'
- sha256sum: ea6ef08f121239da5695f76c9b33637a118dcf63e24164422231917fa61fb206
+ sha256sum: 71e197867611f6054aa1119b13a0c0abac12834765fe2d81f35ac57f84f742d1
- name: binutils
project: binutils
diff --git a/projects/rust/unwind.patch b/projects/rust/unwind.patch
index 7b22dcb..c25d9d2 100644
--- a/projects/rust/unwind.patch
+++ b/projects/rust/unwind.patch
@@ -1,4 +1,4 @@
-From b3bea7008ece7a5bdf9b5a5dcc95e82febad1854 Mon Sep 17 00:00:00 2001
+From 212ea02a0743a3bd4fcab1288682d3d780da960b Mon Sep 17 00:00:00 2001
From: Bjorn Neergaard <bjorn(a)neersighted.com>
Date: Sat, 9 Feb 2019 19:39:23 +0000
Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
@@ -32,61 +32,58 @@ rethinking of how iOS is special-cased above, to avoid further
duplication. Input on how to best structure this file is requested.
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index 249a183189..df08d6eb0c 100644
+index 831053bc0f7..13ec5da3e3d 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
-@@ -162,7 +162,12 @@ pub fn std_cargo(builder: &Builder<'_>,
- .arg("--features")
- .arg("compiler-builtins-mem");
- } else {
-- let features = builder.std_features();
-+ let mut features = builder.std_features();
-+
+@@ -208,6 +208,11 @@ pub fn std_cargo(builder: &Builder<'_>,
+ let mut features = builder.std_features();
+ features.push_str(&compiler_builtins_c_feature);
+
+ // FIXME: Temporary detection of SJLJ MinGW compilers.
+ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" {
+ features.push_str(" sjlj_eh");
+ }
-
++
if compiler.stage != 0 && builder.config.sanitizers {
// This variable is used by the sanitizer runtime crates, e.g.
+ // rustc_lsan, to build the sanitizer runtime from C code
diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
-index 7d60a17042..d876d0b89a 100644
+index a22e162bbff..e1c8f164916 100644
--- a/src/libstd/Cargo.toml
+++ b/src/libstd/Cargo.toml
-@@ -71,3 +71,4 @@ wasm-bindgen-threads = []
- # https://github.com/rust-lang-nursery/stdsimd/blob/master/crates/std_detect/…
+@@ -78,6 +78,7 @@ panic_immediate_abort = ["core/panic_immediate_abort"]
+ # https://github.com/rust-lang/stdarch/blob/master/crates/std_detect/Cargo.to…
std_detect_file_io = []
std_detect_dlsym_getauxval = []
+sjlj_eh = ["unwind/sjlj_eh"]
+
+ [package.metadata.fortanix-sgx]
+ # Maximum possible number of threads when testing
+diff --git a/src/libtest/Cargo.toml b/src/libtest/Cargo.toml
+index 170fbb984cf..b1b0be71067 100644
+--- a/src/libtest/Cargo.toml
++++ b/src/libtest/Cargo.toml
+@@ -29,3 +29,4 @@ llvm-libunwind = ["std/llvm-libunwind"]
+ panic-unwind = ["std/panic_unwind"]
+ panic_immediate_abort = ["std/panic_immediate_abort"]
+ profiler = ["std/profiler"]
++sjlj_eh = ["std/sjlj_eh"]
diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
-index 2378b0a315..0b5979ed62 100644
+index 77bcfffd506..9d9fc5fbff5 100644
--- a/src/libunwind/Cargo.toml
+++ b/src/libunwind/Cargo.toml
-@@ -16,3 +16,6 @@ doc = false
- core = { path = "../libcore" }
- libc = { version = "0.2.43", features = ['rustc-dep-of-std'], default-features = false }
- compiler_builtins = "0.1.0"
-+
-+[features]
+@@ -26,3 +26,4 @@ cc = { version = "1.0.1" }
+
+ [features]
+ llvm-libunwind = []
+sjlj_eh = []
diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
-index 339b554ed6..ec2f93ed60 100644
+index 0b39503c0d0..ec8681c2985 100644
--- a/src/libunwind/libunwind.rs
+++ b/src/libunwind/libunwind.rs
-@@ -1,10 +1,5 @@
- #![allow(nonstandard_style)]
-
--macro_rules! cfg_if {
-- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) =>
-- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* )
--}
--
- use libc::{c_int, c_void, uintptr_t};
-
- #[repr(C)]
-@@ -73,8 +68,8 @@ pub enum _Unwind_Context {}
- pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
- exception: *mut _Unwind_Exception);
+@@ -74,8 +74,8 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reaso
+ any(target_os = "fuchsia", target_os = "linux")),
+ link(name = "unwind", kind = "static"))]
extern "C" {
- #[unwind(allowed)]
- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
@@ -95,15 +92,15 @@ index 339b554ed6..ec2f93ed60 100644
pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
-@@ -206,26 +201,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
- pc
- }
- }
-+} // cfg_if!
+@@ -216,32 +216,50 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
+ } // cfg_if!
+ cfg_if::cfg_if! {
-if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
- // Not 32-bit iOS
-+cfg_if! {
+- #[cfg_attr(all(feature = "llvm-libunwind",
+- any(target_os = "fuchsia", target_os = "linux")),
+- link(name = "unwind", kind = "static"))]
+if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
extern "C" {
@@ -132,6 +129,9 @@ index 339b554ed6..ec2f93ed60 100644
}
-} else {
- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
+- #[cfg_attr(all(feature = "llvm-libunwind",
+- any(target_os = "fuchsia", target_os = "linux")),
+- link(name = "unwind", kind = "static"))]
- extern "C" {
- #[unwind(allowed)]
- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
@@ -157,6 +157,7 @@ index 339b554ed6..ec2f93ed60 100644
+ }
}
} // cfg_if!
+
--
-2.23.0.rc0
+2.27.0
1
0
17 Jul '20
commit bdd3275ec4291c66a7f28f2d8c772a59180109e7
Author: Georg Koppen <gk(a)torproject.org>
Date: Sun Jul 5 06:37:59 2020 +0000
Bug 40015: Use only 64bit fxc2
We use the somewhat surprising breakage due to
https://bugzilla.mozilla.org/show_bug.cgi?id=1619504 to clean up our
fxc2 build and usage.
Previously, we built both the 64bit and 32bit version of fxc2 and were
running them in a 64bit and 32bit Wine environment, respectively.
However, that's not needed because a) Wine is capable of running both
64bit and 32bit binaries and b) fxc2 is only used at build time to
generate shader files. As we are building both Windows flavors in a
64bit container we should easily be able to live with just a 64bit
variant.
We need, nevertheless, take care that we still bundle the correct
d3dcompiler_47.dll library for the respective architecture.
---
projects/firefox/build | 12 +++++-------
projects/firefox/config | 7 ++-----
projects/fxc2/build | 13 +++----------
projects/fxc2/config | 2 +-
rbm.conf | 2 ++
5 files changed, 13 insertions(+), 23 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 294e35a..79278c8 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -9,12 +9,6 @@ mkdir -p [% dest_dir _ '/' _ c('filename') %]
# Setting up fxc2
tar -C /var/tmp/dist -xf [% c('input_files_by_name/fxc2') %]
export PATH="/var/tmp/dist/fxc2/bin:$PATH"
- # fxc2 requires Wine.
- export WINEARCH=[% IF c("var/windows-x86_64") %]win64[% ELSE %]win32[% END %]
- export HOME=/var/tmp/home
- mkdir -p $HOME
- WINEROOT=$HOME/.wine/drive_c
- wine wineboot -i
# Setting up stack protector support
tar -C /var/tmp/dist -xf [% c('input_files_by_name/mingw-w64') %]
cp /var/tmp/dist/mingw-w64/gcclibs/{libssp.a,libssp_nonshared.a} /var/tmp/dist/mingw-w64-clang/[% c("arch") %]-w64-mingw32/lib/
@@ -192,7 +186,11 @@ rm -f js/src/configure
[% IF c("var/windows") %]
cp -a obj-*/dist/firefox/* $distdir/Browser/
- cp -a /var/tmp/dist/fxc2/bin/d3dcompiler_47.dll $distdir/Browser
+ [% IF c("var/windows-i686") %]
+ cp -a /var/tmp/dist/fxc2/bin/d3dcompiler_47_32.dll $distdir/Browser/d3dcompiler_47.dll
+ [% ELSE %]
+ cp -a /var/tmp/dist/fxc2/bin/d3dcompiler_47.dll $distdir/Browser
+ [% END %]
[% END %]
# Make MAR-based update tools available for use during the bundle phase.
diff --git a/projects/firefox/config b/projects/firefox/config
index 0ecce9d..2cc734b 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -102,11 +102,6 @@ targets:
var:
arch_deps:
- wine
- pre_pkginst: |
- [% IF c("var/windows-i686") -%]
- # We need this to install wine32
- dpkg --add-architecture i386
- [% END -%]
compiler: mingw-w64-clang
windows-i686:
@@ -152,6 +147,8 @@ input_files:
- project: fxc2
name: fxc2
enable: '[% c("var/windows") %]'
+ target_prepend:
+ - torbrowser-windows-x86_64
- name: mingw-w64
project: mingw-w64
enable: '[% c("var/windows") %]'
diff --git a/projects/fxc2/build b/projects/fxc2/build
index 46a7db8..26379f9 100644
--- a/projects/fxc2/build
+++ b/projects/fxc2/build
@@ -8,19 +8,12 @@ mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf [% project %]-[% c("version") %].tar.gz
cd /var/tmp/build/[% project %]-[% c("version") %]
-[% IF c("var/windows-i686") -%]
- make x86
-[% ELSE -%]
- make x64
-[% END -%]
+make x64
mkdir -p $distdir/bin/
cp fxc2.exe $distdir/bin/
-[% IF c("var/windows-i686") -%]
- cp dll/d3dcompiler_47_32.dll $distdir/bin/d3dcompiler_47.dll
-[% ELSE -%]
- cp dll/d3dcompiler_47.dll $distdir/bin/
-[% END -%]
+cp dll/d3dcompiler_47_32.dll $distdir/bin/d3dcompiler_47_32.dll
+cp dll/d3dcompiler_47.dll $distdir/bin/
cd /var/tmp/dist
diff --git a/projects/fxc2/config b/projects/fxc2/config
index 4b9f151..d1620d9 100644
--- a/projects/fxc2/config
+++ b/projects/fxc2/config
@@ -2,7 +2,7 @@
version: '[% c("abbrev") %]'
git_url: https://github.com/mozilla/fxc2.git
git_hash: 5ace4c25b63cb5a83b58a3eae3d36256a6022cde
-filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
container:
diff --git a/rbm.conf b/rbm.conf
index e1376ac..a3850d9 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -394,6 +394,7 @@ targets:
arch: x86_64
var:
windows-x86_64: 1
+ windows-i686: 0
osname: windows-x86_64
# HEASLR is 64 bit only (see bug 12968)
flag_HEASLR: '-Wl,--high-entropy-va'
@@ -401,6 +402,7 @@ targets:
arch: i686
var:
windows-i686: 1
+ windows-x86_64: 0
osname: windows-i686
windows:
var:
1
0
[tor-browser-build/master] Bug 40003: Update cctools version for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 91375fb80f86bf849aee8bf5a76bb8ceee7c6180
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jul 9 19:48:49 2020 +0000
Bug 40003: Update cctools version for Firefox 78 ESR
---
projects/cctools/build | 27 +++++++++++++++++++++------
projects/cctools/config | 6 ++++--
2 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/projects/cctools/build b/projects/cctools/build
index a724399..b8d7523 100644
--- a/projects/cctools/build
+++ b/projects/cctools/build
@@ -1,20 +1,35 @@
#!/bin/bash
[% c("var/set_default_env") -%]
distdir=/var/tmp/dist/[% project %]
-mkdir -p /var/tmp/dist
+mkdir -p $distdir
tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
-export PATH="/var/tmp/dist/clang/bin:$PATH"
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/libtapi') %]
+mv /var/tmp/dist/libtapi/* $distdir
+export CLANG_DIR=/var/tmp/dist/clang
mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]/cctools
-export CC=clang
-export CXX=clang++
+export CC=$CLANG_DIR/bin/clang
+export CXX=$CLANG_DIR/bin/clang++
+export LDFLAGS="-lpthread -Wl,-rpath-link,$CLANG_DIR/lib -Wl,-rpath,\\\$\$ORIGIN/../lib,-rpath,\\\$\$ORIGIN/../../clang/lib"
+# Force re-libtoolization to overwrite files with the new libtool bits.
+perl -pi -e 's/(LIBTOOLIZE -c)/\1 -f/' autogen.sh
./autogen.sh
-./configure --prefix=$distdir --target=x86_64-apple-darwin11 --with-llvm-config=llvm-config
-export LDFLAGS=-lpthread
+./configure \
+ --prefix=$distdir \
+ --target=x86_64-apple-darwin \
+ --with-llvm-config=$CLANG_DIR/bin/llvm-config \
+ --enable-lto-support \
+ --enable-tapi-support \
+ --with-libtapi=$distdir
make -j[% c("buildconf/num_procs") %] install
+strip $distdir/bin/*
+# cctools doesn't include dsymutil but clang will need to find it.
+cp $CLANG_DIR/bin/dsymutil $distdir/bin/x86_64-apple-darwin-dsymutil
+# various build scripts based on cmake want to find `lipo` without a prefix
+cp $distdir/bin/x86_64-apple-darwin-lipo $distdir/bin/lipo
cd /var/tmp/dist
[% c('tar', {
diff --git a/projects/cctools/config b/projects/cctools/config
index 8e7ff65..280e692 100644
--- a/projects/cctools/config
+++ b/projects/cctools/config
@@ -2,8 +2,8 @@
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
version: '[% c("abbrev") %]'
# This can be found in
-# browser/config/tooltool-manifest/macosx64/clang.manifest
-git_hash: 8e9c3f2506b51cf56725eaa60b6e90e240e249ca
+# taskcluster/ci/fetch/toolchains.yml
+git_hash: f2890afb8a52944dd8265e489a0691c7b0afdd54
git_url: https://github.com/tpoechtrager/cctools-port
var:
@@ -14,3 +14,5 @@ input_files:
- project: container-image
- name: clang
project: clang
+ - name: libtapi
+ project: libtapi
1
0
17 Jul '20
commit 9406dd02daf79c6f6dbfe2f164aec245075a46d4
Author: Georg Koppen <gk(a)torproject.org>
Date: Sat Jun 20 10:56:12 2020 +0000
Bug 33410: Enable RLBox for macOS
---
projects/firefox/build | 8 ++++++--
projects/lucetc/build | 14 +++++++++++---
projects/lucetc/config | 10 ++++++----
projects/wasi-sysroot/build | 16 +++++++++-------
projects/wasi-sysroot/config | 6 ++++--
rbm.conf | 2 ++
6 files changed, 38 insertions(+), 18 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 79278c8..a9f86bf 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -39,8 +39,12 @@ export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
# Copy it over.
# https://searchfox.org/mozilla-central/source/build/build-clang/build-clang.…,
# include it directly in our clang
- mkdir /var/tmp/dist/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
- cp /var/tmp/dist/wasi-sysroot/lib/clang/9.0.0/lib/wasi/libclang_rt.builtins-wasm32.a /var/tmp/dist/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
+ rtdir=/var/tmp/dist/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
+ [% IF c("var/osx") -%]
+ rtdir=/var/tmp/dist/macosx-toolchain/clang/lib/clang/[% pc("clang", "version") %]/lib/wasi
+ [% END-%]
+ mkdir -p $rtdir
+ cp /var/tmp/dist/wasi-sysroot/lib/clang/9.0.0/lib/wasi/libclang_rt.builtins-wasm32.a $rtdir
tar -C /var/tmp/dist -xf [% c('input_files_by_name/lucetc') %]
export PATH="/var/tmp/dist/lucetc/bin:$PATH"
export WASM_SANDBOXED_LIBRARIES=graphite,ogg
diff --git a/projects/lucetc/build b/projects/lucetc/build
index 3f835bd..208f4e1 100644
--- a/projects/lucetc/build
+++ b/projects/lucetc/build
@@ -1,16 +1,24 @@
#!/bin/bash
[% c("var/set_default_env") -%]
-[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+# XXX: Do we need the GCC part here if we set CC to clang anyway?
+[% IF c("var/linux") %]
+ # We need a link to our GCC, otherwise the system cc gets used which points to
+ # /usr/bin/gcc.
+ [% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
+ hardened_gcc => 0 }) %]
+ ln -s gcc /var/tmp/dist/gcc/bin/cc
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+[% END -%]
distdir=/var/tmp/dist
builddir=/var/tmp/build/[% project %]
mkdir -p $distdir
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
-tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/wasi-sysroot') %]
-export PATH="/var/tmp/dist/cmake/bin:/var/tmp/dist/clang/bin:/var/tmp/dist/binutils/bin:/var/tmp/dist/rust/bin:$PATH"
+export PATH="/var/tmp/dist/cmake/bin:/var/tmp/dist/clang/bin:/var/tmp/dist/rust/bin:$PATH"
export CC=$distdir/clang/bin/clang
export CFLAGS="-L$distdir/clang/lib"
export CXX=$distdir/clang/bin/clang++
diff --git a/projects/lucetc/config b/projects/lucetc/config
index f60629e..72b79fe 100644
--- a/projects/lucetc/config
+++ b/projects/lucetc/config
@@ -11,16 +11,18 @@ var:
input_files:
- project: container-image
+ - name: binutils
+ project: binutils
+ enable: '[% c("var/linux") %]'
# Our clang still needs GCC parts (libstdc++ for instance) so we include that
# one here even though compilation gets done solely by clang.
- - name: '[% c("var/compiler") %]'
- project: '[% c("var/compiler") %]'
+ - project: '[% c("var/compiler") %]'
+ name: '[% c("var/compiler") %]'
+ enable: '[% c("var/linux") %]'
- name: cmake
project: cmake
- name: clang
project: clang
- - name: binutils
- project: binutils
- name: rust
project: rust
- name: wasi-sysroot
diff --git a/projects/wasi-sysroot/build b/projects/wasi-sysroot/build
index 6cdcf2f..e66d1e0 100644
--- a/projects/wasi-sysroot/build
+++ b/projects/wasi-sysroot/build
@@ -1,15 +1,17 @@
#!/bin/bash
[% c("var/set_default_env") -%]
-# We need a link to our GCC, otherwise the system cc gets used which points to
-# /usr/bin/gcc.
-[% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
- hardened_gcc => 0 }) %]
-ln -s gcc /var/tmp/dist/gcc/bin/cc
-
+[% IF c("var/linux") %]
+ # We need a link to our GCC, otherwise the system cc gets used which points to
+ # /usr/bin/gcc.
+ [% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
+ hardened_gcc => 0 }) %]
+ ln -s gcc /var/tmp/dist/gcc/bin/cc
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
+[% END -%]
distdir=/var/tmp/dist
builddir=/var/tmp/build/[% project %]
mkdir -p $distdir
-tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
export PATH=/var/tmp/dist/binutils/bin:/var/tmp/dist/cmake/bin:/var/tmp/dist/ninja:$PATH
diff --git a/projects/wasi-sysroot/config b/projects/wasi-sysroot/config
index 8b3ae15..c4ded87 100644
--- a/projects/wasi-sysroot/config
+++ b/projects/wasi-sysroot/config
@@ -17,10 +17,12 @@ targets:
input_files:
- project: container-image
- - name: gcc
- project: gcc
- name: binutils
project: binutils
+ enable: '[% c("var/linux") %]'
+ - project: '[% c("var/compiler") %]'
+ name: '[% c("var/compiler") %]'
+ enable: '[% c("var/linux") %]'
- name: cmake
project: cmake
- name: ninja
diff --git a/rbm.conf b/rbm.conf
index c3f778b..e2323db 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -444,6 +444,8 @@ targets:
LDFLAGS: "-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie"
macosx_deployment_target: '10.9'
locale_ja: ja-JP-mac
+ # We only support RLBox on the nightly channel for now
+ rlbox: '[% c("var/nightly") %]'
# We only build snowflake on the alpha and nightly
# channels for now.
snowflake: '[% c("var/alpha") || c("var/nightly") %]'
1
0
[tor-browser-build/master] Bug 34229: Update macOS toolchain for Firefox 78 ESR
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit c51caf4a609c9c3e037b302cb1fba508fea14045
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jul 9 20:31:58 2020 +0000
Bug 34229: Update macOS toolchain for Firefox 78 ESR
Clean-up and getting us closer to the way Mozilla is deploying the
cross-compilation setup.
---
projects/fenix-rust/build | 17 +----------------
projects/firefox/mozconfig-osx-x86_64 | 10 +++++-----
projects/libevent/build | 5 -----
projects/macosx-toolchain/build | 4 ++--
projects/macosx-toolchain/config | 3 +++
projects/openssl/build | 2 +-
projects/openssl/config | 2 +-
projects/rust/build | 17 +----------------
projects/tor/build | 4 +---
rbm.conf | 4 ++--
10 files changed, 17 insertions(+), 51 deletions(-)
diff --git a/projects/fenix-rust/build b/projects/fenix-rust/build
index a8f886b..5d3d5c1 100644
--- a/projects/fenix-rust/build
+++ b/projects/fenix-rust/build
@@ -16,23 +16,8 @@ export PATH="$distdir-rust-old/bin:$PATH"
# (i.e. Linux).
unset CC
unset LDFLAGS
- # Target 10.9 as our toolchain does. Without this explicit declaration Bad
- # Things will happen, as a lot of dependent code then assumes that the
- # official macOS target, x86_64-apple-darwin, essentially means 10.4.
- export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
- # The Rust target for macOS is x86_64-apple-darwin, yet our toolchain is built
- # for x86_64-apple-darwin11. We can't mix those targets as clang gets confused
- # that way. Changing the Rust target to x86_64-apple-darwin11 would require a
- # fair amount of patching, thus we create symlinks to provide Rust with the
- # necessary tools while using our toolchain underneath, targeting 10.9.
- cd $cctoolsdir
- for f in `ls x86_64-apple-darwin11-*`; do
- ln -s $f ${f//x86_64-apple-darwin11/x86_64-apple-darwin}
- done
- cd ..
- ln -s x86_64-apple-darwin11 x86_64-apple-darwin
- mkdir $distdir/helper
+ mkdir $distdir/helper
# We need to adapt our CFLAGS and make sure our flags are passed down to all
# dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort
# to a wrapper script.
diff --git a/projects/firefox/mozconfig-osx-x86_64 b/projects/firefox/mozconfig-osx-x86_64
index 8f088a5..9b0773d 100644
--- a/projects/firefox/mozconfig-osx-x86_64
+++ b/projects/firefox/mozconfig-osx-x86_64
@@ -7,23 +7,23 @@ CROSS_CCTOOLS_PATH=$TOOLCHAIN_DIR/cctools
CROSS_SYSROOT=$TOOLCHAIN_DIR/MacOSX10.11.sdk
CROSS_PRIVATE_FRAMEWORKS=$CROSS_SYSROOT/System/Library/PrivateFrameworks
HARDENING_FLAGS="-Werror=format -Werror=format-security -fstack-protector-strong -D_FORTIFY_SOURCE=2"
-FLAGS="-target x86_64-apple-darwin11 -B $CROSS_CCTOOLS_PATH/bin -isysroot $CROSS_SYSROOT $HARDENING_FLAGS"
+FLAGS="-target x86_64-apple-darwin -B $CROSS_CCTOOLS_PATH/bin -isysroot $CROSS_SYSROOT $HARDENING_FLAGS"
export CC="$TOOLCHAIN_DIR/clang/bin/clang $FLAGS"
export CXX="$TOOLCHAIN_DIR/clang/bin/clang++ $FLAGS"
export LLVMCONFIG=$TOOLCHAIN_DIR/clang/bin/llvm-config
export LDFLAGS="-Wl,-syslibroot,$CROSS_SYSROOT -Wl,-pie"
export BINDGEN_CFLAGS="$FLAGS"
-export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin11-
+export TOOLCHAIN_PREFIX=$CROSS_CCTOOLS_PATH/bin/x86_64-apple-darwin-
export DSYMUTIL="$TOOLCHAIN_DIR/clang/bin/dsymutil"
export HOST_CFLAGS="-g"
export HOST_CXXFLAGS="-g"
export HOST_LDFLAGS="-g"
-ac_add_options --target=x86_64-apple-darwin11
-ac_add_options --with-macos-sdk=$CROSS_SYSROOT
-ac_add_options --with-macos-private-frameworks=$CROSS_PRIVATE_FRAMEWORKS
+ac_add_options --target=x86_64-apple-darwin
+export MACOS_SDK_DIR=$CROSS_SYSROOT
+export MACOS_PRIVATE_FRAMEWORKS_DIR=$CROSS_PRIVATE_FRAMEWORKS
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-macos
mk_add_options MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/projects/libevent/build b/projects/libevent/build
index 9c4f190..cc9d6b5 100644
--- a/projects/libevent/build
+++ b/projects/libevent/build
@@ -5,11 +5,6 @@ distdir=/var/tmp/dist/[% project %]
mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
-[% IF c("var/osx") -%]
- # Setting this after `configure` but before `make` might be enough, but let's
- # not bet on that and just set it here.
- export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
-[% END -%]
./autogen.sh
./configure [% c("var/configure_opt") %] --disable-libevent-regress --disable-samples --prefix=$distdir
[% IF c("var/osx") -%]
diff --git a/projects/macosx-toolchain/build b/projects/macosx-toolchain/build
index f306302..cd19c1d 100644
--- a/projects/macosx-toolchain/build
+++ b/projects/macosx-toolchain/build
@@ -8,8 +8,8 @@ tar xf [% c('input_files_by_name/clang') %]
mv clang "$distdir/clang"
tar -C $distdir -xf [% c('input_files_by_name/cctools') %]
cd $distdir/cctools/bin
-ln -s ../../clang/bin/clang x86_64-apple-darwin11-clang
-ln -s ../../clang/bin/clang++ x86_64-apple-darwin11-clang++
+ln -s ../../clang/bin/clang x86_64-apple-darwin-clang
+ln -s ../../clang/bin/clang++ x86_64-apple-darwin-clang++
cd "/var/tmp/dist"
[% c('tar', {
diff --git a/projects/macosx-toolchain/config b/projects/macosx-toolchain/config
index b7d5a39..29f7c4b 100644
--- a/projects/macosx-toolchain/config
+++ b/projects/macosx-toolchain/config
@@ -14,6 +14,7 @@ var:
export LD_LIBRARY_PATH=/var/tmp/dist/[% project %]/clang/lib
export CC="$clangdir/bin/clang [% c('var/FLAGS') %]"
export LDFLAGS="[% c('var/LDFLAGS') %]"
+ export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
input_files:
- project: container-image
@@ -21,6 +22,8 @@ input_files:
project: clang
- name: cctools
project: cctools
+ # Instructions on how to create the SDK tarball can be found at:
+ # build/macosx/cross-mozconfig.common
- name: SDK
URL: https://people.torproject.org/~gk/mirrors/sources/MacOSX10.11.sdk.tar.bz2
sha256sum: d11e410d757d023be66d2fe7eaa85a1d232da3ac04f177eff3d8b8275cd9ffca
diff --git a/projects/openssl/build b/projects/openssl/build
index 5f275a0..7737f88 100644
--- a/projects/openssl/build
+++ b/projects/openssl/build
@@ -10,7 +10,7 @@ export CC='gcc -m32'
[% END %]
[% IF c("var/osx") -%]
# Tricking OpenSSL into using our clang as cross-compiler
- ln -s $clangdir/bin/clang $clangdir/bin/x86_64-apple-darwin11-cc
+ ln -s $clangdir/bin/clang $clangdir/bin/x86_64-apple-darwin-cc
export CC="cc [% c("var/FLAGS") %]"
[% END -%]
[% IF c("var/windows") -%]
diff --git a/projects/openssl/config b/projects/openssl/config
index ab62b14..fd38237 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -21,7 +21,7 @@ targets:
openssldir: 'Program Files[% IF c("var/windows-i686") %] (x86)[% END %]/OpenSSL'
osx-x86_64:
var:
- configure_opts: --cross-compile-prefix=x86_64-apple-darwin11- darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
+ configure_opts: --cross-compile-prefix=x86_64-apple-darwin- darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
android:
var:
configure_opts: '[% IF c("var/android-fenix") %]CC=[% c("var/CC") %] android-[% c("var/toolchain_arch") %] -no-shared -D__ANDROID_API__=[% c("var/android_min_api") %][% ELSE %]CC=clang android-[% c("var/toolchain_arch") %] -no-shared[% END %]'
diff --git a/projects/rust/build b/projects/rust/build
index a8f886b..5d3d5c1 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -16,23 +16,8 @@ export PATH="$distdir-rust-old/bin:$PATH"
# (i.e. Linux).
unset CC
unset LDFLAGS
- # Target 10.9 as our toolchain does. Without this explicit declaration Bad
- # Things will happen, as a lot of dependent code then assumes that the
- # official macOS target, x86_64-apple-darwin, essentially means 10.4.
- export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
- # The Rust target for macOS is x86_64-apple-darwin, yet our toolchain is built
- # for x86_64-apple-darwin11. We can't mix those targets as clang gets confused
- # that way. Changing the Rust target to x86_64-apple-darwin11 would require a
- # fair amount of patching, thus we create symlinks to provide Rust with the
- # necessary tools while using our toolchain underneath, targeting 10.9.
- cd $cctoolsdir
- for f in `ls x86_64-apple-darwin11-*`; do
- ln -s $f ${f//x86_64-apple-darwin11/x86_64-apple-darwin}
- done
- cd ..
- ln -s x86_64-apple-darwin11 x86_64-apple-darwin
- mkdir $distdir/helper
+ mkdir $distdir/helper
# We need to adapt our CFLAGS and make sure our flags are passed down to all
# dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort
# to a wrapper script.
diff --git a/projects/tor/build b/projects/tor/build
index 4345d35..96c2a16 100644
--- a/projects/tor/build
+++ b/projects/tor/build
@@ -90,8 +90,6 @@ openssldir=/var/tmp/dist/openssl/openssl
[% IF c("var/osx") %]
cp $libeventdir/lib/libevent-*.dylib $TORBINDIR/
- # The target version needs to be set before the configure step.
- export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
[% END %]
cd /var/tmp/build/[% project %]-[% c('version') %]
@@ -122,7 +120,7 @@ cp $distdir/share/tor/geoip6 $TORCONFIGDIR
cd $distdir
cp bin/tor $TORBINDIR/
cd $TORBINDIR/
- x86_64-apple-darwin11-install_name_tool -change $libeventdir/lib/$LIBEVENT_FILE @executable_path/$LIBEVENT_FILE tor
+ x86_64-apple-darwin-install_name_tool -change $libeventdir/lib/$LIBEVENT_FILE @executable_path/$LIBEVENT_FILE tor
[% END %]
cd $distdir
diff --git a/rbm.conf b/rbm.conf
index a3850d9..c3f778b 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -439,8 +439,8 @@ targets:
suite: buster
arch: amd64
compiler: 'macosx-toolchain'
- configure_opt: '--host=x86_64-apple-darwin11 CC="x86_64-apple-darwin11-clang [% c("var/FLAGS") %]" CXX="x86_64-apple-darwin11-clang++ [% c("var/FLAGS") %]" [% c("var/configure_opt_project") %]'
- FLAGS: "-target x86_64-apple-darwin11 -B $cctoolsdir -isysroot $sysrootdir"
+ configure_opt: '--host=x86_64-apple-darwin CC="x86_64-apple-darwin-clang [% c("var/FLAGS") %]" CXX="x86_64-apple-darwin-clang++ [% c("var/FLAGS") %]" [% c("var/configure_opt_project") %]'
+ FLAGS: "-target x86_64-apple-darwin -B $cctoolsdir -isysroot $sysrootdir"
LDFLAGS: "-Wl,-syslibroot,$sysrootdir -Wl,-dead_strip -Wl,-pie"
macosx_deployment_target: '10.9'
locale_ja: ja-JP-mac
1
0
[tor-browser-build/master] Bug 40019: Workaround for missing a proper compiler-rt
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit cb9c548344966ea3c50bb56a71459fecff3cc18d
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jul 10 05:57:56 2020 +0000
Bug 40019: Workaround for missing a proper compiler-rt
To get nightly builds going we use Mozilla's cross-compiled compiler-rt
for now.
---
projects/firefox/build | 5 +++++
projects/firefox/config | 6 ++++++
2 files changed, 11 insertions(+)
diff --git a/projects/firefox/build b/projects/firefox/build
index a9f86bf..1fe4adf 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -14,6 +14,11 @@ mkdir -p [% dest_dir _ '/' _ c('filename') %]
cp /var/tmp/dist/mingw-w64/gcclibs/{libssp.a,libssp_nonshared.a} /var/tmp/dist/mingw-w64-clang/[% c("arch") %]-w64-mingw32/lib/
[% END -%]
+[% IF c("var/osx") %]
+ mkdir -p /var/tmp/dist/macosx-toolchain/clang/lib/clang/[% pc("clang", "version") %]/lib/darwin
+ mv libclang_rt.osx.a /var/tmp/dist/macosx-toolchain/clang/lib/clang/[% pc("clang", "version") %]/lib/darwin
+[% END -%]
+
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cbindgen') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 2cc734b..874d7d2 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -182,3 +182,9 @@ input_files:
# TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
- filename: namecoin-etld.patch
enable: '[% c("var/namecoin") %]'
+ # The library is extracted from Mozilla's officially used Clang, downloaded
+ # from https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/TYTqgyybSLmp0O….
+ # Its SHA-256 sum is 7b0a6e60f102d3dbf618ae9e25d990d4dc72c76eb5accb5974ec70c11ff7e049.
+ - URL: https://people.torproject.org/~gk/mirrors/sources/libclang_rt.osx.a
+ sha256sum: 33541fb054e7dc372b5e9708bbcc175561d7fdbc9b00bf964e0c60b82bd8165a
+ enable: '[% c("var/osx") %]'
1
0
[tor-browser-build/master] Bug 40021: Unbreak our desktop nightly builds
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 4f98b8d75e7f1b3ece131b8b18f01d41e782d6fb
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Jul 10 19:09:41 2020 +0000
Bug 40021: Unbreak our desktop nightly builds
---
projects/firefox/config | 2 +-
projects/tor-launcher/config | 4 +---
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index 874d7d2..2ee16e4 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- firefox_platform_version: 68.10.1
+ firefox_platform_version: 78.0.1
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 10.0
branding_directory: '[% IF c("var/android") %]mobile/android[% ELSE %]browser[% END %]/branding/alpha'
diff --git a/projects/tor-launcher/config b/projects/tor-launcher/config
index f8a974a..9aaca27 100644
--- a/projects/tor-launcher/config
+++ b/projects/tor-launcher/config
@@ -22,7 +22,5 @@ steps:
targets:
nightly:
version: '[% c("abbrev") %]'
- # Hardcode the commit for now so we can start landing ESR 78 patches without
- # breaking nightly builds.
- git_hash: b4838d339a84c5ebebd91a0ba6b22d44ecda97b1
+ git_hash: master
tag_gpg_id: 0
1
0
17 Jul '20
commit e1a81f52117ac45d7749794eabebe9f75870b822
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Jun 11 10:30:17 2020 +0000
Bug 33626: Add GeckoView project
We include a new project, geckoview. While this increases the
boilerplate a bit it should make it easier to move mobile to the regular
release series while desktop stays on ESR, and it is conceptually
clearer as well (no, we don't build firefox on mobile but a library to
be consumed by other projects).
---
projects/common/get-moz-build-date | 27 ++
projects/geckoview/build | 61 +++
projects/geckoview/config | 58 +++
projects/geckoview/gradle-dependencies-list.txt | 479 ++++++++++++++++++++++++
projects/geckoview/mozconfig-android-aarch64 | 37 ++
projects/geckoview/mozconfig-android-all | 8 +
projects/geckoview/mozconfig-android-armv7 | 37 ++
projects/geckoview/mozconfig-android-x86 | 37 ++
projects/geckoview/mozconfig-android-x86_64 | 37 ++
9 files changed, 781 insertions(+)
diff --git a/projects/common/get-moz-build-date b/projects/common/get-moz-build-date
new file mode 100755
index 0000000..a43f2f7
--- /dev/null
+++ b/projects/common/get-moz-build-date
@@ -0,0 +1,27 @@
+#!/usr/bin/perl -w
+# Generate a MOZ_BUILD_DATE based on Tor Browser version number
+
+use strict;
+
+die "wrong number of arguments" unless @ARGV == 2;
+my ($year, $version) = @ARGV;
+my $date;
+if ($version =~ m/^tbb-nightly\.([^\.]+)\.([^\.]+)\.([^\.]+)$/) {
+ $date = sprintf("%d%02d%02d010101", $1, $2, $3);
+} elsif ($version eq 'testbuild') {
+ # There is no need for an increasing build date in test builds. Just hardcode
+ # it.
+ $date = 20010101010101;
+} else {
+ my @v = split(/[\.ab]/, $version);
+ push @v, '0' if @v < 4;
+ push @v, '0' if @v < 4;
+ # When MOZ_BUILD_DATE was based on the firefox version, with
+ # Tor Browser 8.0.6 and firefox 60.5.1 it was 20190204060201
+ # We can remove 5 from the month, while keeping it increasing.
+ my $month = $v[0] - 5;
+ $date = 1010101 + $year * 10000000000 + $month * 100000000
+ + $v[1] * 1000000 + $v[2] * 10000 + $v[3];
+ $date += 1000000 unless $version =~ m/[ab]/;
+}
+print "export MOZ_BUILD_DATE=$date\n";
diff --git a/projects/geckoview/build b/projects/geckoview/build
new file mode 100644
index 0000000..b12c096
--- /dev/null
+++ b/projects/geckoview/build
@@ -0,0 +1,61 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+distdir=/var/tmp/dist
+mkdir -p /var/tmp/build
+mkdir -p $distdir/[% project %]
+
+# We need to have the get-moz-build-date script available in the container
+# but we can't include it via input_files as it is a script shared between
+# projects.
+cat > get-moz-build-date << "EOF"
+[% INCLUDE "get-moz-build-date" %]
+EOF
+
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/cbindgen') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/python') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/node') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
+export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
+export PATH="/var/tmp/dist/fenix-rust/bin:/var/tmp/dist/fenix-cbindgen:/var/tmp/dist/nasm/bin:/var/tmp/dist/python/bin:/var/tmp/dist/fenix-node/bin:/var/tmp/dist/fenix-clang/bin:/var/tmp/dist/binutils/bin:$PATH"
+
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+cd /var/tmp/build/[% project %]-[% c("version") %]
+mv -f $rootdir/[% c('input_files_by_name/mozconfig') %] .mozconfig
+
+eval $(perl $rootdir/get-moz-build-date [% c("var/copyright_year") %] [% c("var/torbrowser_version") %])
+if [ -z $MOZ_BUILD_DATE ]
+then
+ echo "MOZ_BUILD_DATE is not set"
+ exit 1
+fi
+
+export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
+gradle_repo=/var/tmp/dist/gradle-dependencies
+export GRADLE_MAVEN_REPOSITORIES="file://$gradle_repo"
+export GRADLE_FLAGS="--no-daemon --offline"
+# Move the Gradle repo to a hard-coded location. The location is embedded in
+# the file chrome/toolkit/content/global/buildconfig.html so it needs to be
+# standardized for reproducibility.
+mv $rootdir/[% c('input_files_by_name/gradle-dependencies') %] $gradle_repo
+cp -r $gradle_repo/m2/* $gradle_repo
+
+rm -f configure
+rm -f js/src/configure
+
+./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %]
+./mach build --verbose
+
+# We don't want to have the debug .aar but the one that has `$channel`, `$arch`,
+# and `$version` in its name.
+find obj-* -type f -name geckoview-*-*-*.aar -exec cp {} $distdir/[% project %] \;
+
+cd $distdir
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/geckoview/config b/projects/geckoview/config
new file mode 100644
index 0000000..9270c43
--- /dev/null
+++ b/projects/geckoview/config
@@ -0,0 +1,58 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+filename: 'geckoview-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/torbrowser_branch") %]-1-build2'
+tag_gpg_id: 1
+git_url: https://git.torproject.org/tor-browser.git
+git_submodule: 1
+gpg_keyring: torbutton.gpg
+
+var:
+ geckoview_version: '78.0b[% c("var/beta_version") %]'
+ beta_version: 5
+ torbrowser_branch: 10
+ copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
+ deps:
+ - build-essential
+ - unzip
+ - zip
+ - autoconf2.13
+ - yasm
+ # We are building our own version of Python 3.6, which is required
+ # for the build. However mach still requires Python 2.7, so we
+ # install this version using the package.
+ - python
+ - pkg-config
+ container:
+ use_container: 1
+ # this should be updated when the list of gradle dependencies is changed
+ gradle_dependencies_version: 1
+
+targets:
+ nightly:
+ git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/torbrowser_branch") %]-1'
+ tag_gpg_id: 0
+
+input_files:
+ - project: container-image
+ - name: '[% c("var/compiler") %]'
+ project: '[% c("var/compiler") %]'
+ - filename: 'mozconfig-[% c("var/osname") %]'
+ name: mozconfig
+ - project: binutils
+ name: binutils
+ - project: fenix-rust
+ name: rust
+ - project: fenix-cbindgen
+ name: cbindgen
+ - project: fenix-node
+ name: node
+ - project: nasm
+ name: nasm
+ - project: python
+ name: python
+ - project: fenix-clang
+ name: clang
+ - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]'
+ name: gradle-dependencies
+ exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
diff --git a/projects/geckoview/gradle-dependencies-list.txt b/projects/geckoview/gradle-dependencies-list.txt
new file mode 100644
index 0000000..d379d16
--- /dev/null
+++ b/projects/geckoview/gradle-dependencies-list.txt
@@ -0,0 +1,479 @@
+# On how to update dependencies see projects/common/how-to-create-gradle-dependencies-list.txt
+# Don't forget to update var/gradle_dependencies_version when modifying this file
+sha256sum | url
+857db5645aaefbd7fbe9ba6454b072bc0518ebaba08a93d5eae89a9850e949c4 | https://jcenter.bintray.com/com/getkeepsafe/dexcount/dexcount-gradle-plugin…
+15d4b252c5aa3aeb8d634ae5aaf348ac6ce183b6b5e3615364e6c083715c1133 | https://jcenter.bintray.com/com/getkeepsafe/dexcount/dexcount-gradle-plugin…
+c98f1b0978cfd24712c27388e040c50ce0692252b3aa9448603d9efa05ebe8a8 | https://jcenter.bintray.com/com/google/auto/auto-parent/3/auto-parent-3.pom
+6cac9421439b39b9f4aa76738ced039462a69911c410f2c372c196b0f4b7f4cf | https://jcenter.bintray.com/com/google/auto/value/auto-value/1.5.2/auto-val…
+901fb1440a0ef8e0c0553a7bb44c0b89647bf53c8822642eea0b57173c7c688d | https://jcenter.bintray.com/com/google/auto/value/auto-value/1.5.2/auto-val…
+905721a0eea90a81534abb7ee6ef4ea2e5e645fa1def0a5cd88402df1b46c9ed | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.…
+feab9191311c3d7aeef2b66d6064afc80d3d1d52d980fb07ae43c78c987ba93a | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.…
+1e7f53fa5b8b5c807e986ba335665da03f18d660802d8bf061823089d1bee468 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
+02c12c3c2ae12dd475219ff691c82a4d9ea21f44bc594a181295bf6d43dcfbb0 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.…
+766ad2a0783f2687962c8ad74ceecc38a28b9f72a2d085ee438b7813e928d0c7 | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.…
+19889dbdf1b254b2601a5ee645b8147a974644882297684c798afe5d63d78dfe | https://jcenter.bintray.com/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.…
+c6221763bd79c4f1c3dc7f750b5f29a0bb38b367b81314c4f71896e340c40825 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.0/gson-2.8.0.jar
+a5331a0ecb548f9942ab5b93c7ac43c38a21e897763dde1bcdbf0774f416ca6f | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.0/gson-2.8.0.pom
+91b9f17a54e6c340c8d3ea4b359401170706eb26a82d51909abe6ba80081aed8 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.2/gson-2.8.2.pom
+233a0149fc365c9f6edbd683cfe266b19bdc773be98eabdaf6b3c924b48e7d81 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar
+b8308557a7fccc92d9fe7c8cd0599258b361285d2ecde7689eda98843255a092 | https://jcenter.bintray.com/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
+0f1d8369b1e9f1bc4b467c8dcfdd8b59733aad5b5c8419c3a59b2f9abaf04cd2 | https://jcenter.bintray.com/com/google/code/gson/gson-parent/2.8.0/gson-par…
+cf5c43860b53ba5a95c19bc6525cc43d3488a6fe3df2f649c0099a613a0640e3 | https://jcenter.bintray.com/com/google/code/gson/gson-parent/2.8.2/gson-par…
+8f1fec72b91a71ea39ec39f5f778c4d1124b6b097c6d55b3a50b554a52237b27 | https://jcenter.bintray.com/com/google/code/gson/gson-parent/2.8.5/gson-par…
+2d9484f4c649f708f47f9a479465fc729770ee65617dca3011836602264f6439 | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json…
+47a89be0fa0fedd476db5fd2c83487654d2a119c391f83a142be876667cf7dab | https://jcenter.bintray.com/com/googlecode/json-simple/json-simple/1.1/json…
+757bfe906193b8b651e79dc26cd67d6b55d0770a2cdfb0381591504f779d4a76 | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchar…
+7846399b35c7cd642a9b3a000c3e2d62d04eb37a4547b6933cc8b18bcc2f086b | https://jcenter.bintray.com/com/googlecode/juniversalchardet/juniversalchar…
+cb4cfad870bf563a07199f3ebea5763f0dec440fcda0b318640b1feaa788656b | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+9144127192d6f612c2366825dceaeb23b0d53130b83e0bf1ffe107d1470a8487 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+03d0329547c13da9e17c634d1049ea2ead093925e290567e1a364fd6b1fc7ff8 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+958cb81c393cb2996c3c6a9e867a4a4be8ddc43391672a9e4e4eba51ac7237f5 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+6ebd22ca1b9d8ec06d41de8d64e0596981d9607b42035f9ed374f9de271a481a | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+5e0258ea1ba4e51a133742680bc22448f7ab214be4073e8619f645ef1be42dd5 | https://jcenter.bintray.com/com/google/errorprone/error_prone_annotations/2…
+cf149955279b07d4f11e817985c1164a69e930d73db7441b43a6ef53bbd286c4 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.0.18…
+d52a2616a1389fce951de0e97a780b88f1bdf0c947b315a76fd47cd6bbfb239b | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.1.3/…
+c460902ddf5ece68832c6b271ce52a0928b05cf3a6ac81a8f548c73cbd541138 | https://jcenter.bintray.com/com/google/errorprone/error_prone_parent/2.2.0/…
+cd6db17a11a31ede794ccbd1df0e4d9750f640234731f21cff885a9997277e81 | https://jcenter.bintray.com/com/google/google/1/google-1.pom
+7baa80df284117e5b945b19b98d367a85ea7b7801bd358ff657946c3bd1b6596 | https://jcenter.bintray.com/com/google/guava/guava/23.0/guava-23.0.jar
+ac2ac42a7a6b4ce5097c6c83e2fbbacbbb7f9913f1b4f993eb1723a14476324e | https://jcenter.bintray.com/com/google/guava/guava/23.0/guava-23.0.pom
+a0e9cabad665bc20bcd2b01f108e5fc03f756e13aea80abaadb9f407033bea2c | https://jcenter.bintray.com/com/google/guava/guava/26.0-jre/guava-26.0-jre.…
+1c337adc9a4ab4b844da81da85936581b8946c7cb71284c5dcbdaf1eaa7ee109 | https://jcenter.bintray.com/com/google/guava/guava/26.0-jre/guava-26.0-jre.…
+66cc3a0d329f9fe130605fdb2c901e5a9bb2612f02f23a76757b46e689b3594d | https://jcenter.bintray.com/com/google/guava/guava-parent/23.0/guava-parent…
+bb7d5cd417c0d7def5e3e27092fdd23522d3fc251ad8a07956c13ce0573aeaa3 | https://jcenter.bintray.com/com/google/guava/guava-parent/26.0-jre/guava-pa…
+2994a7eb78f2710bd3d3bfb639b2c94e219cedac0d4d084d516e78c16dddecf6 | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc…
+f0c98c571e93a7cb4dd18df0fa308f0963e7a0620ac2d4244e61e709d03ad6be | https://jcenter.bintray.com/com/google/j2objc/j2objc-annotations/1.1/j2objc…
+c4828e28d7c0a930af9387510b3bada7daa5c04d7c25a75c7b8b081f1c257ddd | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar
+efa86e5cd922f17b472fdfcae57234d8d4ac3e148b6250737dfce454af7a7a44 | https://jcenter.bintray.com/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
+c71555751e57e0ef912870e8ac9625ae782502a6a5b9c19ccf83b2a97d8b26bd | https://jcenter.bintray.com/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-…
+dce7e66b32456a1b1198da0caff3a8acb71548658391e798c79369241e6490a4 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.4.0/protobu…
+83f17ba86c5fa1a15a3a3c8030d4ce42ef21c1d39b65db6cc004a8eeb2c59406 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java/3.4.0/protobu…
+4189e0be5ab15cf2330f70b24fbdc75ca37514f188388fce8580ce16a9a68052 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.4.0/pr…
+89c43073e7eaa0eaba72a4a36ae1b6bfdfe5d81bb9d0e156aee05e4a72de3cb8 | https://jcenter.bintray.com/com/google/protobuf/protobuf-java-util/3.4.0/pr…
+24909c552842c0eb7a4c769d631a43cbef5a9a10c1640f2bdbd1ea149c573a47 | https://jcenter.bintray.com/com/google/protobuf/protobuf-parent/3.4.0/proto…
+f715b19c918900ad34be8f2e2372d97b1c5fff579a383f0b2dad9581df443ea4 | https://jcenter.bintray.com/com/koushikdutta/async/androidasync/2.2.1/andro…
+522714e46eb74d494c94e37e17114030e618a7560141720998d82f363d1fcd47 | https://jcenter.bintray.com/com/koushikdutta/async/androidasync/2.2.1/andro…
+4241dfa94e711d435f29a4604a3e2de5c4aa3c165e23bd066be6fc1fc4309569 | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-…
+bdb8db7012d112a6e3ea8fdb7c510b300d99eff0819d27dddba9c43397ea4cfb | https://jcenter.bintray.com/commons-codec/commons-codec/1.10/commons-codec-…
+ad19d2601c3abf0b946b5c3a4113e226a8c1e3305e395b90013b78dd94a723ce | https://jcenter.bintray.com/commons-codec/commons-codec/1.9/commons-codec-1…
+e5efcf039cd909688c201dc5479b144fd6f01f0e40252b7fc5e7d2e1b5c07990 | https://jcenter.bintray.com/commons-codec/commons-codec/1.9/commons-codec-1…
+cc6a41dc3eaacc9e440a6bd0d2890b20d36b4ee408fe2d67122f328bb6e01581 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.jar
+b2b5dd46cf998fa626eb6f8a1c114f6167c8d392694164e62533e5898e9b31f2 | https://jcenter.bintray.com/commons-io/commons-io/2.4/commons-io-2.4.pom
+daddea1ea0be0f56978ab3006b8ac92834afeefbd9b7e4e6316fca57df0fa636 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-log…
+c91ab5aa570d86f6fd07cc158ec6bc2c50080402972ee9179fe24100739fbb20 | https://jcenter.bintray.com/commons-logging/commons-logging/1.2/commons-log…
+8e108c92027bb428196f10fa11cffbe589f7648a6af2016d652279385fdfd789 | https://jcenter.bintray.com/com/squareup/javapoet/1.8.0/javapoet-1.8.0.jar
+b3760f40f19e735b2cd418f7656335d926d1d9413e10982a1c9695b64edbb647 | https://jcenter.bintray.com/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
+f699823d0081f69cbb676c1845ea222e0ada79bc88a53e5d22d8bd02d328f57e | https://jcenter.bintray.com/com/squareup/javawriter/2.1.1/javawriter-2.1.1.…
+d47fc646324c22c66f2b0e0e743c850dde9a51990c53925e7501d960f2e8df84 | https://jcenter.bintray.com/com/squareup/javawriter/2.1.1/javawriter-2.1.1.…
+fcfb09fb0ea0aa97d3cfe7ea792398081348e468f126b3603cb3803f240197f0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.…
+e1abd7f1116cf5e0c59947693e2189208ec94296b2a3394c959e3511d399a7b0 | https://jcenter.bintray.com/com/squareup/javawriter/2.5.0/javawriter-2.5.0.…
+1d8518e3ac7532a104e4f7be77def37c982e530723c6bdb3d67708cce2b0c2c4 | https://jcenter.bintray.com/com/sun/activation/all/1.2.0/all-1.2.0.pom
+993302b16cd7056f21e779cc577d175a810bb4900ef73cd8fbf2b50f928ba9ce | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
+f879b6e945854c6900b0dbee1c8384d7ab3de7e157fd7ac84937405c416d2a5e | https://jcenter.bintray.com/com/sun/activation/javax.activation/1.2.0/javax…
+c3071277f89b162982606b4e65c92077212efb6cbf1bdc365c51bd0b57ac818c | https://jcenter.bintray.com/com/sun/istack/istack-commons/2.21/istack-commo…
+c33e67a0807095f02a0e2da139412dd7c4f9cc1a4c054b3e434f96831ba950f4 | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/2.21/ista…
+ebe7137b5fbfd050545f9a7f3f339ae55beb0b53755071b4fd62aa024c626d1c | https://jcenter.bintray.com/com/sun/istack/istack-commons-runtime/2.21/ista…
+b25e0693de21cb92b039a2e4608f396590fb8773108f10d6dc9f1465f03b5be9 | https://jcenter.bintray.com/com/sun/xml/bind/jaxb-bom-ext/2.2.11/jaxb-bom-e…
+b5301b711c01547e571b615f9a0832ee525d34a4ce3372f53907a87cf20b0480 | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-parent/2.2.11/jaxb-pa…
+21918cb8e4eda67f24251e909a5d81672201d93604c4ffbf33522ad836a58e90 | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-runtime-parent/2.2.11…
+9a398c699a5d3f3b56f1056c68890ede25d94a12d98eabc2a473733e6ab2362c | https://jcenter.bintray.com/com/sun/xml/bind/mvn/jaxb-txw-parent/2.2.11/jax…
+27a77db909f3c2833c0b1a37c55af1db06045118ad2eed96ce567b6632bce038 | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fast…
+b7505e0ecf7d495b4daa3e6569f71611d1a789dc531cbd92a2025922ff2655d3 | https://jcenter.bintray.com/com/sun/xml/fastinfoset/FastInfoset/1.2.13/Fast…
+fd0857899f1067e0287c2ffd91e38f967a26bd405b83a34650c2742cee9fc261 | https://jcenter.bintray.com/com/sun/xml/fastinfoset/fastinfoset-project/1.2…
+453637054b08115122b7c7b2acf87e912e1613a78f37be3e9e6779cd0830d43e | https://jcenter.bintray.com/de/undercouch/gradle-download-task/3.4.3/gradle…
+c8300fbf69d2240f5eae5a88a76f06f67e7c604d0328813de22b75174879a9e5 | https://jcenter.bintray.com/de/undercouch/gradle-download-task/3.4.3/gradle…
+74fa208043740642f7e6eb09faba15965218ad2f50ce3020efb100136e4b591c | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.jar
+953b116521a73575eee990e3f2c36a892fb088bb2d9a3027c82193cb7a013ef7 | https://jcenter.bintray.com/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
+91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.jar
+943e12b100627804638fa285805a0ab788a680266531e650921ebfe4621a8bfa | https://jcenter.bintray.com/javax/inject/javax.inject/1/javax.inject-1.pom
+b5e60cd8b7b5ff01ce4a74c5dd008f4fbd14ced3495d0b47b85cfedc182211f2 | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/jax…
+2092a7d8d9bc5698c59b094bdea46622915c48c83ae66d5b5ad549c7bf16155b | https://jcenter.bintray.com/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/jax…
+59721f0805e223d84b90677887d9ff567dc534d7c502ca903c0c2b17f05c116a | https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.jar
+90f163f78e3ffb6f1c7ad97de9e7eba4eea25807141b85d6d12be67ca25449c4 | https://jcenter.bintray.com/junit/junit/4.12/junit-4.12.pom
+281440811268e65d9e266b3cc898297e214e04f09740d0386ceeb4a8923d63bf | https://jcenter.bintray.com/net/java/jvnet-parent/1/jvnet-parent-1.pom
+30f5789efa39ddbf96095aada3fc1260c4561faf2f714686717cb2dc5049475a | https://jcenter.bintray.com/net/java/jvnet-parent/3/jvnet-parent-3.pom
+471395735549495297c8ff939b9a32e08b91302020ff773586d27e497abb8fbb | https://jcenter.bintray.com/net/java/jvnet-parent/4/jvnet-parent-4.pom
+26c5856e954b5f864db76f13b86919b59c6eecf9fd930b96baa8884626baf2f5 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
+7af7e2d8b24b4798f04c2b7da24c9fbd1b7557b4e017c2054481565916079092 | https://jcenter.bintray.com/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-…
+f264dd9f79a1fde10ce5ecc53221eff24be4c9331c830b7d52f2f08a7b633de2 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar
+31ce606f4e9518936299bb0d27c978fa61e185fd1de7c9874fe959a53e34a685 | https://jcenter.bintray.com/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.pom
+75bc89695fa66e75374ecda439b802406f0ab1d826dd386eed0a23b1f0a9d264 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
+2a823d79f2675582a988d539466d1b175e939782efbe0f6e61f06cb165ed4907 | https://jcenter.bintray.com/net/sf/proguard/proguard-base/6.0.3/proguard-ba…
+cc12b1168e521491dd0e687cfebec11a4af874b22af70e10cf2a05b47ca00c8f | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
+5a5c7317d68ce80d1d40c9d8bd4e38814d42d1b16c265146e333634833a35a57 | https://jcenter.bintray.com/net/sf/proguard/proguard-gradle/6.0.3/proguard-…
+d87266bfd2312c3b036c4ac709310afa35c448ceb18027c3b87a33d03c6de0a0 | https://jcenter.bintray.com/net/sf/proguard/proguard-parent/6.0.3/proguard-…
+a32de739cfdf515774e696f91aa9697d2e7731e5cb5045ca8a4b657f8b1b4fb4 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar
+8a4e4b32eedaa72976a757e12cf1dfe742725db0b7311bf176dd937ba4236384 | https://jcenter.bintray.com/org/antlr/antlr4/4.5.3/antlr4-4.5.3.pom
+401877d5e70ad599e9b6cff18434ea0332f637b51f8ec68352646c836f9bb2a4 | https://jcenter.bintray.com/org/antlr/antlr4-master/4.5.3/antlr4-master-4.5…
+ff513db0361fd41237bef4784968bc15aae478d4ec0a9496f811072ccaf3841d | https://jcenter.bintray.com/org/apache/apache/13/apache-13.pom
+36c2f2f979ac67b450c0cb480e4e9baf6b40f3a681f22ba9692287d1139ad494 | https://jcenter.bintray.com/org/apache/apache/15/apache-15.pom
+9f85ff2fd7d6cb3097aa47fb419ee7f0ebe869109f98aba9f4eca3f49e74a40e | https://jcenter.bintray.com/org/apache/apache/16/apache-16.pom
+7831307285fd475bbc36b20ae38e7882f11c3153b1d5930f852d44eda8f33c17 | https://jcenter.bintray.com/org/apache/apache/18/apache-18.pom
+4946e60a547c8eda69f3bc23c5b6f0dadcf8469ea49b1d1da7de34aecfcf18dd | https://jcenter.bintray.com/org/apache/apache/9/apache-9.pom
+2c1542faf343185b7cab9c3d55c8ae5471d6d095d3887a4adefdbdf2984dc0b6 | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/common…
+b787d574c851505e76212968b9ae1641ea79804aef7f5a2cee2a01cd4055213a | https://jcenter.bintray.com/org/apache/commons/commons-compress/1.12/common…
+cb49812dc1bfb0ea4f20f398bcae1a88c6406e213e67f7524fb10d4f8ad9347b | https://jcenter.bintray.com/org/apache/commons/commons-exec/1.3/commons-exe…
+82827f6019c0f71bd74fba886ab337ff6da291f63df9723379a209d6ad3b44f8 | https://jcenter.bintray.com/org/apache/commons/commons-exec/1.3/commons-exe…
+467ae650442e876867379094e7518dfdd67d22c5352ebd39808c84259e9790ba | https://jcenter.bintray.com/org/apache/commons/commons-parent/25/commons-pa…
+e4d258af8b2ff4032148d415379def7870789a6003e80576f1504b10f26b4be8 | https://jcenter.bintray.com/org/apache/commons/commons-parent/32/commons-pa…
+3a2e69d06d641d1f3b293126dc9e2e4ea6563bf8c36c87e0ab6fa4292d04b79c | https://jcenter.bintray.com/org/apache/commons/commons-parent/34/commons-pa…
+7098a1ab8336ecd4c9dc21cbbcac869f82c66f64b8ac4f7988d41b4fcb44e49a | https://jcenter.bintray.com/org/apache/commons/commons-parent/35/commons-pa…
+87cd27e1a02a5c3eb6d85059ce98696bb1b44c2b8b650f0567c86df60fa61da7 | https://jcenter.bintray.com/org/apache/commons/commons-parent/39/commons-pa…
+0dffc621400d6c632f55787d996b8aeca36b30746a716e079a985f24d8074057 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.2/http…
+488001ba21829a4b28b0efbed18dccb13689f58f0985453863257049f7ec19f0 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.2/http…
+c03f813195e7a80e3608d0ddd8da80b21696a4c92a6a2298865bf149071551c7 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/http…
+7efc1241e73e7fbb268bfd33242d11ebd3ca07061d7d85f2962dc32a0f0b8855 | https://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.5.6/http…
+1de8cba6c1e5c46b28619e335a6fb7204c352dba3e8b1cefb4b59575e2beed01 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client…
+b042b41f2391edb00d35f7f4e509aed2123648c1d246ce58d0f7b905c9fe1f73 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-client…
+61e9427d4be326c307a7f16ba828d1cb3b14713c9b04fc8ba992a58f376c3136 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4…
+18d9243541c80848d5378bad89fccc5e1bf5c0465b2481d948b0c06851091cdc | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-core/4…
+caaf967d94afb21753f36082c6086206bd1f48825ff596932cceba72b65d39fa | https://jcenter.bintray.com/org/apache/httpcomponents/httpcomponents-parent…
+78ba1096561957db1b55200a159b648876430342d15d461277e62360da19f6fd | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
+c5c12066df2b3b88a89a2c8602b81ea9a61627e976e5129eea1899ebbaea392b | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.10/httpc…
+64d5453874cab7e40a7065cb01a9a9ca1053845a9786b478878b679e0580cec3 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.5/httpco…
+147fa18df753534e50054d018a360f789902af1e5c24322a3f0b200d0684fed2 | https://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.4.5/httpco…
+231a3f7e4962053db2be8461d5422e68fc458a3a7dd7d8ada803a348e21f8f07 | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.2/httpmi…
+004b5b6272d820029adefcaaa92186ec46a485990b54d03509e441eda85b3784 | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.2/httpmi…
+0b2b1102c18d3c7e05a77214b9b7501a6f6056174ae5604e0e256776eda7553e | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmi…
+dfbfd6ffe2a784ca9817c46365aa7f8a578320b805bde39d6f55a0b09d8aa8ca | https://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.5.6/httpmi…
+3d6eba428555a558de046b5d76eacc1f5a54b4f5f20b84d636ed7aff18aa48c3 | https://jcenter.bintray.com/org/apache/httpcomponents/project/7/project-7.p…
+7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk…
+321668fc474a73140eb9cc73c779f1ebb9f60948aade3beddee082ecefcf0259 | https://jcenter.bintray.com/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk…
+963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349 | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk…
+8fdc3336e7b01873193ba9c48b87de7d788dc0954d1eb45c322492627a4b5c6e | https://jcenter.bintray.com/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk…
+64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker…
+dc4cd438a36462d013c2338c8e206d102a322a00f33729e8955ee219859c9ede | https://jcenter.bintray.com/org/checkerframework/checker-qual/2.5.2/checker…
+6b87237de8c2e1740cf80627c7f3ce3e15de1930bb250c55a1eca94fa3e014df | https://jcenter.bintray.com/org/codehaus/codehaus-parent/4/codehaus-parent-…
+51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0 | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-al…
+fc0d535d7bdb7ca90562321c2e8e2a35c377f113c6dd0b2062282e1f4676367a | https://jcenter.bintray.com/org/codehaus/groovy/groovy-all/2.4.15/groovy-al…
+2068320bd6bad744c3673ab048f67e30bef8f518996fa380033556600669905d | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
+1879f19a05991e3ed95910b96689333396b0c467a215dc4d1f90018404b72a26 | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-annotations/1.…
+f51550a06b1410bd4962cb0e71df0b921a60a7ef47bfa9c4825a14be72316eea | https://jcenter.bintray.com/org/codehaus/mojo/animal-sniffer-parent/1.14/an…
+3e395d6fbc43c09a3774cac8694ce527398305ea3fd5492d80e25af27d382a9c | https://jcenter.bintray.com/org/codehaus/mojo/mojo-parent/34/mojo-parent-34…
+a52e6850f070dc9f7a2a51d0b25dfaafd49b0b9bf8196db6c0b3c5b7c94d8d38 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2.2…
+37bcaee8ebb04362c8352a5bf6221b86967ecdab5164c696b10b9a2bb587b2aa | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2…
+ec31409f203bcabf99534f59231ec0576d875d4d4b7349b09566a7a8c8179b24 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2…
+a874f2351cfba8e2946be3002d10c18a6da8f21b52ba2acf52f2b85d5520ed70 | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-run…
+e5327b31b595ab8143e97836d5ccdf85feb91e7ff5666f7b26913632facca4aa | https://jcenter.bintray.com/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-run…
+272a3ccad45a4511351920cd2a8633c53cab8d5220c7a92954da5526bb5eafea | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.jar
+8514cb724b4fca59a5cf272b632e539bd0a0f3cacf1844082d0a173a86406bd8 | https://jcenter.bintray.com/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.pom
+66fdef91e9739348df7a096aa384a5685f4e875584cce89386a7a47251c4d8e9 | https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.…
+fde386a7905173a1b103de6ab820727584b50d0e32282e2797787c20a64ffa93 | https://jcenter.bintray.com/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.…
+70f418efbb506c5155da5f9a5a33262ea08a9e4d7fea186aa9015c41a7224ac2 | https://jcenter.bintray.com/org/hamcrest/hamcrest-integration/1.3/hamcrest-…
+42f0be9bf98c12dacdcb99dd141d83d4dc5bb7c37a6f26684cd3ff2287667fba | https://jcenter.bintray.com/org/hamcrest/hamcrest-integration/1.3/hamcrest-…
+711d64522f9ec410983bd310934296da134be4254a125080a0416ec178dfad1c | https://jcenter.bintray.com/org/hamcrest/hamcrest-library/1.3/hamcrest-libr…
+1ceb4bfb0f098ae29b935044b2363e11323313fe3ed2055df8b79737d5056277 | https://jcenter.bintray.com/org/hamcrest/hamcrest-library/1.3/hamcrest-libr…
+6d535f94efb663bdb682c9f27a50335394688009642ba7a9677504bc1be4129b | https://jcenter.bintray.com/org/hamcrest/hamcrest-parent/1.3/hamcrest-paren…
+1345f11ba606d15603d6740551a8c21947c0215640770ec67271fe78bea97cf5 | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.jar
+47b23a79fe336b741b82434c6e049d68165256e405e75c10921fd72fa8a65d8d | https://jcenter.bintray.com/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
+ace2a10dc8e2d5fd34925ecac03e4988b2c0f851650c94b8cef49ba1bd111478 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
+965aeb2bedff369819bdde1bf7a0b3b89b8247dd69c88b86375d76163bb8c397 | https://jcenter.bintray.com/org/jetbrains/annotations/13.0/annotations-13.0…
+affb7c85a3c87bdcf69ff1dbb84de11f63dc931293934bc08cd7ab18de083601 | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
+310a6aa2d90534c32b8f46f1fc98cd0edae95dcdfca23e2847e5efa9ae0c019a | https://jcenter.bintray.com/org/jetbrains/intellij/deps/trove4j/1.0.2018121…
+26d3a8cfaf833c7c463d681e60a9887dff6819d9960936317f0b615b19a11e4f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
+d83267404f53b7d95995cfac7723991e4761e702ae41a88703b1bd202bfcfa21 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-android-extensions/…
+980965a550c50f424a2c6306dec7d5a0ac94a21e1aa8dbe87f7224774d44113c | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processi…
+f00bc1f5e8d853238d7225ef503f3cc931d91dd1b37007d360f2c2d1b1eaad27 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-annotation-processi…
+602766a64424203122e9657545da958718f6dbda019081a4cd75047404d32363 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.3.41…
+fc33d0df31e9bbe6b67ff20dc211f396ac55dc350202834b85ecba0df81242e2 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-build-common/1.3.41…
+ea6ab03286a534ab24f123b845a107c7a53b679f6ee56bdc34b5dd1b0fd7b6f4 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
+a630bdc69212fc0ac4a24059089eb246bd4f04f334a6f1e77952b373d0cdad8e | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-embeddable…
+f58cffaec052685c4b7985532c1bf52d9006b2b4ed9679d9c78df8867fc50d57 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.3…
+83918960ee396c0e38132552c48cac0aa3f542ac09ffa974d6f106b5ddf07647 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-compiler-runner/1.3…
+d59d7f617feef6beb880bc9aa6d4c838ebc6f15317e5a98c427815cce8ecfe84 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.3.4…
+e05bebcf2d42073d145e12df19de3163320fbf876986bb53df82b7478679455b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-daemon-client/1.3.4…
+380b16b2ab673bb9d9341142b51484f97e6614952cc530a48ce34583952ab84f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.4…
+98954d5331ff118a5f2492db6bc73fe947f4a3225c8abd8e106647b5fa17b3e8 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin/1.3.4…
+57b0e2951fde88baf8ffb92d72c5682c101a7c2c12c6c501a5b47f88f5b08696 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
+dc338b55085bfc4cc2a98dc83c8365dbee976b9d9134ca845d42d0a3d4767937 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1…
+8a703d706c44996993f9df34b916162b99b81417f7f9d351ca8d205f0325936d | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
+8763bd09455cecf1c9fabea3653bd2ac17bf31a1291a153fefca8e4f28de9043 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-gradle-plugin-model…
+4f48a872bad6e4d9c053f4ad610d11e4012ad7e58dc19a03dd5eb811f36069dd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.2.0/kotli…
+f35215da1bed69e3d60735d76221d7012cd1a5bc0a30f6f7421719ada463b4dd | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.2.0/kotli…
+a0172daf57e511e8e0df9251b508db8aa6b885cdf0c5849addc9b840db4814f0 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.31/kotl…
+521ea7a6923dba027d808da42cb789da43b332988652f209f45ae85b582abaac | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.31/kotl…
+01d469878c6853a607baaadf869c7474b971abe6dd2cb74f244bea0ffb453c76 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotl…
+4d0e8480bf227cd23d21d245dc9fe47e92056af5a6f367bc886bf43278c44146 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-reflect/1.3.41/kotl…
+fe9033bf39eb38d3daed1649f54b3321478901b9891c24482a4a06603d5b137f | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
+21253e34109f982b0b1586367e47b5c91bc630f5071e77f5bf3228bb4d4d86de | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-common/1.…
+c2da2d19f569e8369c2f55affa0dee5f50771bc3685697ee948ee29a16d0c3c1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
+024b8b34dbbda4c657bf4c9f68acb45174f9350d4c6542278855124442d491d3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
+854c39cdd705be01956439ae70f44a785cd0ba66388299f98bc0af75db328f29 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
+bd29d1efdfcd51ae20d252ca66f2ea84cf3671ce323cd25518ff44a52c9a5dc1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-compiler-…
+50ad890f1dfa33e9cdeba550fab2e98e88e6f03624461cd11c7f5eb4a41de7a1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.4…
+fda06e8c1b1c47e720a80176f2269e43fc95b849045bf4006b7003c964f68a49 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-scripting-jvm/1.3.4…
+ac184612f258b460b5af4ca47f6bee0bab20a46fa818b86697ba41ef29626a31 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.…
+9bd39a256bdd9f7a8689f095c7eff85f8504ae03789e12cf20e6bbc689baefd1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-script-runtime/1.3.…
+358700f7a5b932bce30ebb0010641a9cade4b8499a60845717b2e22a39697f92 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.1.60/kotli…
+ca9778da4afbcd421b09384b257c9de47f610aec5c9165e0209228d25a337a20 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.0/kotlin…
+4c895c270b87f5fec2a2796e1d89c15407ee821de961527c28588bb46afbc68b | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotli…
+713db77c9a0c47a670f95c23b0051b9bd942b3a0ea1f6cc9bb5d9eaba1fa75ae | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.2.71/kotli…
+f38c84326543e66ed4895b20fb3ea0fca527fd5a040e1f49d0946ecf3d2b3b23 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.31/kotli…
+938182555f87aabdaabfa7ea22f29249a801d0882587fdb36efd6b69ab6d9483 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.31/kotli…
+6ea3d0921b26919b286f05cbdb906266666a36f9a7c096197114f7495708ffbc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotli…
+785b5b66f1146317d5ed5b18c8e0c10f83cd5c909434c799a4da9823f028cd63 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.41/kotli…
+e6f05746ee0366d0b52825a090fac474dcf44082c9083bbb205bd16976488d6c | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotli…
+704fd78960ae046428f69bcd5b951c122e4c180c9400238a866e12cb18494a61 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotli…
+63999687ff2fce8a592dd180ffbbf8f1d21c26b4044c55cdc74ff3cf3b3cf328 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.7…
+a8c3ed5892032b9e9395524a4da2953975c99628b932df3336b25d546e7c6693 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.2.7…
+d6e9c54c1e6c4df21be9395de558665544c6bdc8f8076ea7518f089f82cd34fc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.3…
+43f118ba3aa72a531d66d64cdd4223fa612b7fac57030ce9148ffb4a55cc3afc | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.3…
+6c91dea17d7dce5f0b550c3de3305767e5fb46247b6d1eb7eca0ca1fe18458de | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.4…
+d2e537cd1f7705276242d8cc903a0286b6dc86b41b6e728e967ef719022f2e15 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.4…
+8ce678e88e4ba018b66dacecf952471e4d7dfee156a8a819760a5a5ff29d323c | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.5…
+b6396fe802d7bc76a381485e266cb975f3b2f2d3dd9bf7213aab6ca27a561fc1 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.5…
+b136bd61b240e07d4d92ce00d3bd1dbf584400a7bf5f220c2f3cd22446858082 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/…
+941426d95526c828e794791a1da889b62f1f29e0220cf2f2e8dc09b6197080b3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/…
+dbf77e6a5626d941450fdc59cbfe24165858403c12789749a2497265269859a3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.31/…
+7c9af71bea2bd234d822216cf826ac3960a16a157e69669e5788485ff2800f68 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.31/…
+ac3c8abf47790b64b4f7e2509a53f0c145e061ac1612a597520535d199946ea9 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/…
+845c33f0e9ed5f66bca2d7ed39873f3e75920c5e33de984c25c48760f79594b3 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/…
+ad6acd219b468a532ac3b3c5aacbfd5db02d0ffcf967e2113e4677e2429490f6 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.31/…
+5cb7c7867f97ce48ef211c79f975b77de5724ac13e0ae27c1da2613929897427 | https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.31/…
+8f52859322d3c8e38c770ae31a4df9b2896df487fce608f9aff3b640a4026c3c | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
+7f966ea79ea96db23ef9f52e9670166ea9c6f1080219fc27f27362f87fc2db80 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-androi…
+ac423f8a0aa4b4e74529696ff82c0171f81a8c8ab182a1965dff25e69c1f7844 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+82fe57e97f3f91561fe29bca615d45908ecb0ddea3e8d2cb0affd06de964872f | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+9509e8ceba3d4917ec9bbdb74abcfa098d54ab4b86a86b33655ea9837193031d | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+5756b5a320d56c2b500446ea13798ec064eddf759f3da18cd3e1d1691a6b6a87 | https://jcenter.bintray.com/org/jetbrains/kotlinx/kotlinx-coroutines-core/1…
+1917871c8deb468307a584680c87a44572f5a8b0b98c6d397fc0f5f86596dbe7 | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
+5c415a9d8585200de4be1947e15291cc79f599b06249375f5c9ea22d4b2d090f | https://jcenter.bintray.com/org/jetbrains/trove4j/trove4j/20160824/trove4j-…
+a31ff7d77163c0deb09e7fee59ad35ae44c2cee2cc8552a116ccd1583d813fb4 | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.jar
+27cb450b6c367a00bd8362519907f84defac7b12086c64d4d6e97e33ab873ead | https://jcenter.bintray.com/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
+dd8971c74a4e697899a8e95caae4ea8760ea6c486dc6b97b1795e75760420461 | https://jcenter.bintray.com/org/ow2/asm/asm/6.0/asm-6.0.jar
+c2bc497e197112e699085426bbb45b1ab0be8002da68267a3b1f450a0312c32e | https://jcenter.bintray.com/org/ow2/asm/asm/6.0/asm-6.0.pom
+2f1a6387219c3a6cc4856481f221b03bd9f2408a326d416af09af5d6f608c1f4 | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.j…
+d3aaf42e40e3e24aabda53b5de4de5e17cb78e06549bf37312dca6c77e251054 | https://jcenter.bintray.com/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.p…
+f1bce5c648a96a017bdcd01fe5d59af9845297fd7b79b81c015a6fbbd9719abf | https://jcenter.bintray.com/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.jar
+90f4f29473afb957229016eb5741954976cc1b67bc049b3981c0d1e653ad5cdd | https://jcenter.bintray.com/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.pom
+791d064bb9ecc9a46d43bc9efecd74c91464dfc451f321b802d2261e2ccd7d14 | https://jcenter.bintray.com/org/ow2/asm/asm-parent/6.0/asm-parent-6.0.pom
+887998fb69727c8759e4d253f856822801e33f9fd4caa566b3ac58ee92106215 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.jar
+36887e0d7fdb185a92378a38ea45e596a97f10f385c5d050eb6252454ee701b4 | https://jcenter.bintray.com/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
+356afebdb0f870175262e5188f8709a3b17aa2a5a6a4b0340b04d4b449bca5f6 | https://jcenter.bintray.com/org/ow2/asm/asm-util/6.0/asm-util-6.0.jar
+3cdfc61f988d167b97503419da82a5808b20f4205aeb46c394e6e7ffd3211f12 | https://jcenter.bintray.com/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
+51215c67d2c068d8b7d2f6f80f51372a098075deccc448d4bdd7b987ba8328fb | https://jcenter.bintray.com/org/ow2/ow2/1.3/ow2-1.3.pom
+b51f8867c92b6a722499557fc3a1fdea77bdf9ef574722fe90ce436a29559454 | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fb40265f982548212ff82e362e59732b2187ec6f0d80182885c14ef1f982827a | https://jcenter.bintray.com/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
+d4e441fda1b3ad70b266793cc4b6d02bec8720875b796fadc063fc713f948549 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.24/snakeyaml-1.24-android.…
+174d423722256823edbe2af8d7e3385c4645cf72382a22da0485b3b674394f37 | https://jcenter.bintray.com/org/yaml/snakeyaml/1.24/snakeyaml-1.24.pom
+3a616a32f433e9e23f556b38575c31b013613d3ae85206263b7625fe1f4c151a | https://maven.google.com/android/arch/core/common/1.1.1/common-1.1.1.jar
+eb91acbeeaccc7fa382f88b02a22d5eddf314665bbb8fed090c067b703f50a5c | https://maven.google.com/android/arch/core/common/1.1.1/common-1.1.1.pom
+c3215aa5873311b3f88a6f4e4a3c25ad89971bc127de8c3e1291c57f93a05c39 | https://maven.google.com/android/arch/core/runtime/1.1.1/runtime-1.1.1.aar
+30453099142d085d801460a20d7e02a3f4d3004238879eaeb62083f59f1193a9 | https://maven.google.com/android/arch/core/runtime/1.1.1/runtime-1.1.1.pom
+8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56 | https://maven.google.com/android/arch/lifecycle/common/1.1.1/common-1.1.1.j…
+1742e74f222d06ea26f811191adf18e4cb74213b785e3f5d0d930224e83b4e82 | https://maven.google.com/android/arch/lifecycle/common/1.1.1/common-1.1.1.p…
+7078b5c8ccb94203df9cc2a463c69cf0021596e6cf966d78fbfd697aaafe0630 | https://maven.google.com/android/arch/lifecycle/common-java8/1.1.1/common-j…
+24ae9a6ad8234173ba20eef298fbd56ed3dff618698cedbbe6b0515d24862d0a | https://maven.google.com/android/arch/lifecycle/common-java8/1.1.1/common-j…
+429426b2feec2245ffc5e75b3b5309bedb36159cf06dc71843ae43526ac289b6 | https://maven.google.com/android/arch/lifecycle/extensions/1.1.1/extensions…
+e7289037e703c2608f46a727deab8937a312a922537f6d9bdfba5a56cd8da50a | https://maven.google.com/android/arch/lifecycle/extensions/1.1.1/extensions…
+50ab0490c1ff1a7cfb4e554032998b080888946d0dd424f39900efc4a1bcd750 | https://maven.google.com/android/arch/lifecycle/livedata/1.1.1/livedata-1.1…
+e8db306738739a616a74c38533a91cc066ee194fd45f492f188164e6cb1b856e | https://maven.google.com/android/arch/lifecycle/livedata/1.1.1/livedata-1.1…
+d6fdd8b985d6178d7ea2f16986a24e83f1bee936b74d43167c69e08d3cc12c50 | https://maven.google.com/android/arch/lifecycle/livedata-core/1.1.1/livedat…
+67a11cd85fd5c96ecdb84538e1eb58d7be59200e7d36d99943f31ecb514fe2a1 | https://maven.google.com/android/arch/lifecycle/livedata-core/1.1.1/livedat…
+c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550 | https://maven.google.com/android/arch/lifecycle/runtime/1.1.1/runtime-1.1.1…
+c7a7d3c2a9d6c21d8b6d470933b9472c733a4799b3ff702081b608adf1c7e592 | https://maven.google.com/android/arch/lifecycle/runtime/1.1.1/runtime-1.1.1…
+7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a | https://maven.google.com/android/arch/lifecycle/viewmodel/1.1.1/viewmodel-1…
+deae2518ee1d17db319fbaf4055e32d591d58569eb9ccad53d8d323cf1840555 | https://maven.google.com/android/arch/lifecycle/viewmodel/1.1.1/viewmodel-1…
+0baae9755f7caf52aa80cd04324b91ba93af55d4d1d17dcc9a7b53d99ef7c016 | https://maven.google.com/androidx/annotation/annotation/1.0.0/annotation-1.…
+a179c12db43d9c0300c9db63f4811db496504be5401b951d422b78490ad1e5b4 | https://maven.google.com/androidx/annotation/annotation/1.0.0/annotation-1.…
+52886c0ef6cfa492d07b40c3952201d6d2f0cfc680144fbefc69d2d5cb786c25 | https://maven.google.com/androidx/databinding/databinding-common/3.4.2/data…
+fb5c804e2d81186e9e63e45b7e97eec54aa6f5d502b763abfbb0c57b62b86b4c | https://maven.google.com/androidx/databinding/databinding-common/3.4.2/data…
+770b6a82da0684f93d037ed5d241248cb25862ed14ecd7d9ec8c756153266051 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
+6082c0a366fac7506c65d276ecbb25b3a053428a4c1f534cd2568c1f12f23e52 | https://maven.google.com/androidx/databinding/databinding-compiler-common/3…
+7bad7a188804adea6fa1f35d5ef99b705f20bd93ecadde484760ff86b535fefc | https://maven.google.com/androidx/lifecycle/lifecycle-common/2.0.0/lifecycl…
+04d525073469214d0c99e81aaa875dd548ba32b82945abd8326bc50229df700d | https://maven.google.com/androidx/lifecycle/lifecycle-common/2.0.0/lifecycl…
+fda5a08856ec82fc05e4dc37bd4eea93c9d02c231fd828d6b8ce2c6a42f79271 | https://maven.google.com/androidx/test/core/1.1.0/core-1.1.0.aar
+8da5bb4dfb16eef6f181394875f19eda1b967006d55e116d89edfffdabbdfbb6 | https://maven.google.com/androidx/test/core/1.1.0/core-1.1.0.pom
+af9c385fb753e4ee9f7def800dbbc4a25841bec95727e3ef30e9d04d76b73fe9 | https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espress…
+3083aa9b88cea441ac67eb8336e0a48549d0729543325f1c01cb5b709213b849 | https://maven.google.com/androidx/test/espresso/espresso-core/3.1.0/espress…
+c1a6a7add4f5d51627539fb8875a6cc3285d51638f6d638ee32f58254861f482 | https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.…
+5358b36808107018c01956636c602ab8c33ad4534eee89f8710449d5ad19a980 | https://maven.google.com/androidx/test/espresso/espresso-idling-resource/3.…
+8d4733213eeb8d071f969ea5b04f6559dc4e180cdc6fa9254aacdc14a3d3f4b7 | https://maven.google.com/androidx/test/ext/junit/1.1.0/junit-1.1.0.aar
+419d39993f070e881b610787b79780b85d05697ce45667b4a49b671ec12382ca | https://maven.google.com/androidx/test/ext/junit/1.1.0/junit-1.1.0.pom
+f559f4ebbb0a62994991b02f1297da654cf1286f9877ad3310ce068c67fea03a | https://maven.google.com/androidx/test/monitor/1.1.0/monitor-1.1.0.pom
+ecbc74d5eb4a004a676cc26b550ae94bd685a9088b84f6eea42bf320558af237 | https://maven.google.com/androidx/test/monitor/1.1.1/monitor-1.1.1.aar
+31b3930c47a3890ab0071ae16f0cc258bff2f6c7ee33f476e8e994934da41dbc | https://maven.google.com/androidx/test/monitor/1.1.1/monitor-1.1.1.pom
+0c5c87df67b358c1a17765357138ea1d4bb58c61159ae635b4cb4dcaa3bb5986 | https://maven.google.com/androidx/test/rules/1.1.0/rules-1.1.0.aar
+d263d896ba276dcaf2e182a66ce65fb23a2636a008c61d0b28178cffb330c323 | https://maven.google.com/androidx/test/rules/1.1.0/rules-1.1.0.pom
+80ac63609299116f4c1ffa5e206eb75eeac7006013880b47e5b09691a89b4045 | https://maven.google.com/androidx/test/runner/1.1.0/runner-1.1.0.aar
+7d4e4bd35a1e8a18b3c87765866703c4497fef2254f210c5dfea3373d0d4d59c | https://maven.google.com/androidx/test/runner/1.1.0/runner-1.1.0.pom
+5e4f3b90995be63f3c8eeecce120c588a98c6aad3b54f60ad4c80b5418c4b012 | https://maven.google.com/com/android/databinding/baseLibrary/3.4.2/baseLibr…
+63da0e18ab10800d448b0d8ab2171bf9a2e273d06300a7c79fd39d7fa6effee1 | https://maven.google.com/com/android/databinding/baseLibrary/3.4.2/baseLibr…
+271ecbc906cda8dcd9e655ba0473129c3408a4189c806f616c378e6fd18fb3b7 | https://maven.google.com/com/android/support/animated-vector-drawable/28.0.…
+d4783f9cce5b193cb59486fa9fd9f06e828fe4d2d9a5744fab372b9a4a95ecca | https://maven.google.com/com/android/support/animated-vector-drawable/28.0.…
+a3a8e5230359746ed91801579b5fbe4668e3b1c4e6a14c7d67c8f58cb0311752 | https://maven.google.com/com/android/support/appcompat-v7/28.0.0/appcompat-…
+d9f2abe237eab1b651694c0d292dea9ec5b341ae70bfaafffbbb5d46b78c5e17 | https://maven.google.com/com/android/support/appcompat-v7/28.0.0/appcompat-…
+115bde87721f7334579b0c735f60dd7c98af1bb7f34010c5b0553b95dc351aa2 | https://maven.google.com/com/android/support/asynclayoutinflater/28.0.0/asy…
+790f1d0ca7c1a65d5afb40baf5b5423fa3163f6f90a47f3193ae0c8bb11c6e78 | https://maven.google.com/com/android/support/asynclayoutinflater/28.0.0/asy…
+bc9e6b0e06ce1205f1db34f0e6193019613d19cfeb54cdccea722340d1c60f26 | https://maven.google.com/com/android/support/cardview-v7/28.0.0/cardview-v7…
+887ea96fc365743d8735b0446df3fbe77eb5a2e203acab1423346aa3319d8395 | https://maven.google.com/com/android/support/cardview-v7/28.0.0/cardview-v7…
+93c258c8a09f531a267653829742c0f8f6da0e348b11cb8655b0855628f2d4f0 | https://maven.google.com/com/android/support/collections/28.0.0/collections…
+f6c4146b8b2029e52971402d1c29ed59d2a98b4fab33ef8e6f44233ac0cf27ba | https://maven.google.com/com/android/support/collections/28.0.0/collections…
+27b4e5c0b80d3ff8b92f4c93b3b4d3ecf16c01589f4cdf70ca7cf64cb42d8122 | https://maven.google.com/com/android/support/constraint/constraint-layout/1…
+d48935ae1641774e03ce24b0b3f7aeee66931a1e5d9ad4d47b5f93d237ea07fb | https://maven.google.com/com/android/support/constraint/constraint-layout/1…
+2cafbe356f71c208013d021f32943904798cd6459e5107f9fe27000eb5bc2aef | https://maven.google.com/com/android/support/constraint/constraint-layout-s…
+47be4ebd35a100945bac20b2efba158fe032520229a73bc060ac57986d132dfa | https://maven.google.com/com/android/support/constraint/constraint-layout-s…
+9dfacd80423dc979048fbaed83c0ee543c46259feb2417377e79a656888d3892 | https://maven.google.com/com/android/support/coordinatorlayout/28.0.0/coord…
+cb83674d682f81daf7b2d43e965a18b83ef4f5bb02a69d14bb20175753361a4f | https://maven.google.com/com/android/support/coordinatorlayout/28.0.0/coord…
+87feffe742b8d62ca8a9833abe564838bf6a672e31c7ad1306ec4006adf90d21 | https://maven.google.com/com/android/support/cursoradapter/28.0.0/cursorada…
+5727103ce28357bce8f74655c0994508d55d060f9ec6dafba0103e7fe55f275b | https://maven.google.com/com/android/support/cursoradapter/28.0.0/cursorada…
+98db03845f994e08248bf701c1ff0ccaa12e70f94251ec9272900f0f694e072b | https://maven.google.com/com/android/support/customview/28.0.0/customview-2…
+187c2729dfd51ef8db5963598d14da67bad5ceb4ea5252f382044249327010e5 | https://maven.google.com/com/android/support/customview/28.0.0/customview-2…
+7874ad1904eedc74aa41cffffb7f759d8990056f3bbbc9264911651c67c42f5f | https://maven.google.com/com/android/support/design/28.0.0/design-28.0.0.aar
+ba16a815266a3b5ce69d57e4c40ba7eb22ee91b8016f2fa3a9d73bd6917e31b4 | https://maven.google.com/com/android/support/design/28.0.0/design-28.0.0.pom
+47cdcd3e9302b7b064923f05487a5c03babbd9bbda4726b71e97791fab5d4779 | https://maven.google.com/com/android/support/documentfile/28.0.0/documentfi…
+5ffda693e34d152463f8a9a6c00407fb11747a2271c278e082a287abad3f9cba | https://maven.google.com/com/android/support/documentfile/28.0.0/documentfi…
+8f6809afae4793550c37461c9810e954ae6a23dbb4d23e5333bf18148df1150a | https://maven.google.com/com/android/support/drawerlayout/28.0.0/drawerlayo…
+424f2d0b4a3ac46e0ad5349192ad0ecdc0bfcb10ed91767a08230cd16a3cfe36 | https://maven.google.com/com/android/support/drawerlayout/28.0.0/drawerlayo…
+7bc7ee86a0db39a4b51956f3e89842d2bd962118d57d779eb6ed6b34ba0677ea | https://maven.google.com/com/android/support/interpolator/28.0.0/interpolat…
+296b5f5eaa5cb38f67bca092aaf56bf6d23a13aa07cd81a377f861f52d609f9b | https://maven.google.com/com/android/support/interpolator/28.0.0/interpolat…
+920b85efd72dc33e915b0f88a883fe73b88483c6df8751a741e17611f2460341 | https://maven.google.com/com/android/support/loader/28.0.0/loader-28.0.0.aar
+9a9bad607f4b946d1503fe9b751af156da361e642e86f4fb5355b89b9557e8df | https://maven.google.com/com/android/support/loader/28.0.0/loader-28.0.0.pom
+d287c823af5fdde72c099fcfc5f630efe9687af7a914343ae6fd92de32c8a806 | https://maven.google.com/com/android/support/localbroadcastmanager/28.0.0/l…
+351a941335421113dff16b1ff9d4618bbcb093fd1508fc8639f18c5533313091 | https://maven.google.com/com/android/support/localbroadcastmanager/28.0.0/l…
+317202dddb953d152d0677dbd8bb3b9d8ef8dcd0bdee0da4f40c98826e4960e6 | https://maven.google.com/com/android/support/palette-v7/28.0.0/palette-v7-2…
+b609f2c1a2fb3edc2f9ed02214660c90e16103d992307ae531e2a1a5bae82138 | https://maven.google.com/com/android/support/palette-v7/28.0.0/palette-v7-2…
+75eabe936d1fc3b178450a554c4d433466036f2be6d6dccdf971eac9590fdbf5 | https://maven.google.com/com/android/support/preference-v7/28.0.0/preferenc…
+3c09d39caf1c2b61877d9da5df6fc158bd28a4cc924db58e1936c8fef16ad835 | https://maven.google.com/com/android/support/preference-v7/28.0.0/preferenc…
+4be8a812d73e4a80e35b91ceae127def3f0bb9726bf3bc439aa0cc81503f5728 | https://maven.google.com/com/android/support/print/28.0.0/print-28.0.0.aar
+e15dd914e64f5cfcbd91aeb1b921fd6ead39c21926e171a4955dd12c849c6e78 | https://maven.google.com/com/android/support/print/28.0.0/print-28.0.0.pom
+eb296414c1f6d4c7b522f69fe50588ea85297855db0e7806c24eb4f75409587d | https://maven.google.com/com/android/support/recyclerview-v7/28.0.0/recycle…
+3b280edfcf646b1f51256b2b6b581d8b0194514fd248666c3dfdc0a04edb8686 | https://maven.google.com/com/android/support/recyclerview-v7/28.0.0/recycle…
+d1d234f66a1b36a9aee9b94fa6c66f97128c0828078c8e889e9037ec898cd600 | https://maven.google.com/com/android/support/slidingpanelayout/28.0.0/slidi…
+be47ac0d8fd8bdd783071596c5ea271362484752d282fb8c3421d1853ad02619 | https://maven.google.com/com/android/support/slidingpanelayout/28.0.0/slidi…
+3eae72fcf02a175efa1377886e6500e6147f92104ff43ee92b9b69d59357b90d | https://maven.google.com/com/android/support/support-annotations/26.1.0/sup…
+5d5b9414f02d3fa0ee7526b8d5ddae0da67c8ecc8c4d63ffa6cf91488a93b927 | https://maven.google.com/com/android/support/support-annotations/28.0.0/sup…
+a086481e014492fd3a4d5f4459875b8a70a201258f0b225836212ee29df0091a | https://maven.google.com/com/android/support/support-annotations/28.0.0/sup…
+e17e3b01dbea3f9ea1c86943292f903ca93d2231c6242e456e0b6a9c5817118a | https://maven.google.com/com/android/support/support-compat/28.0.0/support-…
+6b79a06c2282fc0f961cfd826a26ad41ff5c457b0c11d9a6b6a63e51f53d961a | https://maven.google.com/com/android/support/support-compat/28.0.0/support-…
+bbc7f65fc95649464733af373361532ab5f9f3b749c3badaa2bbf27e574b6c6f | https://maven.google.com/com/android/support/support-core-ui/28.0.0/support…
+708ad4a6a48ce625aee395fd0625ae5441fee8f0e25861406603f765e679b544 | https://maven.google.com/com/android/support/support-core-ui/28.0.0/support…
+c81e1e98ca3cb2edae002c69cf35b22aec364b8cb2f1042c97e206eb5790ac41 | https://maven.google.com/com/android/support/support-core-utils/28.0.0/supp…
+86a744b8739e8b354d0ecaec35dd943dea9a66f0296a3a9c1eb384fc93a4eaf7 | https://maven.google.com/com/android/support/support-core-utils/28.0.0/supp…
+3772fc738ada86824ba1a4b3f197c3dbd67b7ddcfe2c9db1de95ef2e3487a915 | https://maven.google.com/com/android/support/support-fragment/28.0.0/suppor…
+d24bdade5b77b26b82d39beda9fa0f42bcdf61cb5661a3c66ddfde3f77869b07 | https://maven.google.com/com/android/support/support-fragment/28.0.0/suppor…
+266eff9605f515013eee1ebdbd8818a9270696dc807f34bbcc5fc11fb61a22c7 | https://maven.google.com/com/android/support/support-media-compat/28.0.0/su…
+e88505a92565f4c0fabb1c9a40326a339a2d51ee843c8a097828a3a85c934f27 | https://maven.google.com/com/android/support/support-media-compat/28.0.0/su…
+8b9031381c678d628c9e47b566ae1d161e1c9710f7855c759beeac7596cecf30 | https://maven.google.com/com/android/support/support-v4/28.0.0/support-v4-2…
+428da44d913e410db4dfcf732faa0082283e4eb6563a98a0bfb92022460a4dd4 | https://maven.google.com/com/android/support/support-v4/28.0.0/support-v4-2…
+f658986d968172bccfed28578471c96050780fe5e133861e4d331069cc373f4d | https://maven.google.com/com/android/support/support-vector-drawable/28.0.0…
+1e54416142b0f1274db09bbea1808f5cf9311c895bb0d84adaa18a7b5132aadc | https://maven.google.com/com/android/support/support-vector-drawable/28.0.0…
+a3b41f7f6730866b49865e86e49f988d4858699765f534300fb2ff5f9325e712 | https://maven.google.com/com/android/support/swiperefreshlayout/28.0.0/swip…
+c2e08d32b75d98a844f20be02510c830f7e5b53f64907af2270a898d59dc872f | https://maven.google.com/com/android/support/swiperefreshlayout/28.0.0/swip…
+45d09fc51284c17bbab300f5122512ac7d7348a6d23bda2051648bbe76cc9aa5 | https://maven.google.com/com/android/support/transition/28.0.0/transition-2…
+771e8fe3b4dc0be4289db8e542bf134d7a032d8addedea070a3e951dc016d078 | https://maven.google.com/com/android/support/transition/28.0.0/transition-2…
+60eb1cb08f71b65c3f6123135e03ebeb5930b5e126e1e5b2ac91b386908c9d02 | https://maven.google.com/com/android/support/versionedparcelable/28.0.0/ver…
+e7d6f726e702b418998fab6284df2f509f5acdf9203ced37c8d1274f9e38447b | https://maven.google.com/com/android/support/versionedparcelable/28.0.0/ver…
+013c4c53058758ec104dbae970be58159f75dfe342ba8b937d15ff5282e35ffc | https://maven.google.com/com/android/support/viewpager/28.0.0/viewpager-28.…
+080bba6573f6a4a9b2af443bf4ecb2a7ac4302a027274cc9bf9fdd51f409430e | https://maven.google.com/com/android/support/viewpager/28.0.0/viewpager-28.…
+22189a009a57c1741f74deeae5442a101c1c5c8bd6c6404e8e87a7d7f58044e4 | https://maven.google.com/com/android/tools/analytics-library/crash/26.4.2/c…
+aea2ab26c83212e1b81b5d2e91056ea41b1dbbc2f0801bbb3921a405da6bf685 | https://maven.google.com/com/android/tools/analytics-library/crash/26.4.2/c…
+2f371f5b1f551e85ab08be4d6a2873471b3d44afd1ebf6aa3298f3b796bf691f | https://maven.google.com/com/android/tools/analytics-library/protos/26.2.1/…
+c7758a7ca3a1d03b26fe4ef14532f4ffbe83c7f28ee3c9146986573fc8b92e3e | https://maven.google.com/com/android/tools/analytics-library/protos/26.2.1/…
+39f429bc72340a45ea1b77ade9a4aa11ecebcb2a9dd0bb3619bfedc40800af0e | https://maven.google.com/com/android/tools/analytics-library/protos/26.4.2/…
+ff1ca6ebc2153aaf2ec92880c3240971b4aee894b19bd145f6385fbb18808029 | https://maven.google.com/com/android/tools/analytics-library/protos/26.4.2/…
+4c1e4e705fa4d45f23aaea230557f6508155012d9c296337787c1d7b26a97f5a | https://maven.google.com/com/android/tools/analytics-library/shared/26.2.1/…
+4eacca0543cb52098c7a322b76eb431e1e27ceaaf2094a099dde6c0639a3ef01 | https://maven.google.com/com/android/tools/analytics-library/shared/26.2.1/…
+a3ee9f50da48f12d3677f18372fffdcf51f3c340335e335fb71365c92e31d1de | https://maven.google.com/com/android/tools/analytics-library/shared/26.4.2/…
+95cadcfabab9a6a7e8a2146938de653b559161c098d82a9d34621bbd2b8cdab9 | https://maven.google.com/com/android/tools/analytics-library/shared/26.4.2/…
+4a624ecc976539f755ddb0bb8dfc2dd3d08326cfec59a098dbd70f701ca7fb75 | https://maven.google.com/com/android/tools/analytics-library/tracker/26.2.1…
+fd1923c63290e6cdb1362483218fd140cb15b82ec537d1a50447bb23acd05f90 | https://maven.google.com/com/android/tools/analytics-library/tracker/26.2.1…
+b888eba61ebe734f8e50b60fa1bf38d9144dc031abb3704d6f2b4e445a53196e | https://maven.google.com/com/android/tools/analytics-library/tracker/26.4.2…
+ccfc624a522641d858e7a6477abb698889bd81de584d04b705a737bd59d7c784 | https://maven.google.com/com/android/tools/analytics-library/tracker/26.4.2…
+7391c6a1e080174b96e64ceb078dadd31ce4d8a2d2fee0ec65be202126f90f24 | https://maven.google.com/com/android/tools/annotations/26.2.1/annotations-2…
+64d79783e2dffc1fec58146051bdd93a2fca23113a5b8443db6eb1d77dedfdec | https://maven.google.com/com/android/tools/annotations/26.2.1/annotations-2…
+1877849936f48cd65857bf448743f9a0bf93ed47fe57527d9ad8af875024888d | https://maven.google.com/com/android/tools/annotations/26.4.2/annotations-2…
+c17bdf198c7609ce6fc63169800b26e366ff3131b8360ca9979c8234eba90c44 | https://maven.google.com/com/android/tools/annotations/26.4.2/annotations-2…
+8e0ae5bfe813ed34a8ddbd8a71cd356d84f0fe70a74a7582c029d4444d9a2cab | https://maven.google.com/com/android/tools/build/aapt2/3.4.2-5326820/aapt2-…
+a7d42baee36d11ebef1d15431ebffed2da98cc088a3aecfdf782463194977368 | https://maven.google.com/com/android/tools/build/aapt2/3.4.2-5326820/aapt2-…
+a503219b89b0aaf7b7c6c9b3b17d69e655a6c619072b684a1ea4fbf1d7dc49da | https://maven.google.com/com/android/tools/build/aapt2-proto/0.3.1/aapt2-pr…
+31e5f0e56b59a7c1433ab4a0396fd6178ef28def6cf6eb58e235d7cf40efd01d | https://maven.google.com/com/android/tools/build/aapt2-proto/0.3.1/aapt2-pr…
+7cb448a8317dc3b82629898c211895862453eee62acb12ad23c32ccdc2c942e2 | https://maven.google.com/com/android/tools/build/apksig/3.4.2/apksig-3.4.2.…
+bf7a23f999b0ad601ff9bf7b1e3987993587e51527e1b00991f4cc85370b2fc1 | https://maven.google.com/com/android/tools/build/apksig/3.4.2/apksig-3.4.2.…
+e00dbbd0997beba194e18d2a62647e42b2e62192652796bcbe5ea9b06687ba5c | https://maven.google.com/com/android/tools/build/apkzlib/3.4.2/apkzlib-3.4.…
+256d360aa2524cebf97cf245b93e175b7062719c68d015297cfef37cfe9930ab | https://maven.google.com/com/android/tools/build/apkzlib/3.4.2/apkzlib-3.4.…
+3d104b1e0083aac49f5ea8d5e0e0cd740dd333bef2683a3214e1cd1953ffd661 | https://maven.google.com/com/android/tools/build/builder/3.4.2/builder-3.4.…
+0e7df1472a90a67d611f17528dfc2b6bcbc9fa7f799573ba79ec4407305a2ad8 | https://maven.google.com/com/android/tools/build/builder/3.4.2/builder-3.4.…
+a9f68e6abcec122f9cb5ad352d3f05a3eb03acbcdca95e4d25c16310c2c965ff | https://maven.google.com/com/android/tools/build/builder-model/3.2.1/builde…
+4d2a35833cb9afee4d37b68c16280f8afc64de0e7cecdac1022dbafa2473e31f | https://maven.google.com/com/android/tools/build/builder-model/3.2.1/builde…
+ddb36ca7fe72024bd53fbdd2700f1a9a9af5b1502062d59952eb3da7584fe413 | https://maven.google.com/com/android/tools/build/builder-model/3.4.2/builde…
+677521e59c49c5e9c99ae390bab53139d062f05764d7363894c1e1864ef0aff5 | https://maven.google.com/com/android/tools/build/builder-model/3.4.2/builde…
+533ac6c2b5884bb54967a33791f2628dfdfac7981af39417a333b43d4379b6be | https://maven.google.com/com/android/tools/build/builder-test-api/3.2.1/bui…
+16c4e26de8c9ce509a2e81eb4c571d5d6a6e792d9425dbc710dca93793a4e12d | https://maven.google.com/com/android/tools/build/builder-test-api/3.2.1/bui…
+40c62a008da4fa933cb20135227409d2953ed88ed68195e0f631d326c5675c46 | https://maven.google.com/com/android/tools/build/builder-test-api/3.4.2/bui…
+7d96325cc2fef2fa3898d121e936528f987caddbbab7cfddb524c6995b09ab1f | https://maven.google.com/com/android/tools/build/builder-test-api/3.4.2/bui…
+420bb34c44c9e3341583fa90bb4ad331db0b2ed902a5e75b9a420f4edd9f7894 | https://maven.google.com/com/android/tools/build/bundletool/0.7.2/bundletoo…
+e917f5fc3bef4e31107c1aaa0e47781e788be9d86682288f44cd4a3ad17b3459 | https://maven.google.com/com/android/tools/build/bundletool/0.7.2/bundletoo…
+536afc619d2678b80bd7d0b5674be249f05fad349a8717998b69d48f66062fb5 | https://maven.google.com/com/android/tools/build/gradle/3.4.2/gradle-3.4.2.…
+e1d38f808e126ada6b7f77cc1d66e7fce01d1e03941d14e38062d41b7ab37953 | https://maven.google.com/com/android/tools/build/gradle/3.4.2/gradle-3.4.2.…
+e6cddde562483c96b699be25fc91a78e141397e51a382eedae9b2c0e22ea22f5 | https://maven.google.com/com/android/tools/build/gradle-api/3.4.2/gradle-ap…
+cc23bd10f9843e57f6f2bb1f5731ac32e1d73696927f93c3ea2972d76de3b017 | https://maven.google.com/com/android/tools/build/gradle-api/3.4.2/gradle-ap…
+c9f8b016144cfb31c5aee92d47f34de23289167cac5e8ef68365b2dd05766f11 | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
+db025ad1bbc6896edf0f67cda1222ba9b7ec9a0187df7f4fd0a318475c758e4e | https://maven.google.com/com/android/tools/build/jetifier/jetifier-core/1.0…
+1dd481e7606ccb30868908d9ae80f27d1c5ba882f792532bd91ed731c54f4efb | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
+4973a6c6d7f89297a1cfea56c623cea72b3db3b4a49992afa00dd77ac052b89f | https://maven.google.com/com/android/tools/build/jetifier/jetifier-processo…
+8830573263361035d38cfdcb51e2db94029c93865b21334f5fbf8a27984281a6 | https://maven.google.com/com/android/tools/build/manifest-merger/26.2.1/man…
+56c44bf0b7adc2d174ec5a93502c9188ac3e5c48668a732fbb161d08d54dbe19 | https://maven.google.com/com/android/tools/build/manifest-merger/26.2.1/man…
+86a43c18ab36ae51b997784880492336c009891a05df7b40a574da51031c3f63 | https://maven.google.com/com/android/tools/build/manifest-merger/26.4.2/man…
+d2575b5e4a009a32dddfbae58fc882d54345ca29e1e9d550ac689ab637524b01 | https://maven.google.com/com/android/tools/build/manifest-merger/26.4.2/man…
+4de4a3d05e1c534c2db9e4588bf34082bb2bd232d8abb9727c430290ce225740 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
+7c62f3856e8abca1d79257925f26c12668693f5d95904056bbac88605cfd8575 | https://maven.google.com/com/android/tools/build/transform-api/2.0.0-deprec…
+a50aab2d6411ff68f4004a87c7e93d87d8e980a0ec3b352246549897ea2d78e5 | https://maven.google.com/com/android/tools/common/26.2.1/common-26.2.1.jar
+c5bd83a597baf99567c4469795d155c1928dc738e0eff398d96e38f8ad78b21f | https://maven.google.com/com/android/tools/common/26.2.1/common-26.2.1.pom
+bbda65fe64198125142ecc2079b62835f50ae105e51f34f8349ac129b72efd7c | https://maven.google.com/com/android/tools/common/26.4.2/common-26.4.2.jar
+612f0dcf0c4675737ae8e214bb5b16b8536aaa3cfb786dfa93245e6e8b450e73 | https://maven.google.com/com/android/tools/common/26.4.2/common-26.4.2.pom
+a4bf0a29a19980bf27269465cc782064656750b77c26728f82f9e148b705218b | https://maven.google.com/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1…
+79ba9d3e1f1d5b975a9e29d9261bd449c730f152ed4c5ebb3e297719eff050f0 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1…
+330e3eb76d2f96e3931a8cccdbf16435e92b3398dcaa8b65c8cd1034864de720 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.4.2/ddmlib-26.4.2…
+4aeb9585e81656f358fd1a7a45f8c711a9eef8a61ba88641e76f776cf4f1aa10 | https://maven.google.com/com/android/tools/ddms/ddmlib/26.4.2/ddmlib-26.4.2…
+72a83bf2839b1df9b1fbf67ba45d1bfb9f966cd774da4320c762b2be8f1688aa | https://maven.google.com/com/android/tools/dvlib/26.2.1/dvlib-26.2.1.jar
+1ca1b14c0281275a58b67cd5e3af180d65a105340d89f0766e6bd0eee6047281 | https://maven.google.com/com/android/tools/dvlib/26.2.1/dvlib-26.2.1.pom
+f34fa4196d78b1c36db2e016303d59935fdc2b1abd0b4e40b95fa63d6087c582 | https://maven.google.com/com/android/tools/dvlib/26.4.2/dvlib-26.4.2.jar
+fe401446f64f3531565ce332b09b0de5ca53134b3263ce931896f3f5d94460bf | https://maven.google.com/com/android/tools/dvlib/26.4.2/dvlib-26.4.2.pom
+4925ad1892c2687cb1a63427d440ef519c8c59215fefe0dc5d541d5d411fcafe | https://maven.google.com/com/android/tools/external/com-intellij/intellij-c…
+7cd28289534ac8effe3c4f18eccffc79eb5774c271da390ba49a34961e692881 | https://maven.google.com/com/android/tools/external/com-intellij/intellij-c…
+890258258338ddfdec138852d099fec389cdcdf1d0a9cb2d0775e4275cb3a05d | https://maven.google.com/com/android/tools/external/com-intellij/intellij-c…
+e772f888bf1cb338f5f6d7801516cb48e31b57f8d81ae07304b0ad1a2cb1c8dc | https://maven.google.com/com/android/tools/external/com-intellij/intellij-c…
+daa064fd708f340ee25fb9823c4c74104ac77f1370b76d907eb9ae6daec0a2ae | https://maven.google.com/com/android/tools/external/com-intellij/kotlin-com…
+1ccfc320980199e8bd65bcaa061514711aa7a8a8a46e420bf7be7a441565fb01 | https://maven.google.com/com/android/tools/external/com-intellij/kotlin-com…
+f97df41a49d2f9ec428d847b0691b55541d4b5d4db19d630cf8dc3f38cd34d4a | https://maven.google.com/com/android/tools/external/com-intellij/kotlin-com…
+7adec4d67ee1ea6cda230bdd549f275c4a5cf08230c9407f632953adc0e26434 | https://maven.google.com/com/android/tools/external/com-intellij/kotlin-com…
+f10f7258d2ab9189562cc0f9ad838c0378fdba439229173390a99de02ebac75b | https://maven.google.com/com/android/tools/external/org-jetbrains/uast/26.2…
+aa377092896a6dc69da9fcc84eecb410b7db12508581c43505bc921d8e90829b | https://maven.google.com/com/android/tools/external/org-jetbrains/uast/26.2…
+187b199e1744bd3e922fb52d8f3366311468bd263aab24c65ee989d7ce8c55c3 | https://maven.google.com/com/android/tools/external/org-jetbrains/uast/26.4…
+0f308532ff2c78cfbb61f563cf65e8cf408afb8a615598c512649a9c397177d4 | https://maven.google.com/com/android/tools/external/org-jetbrains/uast/26.4…
+ddbf4fca123733fa011595b1cc1f4ac2937ed327b60990711fafc33c775c2ade | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.2.1/l…
+21e06d8c4fb95d389b66a0613dd8dbb6cc88a336931035b61c6a71db174abca7 | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.2.1/l…
+52fbb3614feee0d5d474c35f8c533ff3fa090cbf0df46c06e4cf353cae1c3652 | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.4.2/l…
+d59ef58abb73f06650ce1d80641fe70a3908a071fc5f98267074e6e42f904360 | https://maven.google.com/com/android/tools/layoutlib/layoutlib-api/26.4.2/l…
+7848b82ae988b90dee259ae7c7e86e05cbf52db6cd21c8bbd38ce7df08f3f8c5 | https://maven.google.com/com/android/tools/lint/lint/26.2.1/lint-26.2.1.jar
+445ce6f3c911a11c0f4a1dff662baa5e2a9a6524281a4b60226cf25dd225b548 | https://maven.google.com/com/android/tools/lint/lint/26.2.1/lint-26.2.1.pom
+5eeb74d75aad007428ce5077f2c5c721cc7a2bb702b0525fa9605efad3afd7e8 | https://maven.google.com/com/android/tools/lint/lint/26.4.2/lint-26.4.2.jar
+ac7e208ce2e2bfece25498538c6a16b501a4813818149fc1f0670778b7bd6b24 | https://maven.google.com/com/android/tools/lint/lint/26.4.2/lint-26.4.2.pom
+3b57e739de567b98bc9ab56c2c0ee66fc026b4adf5843e8f9804ca0666a6f66e | https://maven.google.com/com/android/tools/lint/lint-api/26.2.1/lint-api-26…
+8c3ad3303516cfcb96aa367757a429dbd5f6b6fa63e0c3bff4213b63fe76f69b | https://maven.google.com/com/android/tools/lint/lint-api/26.2.1/lint-api-26…
+d12d58c8a2ccb68daa7cbd70a0904b8f05dfdfc6c3a1871923b1b903bf5bf4da | https://maven.google.com/com/android/tools/lint/lint-api/26.4.2/lint-api-26…
+d3cdb948a13f651daf42dba2b488e4cd76092cfc5c00993c653060fb298b7ec8 | https://maven.google.com/com/android/tools/lint/lint-api/26.4.2/lint-api-26…
+c86f4cc9aaee722ee4ad70062f7b5af91e9b041914af27adc09f545ab0fb3bc6 | https://maven.google.com/com/android/tools/lint/lint-checks/26.2.1/lint-che…
+d5760172fe3dedec8f1304420bc304c0c2cae1ee24972bba7ad9c03bf0ac679e | https://maven.google.com/com/android/tools/lint/lint-checks/26.2.1/lint-che…
+8a0246f594d685bda999a66b2409cb4e0da59e59a66021c9293fdb40cc49d879 | https://maven.google.com/com/android/tools/lint/lint-checks/26.4.2/lint-che…
+e9327b00b990f6b28f8cc974e98ea4436bbf03e2bc66ea4769970eb26dd840b5 | https://maven.google.com/com/android/tools/lint/lint-checks/26.4.2/lint-che…
+7e8e000f063f42f10ca209f51a48b332db1c4d3ac30979cc49c1877ef9e4b7f1 | https://maven.google.com/com/android/tools/lint/lint-gradle/26.4.2/lint-gra…
+9f370942017e7472655aaff53ad550429e459581adf0c78e5b1fb071f61cb9e3 | https://maven.google.com/com/android/tools/lint/lint-gradle/26.4.2/lint-gra…
+90c6a1a650a257abb5d445dde9c172d55e6d28ce943a35b4e263c4cb3dcc96b0 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.4.2/lint…
+a8496204c0e7def7adee23e3d0f7ff0117b92c4809ecc8d2c06fc6b18b53e7c6 | https://maven.google.com/com/android/tools/lint/lint-gradle-api/26.4.2/lint…
+7a6a5d2b18f69cf1b900d857c2632b4c683713c533295933b8b759f8cab4a877 | https://maven.google.com/com/android/tools/lint/lint-kotlin/26.2.1/lint-kot…
+c4c54f08f4dbdd379d6a9d6d3e1d66e0f2106d849591112742784ae62678b3c2 | https://maven.google.com/com/android/tools/lint/lint-kotlin/26.2.1/lint-kot…
+fa74dae09103faef703df38550ad8fa244c5b6d1bf90d6198be932292b3d9cc1 | https://maven.google.com/com/android/tools/repository/26.2.1/repository-26.…
+eb078adfb208eae7524d00d0ce03196a2c81353db78c7f9613885c19690cf2de | https://maven.google.com/com/android/tools/repository/26.2.1/repository-26.…
+5183d0d2493d588d7960f954221a29130b67f1ac5f78c2d6f69195346b69617a | https://maven.google.com/com/android/tools/repository/26.4.2/repository-26.…
+98702b96fb86f22c1f230316ae8172fd9e843929485bba86a1a01e97614a8434 | https://maven.google.com/com/android/tools/repository/26.4.2/repository-26.…
+759d4b292ca69a35cf961fca377b54158fc6c88108978006999442e80a011cf4 | https://maven.google.com/com/android/tools/sdk-common/26.2.1/sdk-common-26.…
+dabf483508f36704e8a1d7c29cda5135ad9cdb6169f556908182954ee88e0b1f | https://maven.google.com/com/android/tools/sdk-common/26.2.1/sdk-common-26.…
+df1e814bdcee8f60c1057a3df2b2cd6c089623414017283740eb50152f1e70c5 | https://maven.google.com/com/android/tools/sdk-common/26.4.2/sdk-common-26.…
+c7786e12c89c77e4daea2ebb991491821f90364cd5e06a02b56371a42084b3c0 | https://maven.google.com/com/android/tools/sdk-common/26.4.2/sdk-common-26.…
+248df7ad5eac4aeb6f96c394c76760de4b7b89ac056e54d0c21a739368b91b45 | https://maven.google.com/com/android/tools/sdklib/26.2.1/sdklib-26.2.1.jar
+7031d2d09683996ac126074be3de6df9b3de80f7e0f10b80a6e8754f69c80028 | https://maven.google.com/com/android/tools/sdklib/26.2.1/sdklib-26.2.1.pom
+ebec9d8e0a140b376aade276b08572cb1f8cf954249b469bee6dce6fd5a45cd4 | https://maven.google.com/com/android/tools/sdklib/26.4.2/sdklib-26.4.2.jar
+768b365f2486e344d012d5b4b9b195fde8bfb442c23dca89d258a7766cdba5c8 | https://maven.google.com/com/android/tools/sdklib/26.4.2/sdklib-26.4.2.pom
+42ebde4e470b5c09c8ef19d452fad3d70459a7a4a8f06ce20114a081343e7e0e | https://plugins.gradle.org/m2/org/mozilla/apilint/apilint/0.2.7/apilint-0.2…
+f1efc89ead9ef1636f072654111abd650f3cb8ce7bb817ce99f15cd969ac3f6c | https://plugins.gradle.org/m2/org/mozilla/apilint/apilint/0.2.7/apilint-0.2…
diff --git a/projects/geckoview/mozconfig-android-aarch64 b/projects/geckoview/mozconfig-android-aarch64
new file mode 100644
index 0000000..dc72f3f
--- /dev/null
+++ b/projects/geckoview/mozconfig-android-aarch64
@@ -0,0 +1,37 @@
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-aarch64-linux-android
+mk_add_options MOZ_APP_DISPLAYNAME="Tor Browser"
+export MOZILLA_OFFICIAL=1
+CC="clang"
+CXX="clang++"
+
+ac_add_options --with-android-min-sdk=21
+
+ac_add_options --enable-optimize
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=aarch64-linux-android
+ac_add_options --with-android-ndk=/var/tmp/dist/fenix-android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-sdk=/var/tmp/dist/fenix-android-toolchain/android-sdk-linux
+ac_add_options --with-gradle=/var/tmp/dist/fenix-android-toolchain/gradle/gradle-5.1.1/bin/gradle
+
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
+ac_add_options --disable-tor-browser-update
+ac_add_options --disable-verify-mar
+
+# We only use beta GeckoView for now
+ac_add_options --enable-update-channel=beta
+
+ac_add_options --enable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-debug
+ac_add_options --disable-rust-debug
+ac_add_options --disable-crashreporter
+ac_add_options --disable-webrtc
+
+ac_add_options --enable-proxy-bypass-protection
+
+# Disable telemetry
+ac_add_options MOZ_TELEMETRY_REPORTING=
diff --git a/projects/geckoview/mozconfig-android-all b/projects/geckoview/mozconfig-android-all
new file mode 100644
index 0000000..c92d320
--- /dev/null
+++ b/projects/geckoview/mozconfig-android-all
@@ -0,0 +1,8 @@
+ac_add_options --enable-application=mobile/android
+ac_add_options --disable-compile-environment
+# We want to have a similar fat .aar versioning as Mozilla and make it clear we
+# are on the beta channel for GeckoView
+ac_add_options --enable-update-channel=beta
+
+ac_add_options --with-android-sdk=/var/tmp/dist/fenix-android-toolchain/android-sdk-linux
+ac_add_options --with-gradle=/var/tmp/dist/fenix-android-toolchain/gradle/gradle-5.1.1/bin/gradle
diff --git a/projects/geckoview/mozconfig-android-armv7 b/projects/geckoview/mozconfig-android-armv7
new file mode 100644
index 0000000..36140a5
--- /dev/null
+++ b/projects/geckoview/mozconfig-android-armv7
@@ -0,0 +1,37 @@
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-arm-linux-androideabi
+mk_add_options MOZ_APP_DISPLAYNAME="Tor Browser"
+export MOZILLA_OFFICIAL=1
+CC="clang"
+CXX="clang++"
+
+ac_add_options --with-android-min-sdk=16
+
+ac_add_options --enable-optimize
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --with-android-ndk=/var/tmp/dist/fenix-android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-sdk=/var/tmp/dist/fenix-android-toolchain/android-sdk-linux
+ac_add_options --with-gradle=/var/tmp/dist/fenix-android-toolchain/gradle/gradle-5.1.1/bin/gradle
+
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
+ac_add_options --disable-tor-browser-update
+ac_add_options --disable-verify-mar
+
+# We only use beta GeckoView for now
+ac_add_options --enable-update-channel=beta
+
+ac_add_options --enable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-debug
+ac_add_options --disable-rust-debug
+ac_add_options --disable-crashreporter
+ac_add_options --disable-webrtc
+
+ac_add_options --enable-proxy-bypass-protection
+
+# Disable telemetry
+ac_add_options MOZ_TELEMETRY_REPORTING=
diff --git a/projects/geckoview/mozconfig-android-x86 b/projects/geckoview/mozconfig-android-x86
new file mode 100644
index 0000000..fe703ea
--- /dev/null
+++ b/projects/geckoview/mozconfig-android-x86
@@ -0,0 +1,37 @@
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-i386-linux-android
+mk_add_options MOZ_APP_DISPLAYNAME="Tor Browser"
+export MOZILLA_OFFICIAL=1
+CC="clang"
+CXX="clang++"
+
+ac_add_options --with-android-min-sdk=16
+
+ac_add_options --enable-optimize
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=i686-linux-android
+ac_add_options --with-android-ndk=/var/tmp/dist/fenix-android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-sdk=/var/tmp/dist/fenix-android-toolchain/android-sdk-linux
+ac_add_options --with-gradle=/var/tmp/dist/fenix-android-toolchain/gradle/gradle-5.1.1/bin/gradle
+
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
+ac_add_options --disable-tor-browser-update
+ac_add_options --disable-verify-mar
+
+# We only use beta GeckoView for now
+ac_add_options --enable-update-channel=beta
+
+ac_add_options --enable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-debug
+ac_add_options --disable-rust-debug
+ac_add_options --disable-crashreporter
+ac_add_options --disable-webrtc
+
+ac_add_options --enable-proxy-bypass-protection
+
+# Disable telemetry
+ac_add_options MOZ_TELEMETRY_REPORTING=
diff --git a/projects/geckoview/mozconfig-android-x86_64 b/projects/geckoview/mozconfig-android-x86_64
new file mode 100644
index 0000000..cddfc09
--- /dev/null
+++ b/projects/geckoview/mozconfig-android-x86_64
@@ -0,0 +1,37 @@
+mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-x86_64-linux-android
+mk_add_options MOZ_APP_DISPLAYNAME="Tor Browser"
+export MOZILLA_OFFICIAL=1
+CC="clang"
+CXX="clang++"
+
+ac_add_options --with-android-min-sdk=21
+
+ac_add_options --enable-optimize
+ac_add_options --enable-official-branding
+
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=x86_64-linux-android
+ac_add_options --with-android-ndk=/var/tmp/dist/fenix-android-toolchain/android-ndk/android-ndk-r20
+ac_add_options --with-android-sdk=/var/tmp/dist/fenix-android-toolchain/android-sdk-linux
+ac_add_options --with-gradle=/var/tmp/dist/fenix-android-toolchain/gradle/gradle-5.1.1/bin/gradle
+
+# We do not use Tor Launcher on Android:
+ac_add_options --disable-tor-launcher
+
+ac_add_options --disable-tor-browser-update
+ac_add_options --disable-verify-mar
+
+# We only use beta GeckoView for now
+ac_add_options --enable-update-channel=beta
+
+ac_add_options --enable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-debug
+ac_add_options --disable-rust-debug
+ac_add_options --disable-crashreporter
+ac_add_options --disable-webrtc
+
+ac_add_options --enable-proxy-bypass-protection
+
+# Disable telemetry
+ac_add_options MOZ_TELEMETRY_REPORTING=
1
0
[tor-browser-build/master] Bug 34386: Fix up clang compilation on Linux
by sysrqb@torproject.org 17 Jul '20
by sysrqb@torproject.org 17 Jul '20
17 Jul '20
commit 8570713a2fa6f01cd68e7d8f6dc232df813720b4
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jun 8 11:31:38 2020 +0000
Bug 34386: Fix up clang compilation on Linux
We can't build the crt in the compiler-rt project on Linux anymore and
work around it by disabling that part. This is likely yet another sign
of Debian Wheezy showing its age.
Apart from that, we should use our own binutils and not whatever Wheezy
is providing.
---
projects/clang/42574.patch | 236 --------
projects/clang/build | 15 +-
projects/clang/config | 22 +-
projects/clang/timestamp.patch | 54 --
projects/clang/win-patches/llvm-objcopy-1.patch | 27 -
projects/clang/win-patches/llvm-objcopy-10.patch | 28 -
projects/clang/win-patches/llvm-objcopy-11.patch | 377 -------------
projects/clang/win-patches/llvm-objcopy-12.patch | 43 --
projects/clang/win-patches/llvm-objcopy-2.patch | 665 -----------------------
projects/clang/win-patches/llvm-objcopy-3.patch | 160 ------
projects/clang/win-patches/llvm-objcopy-4.patch | 222 --------
projects/clang/win-patches/llvm-objcopy-5.patch | 61 ---
projects/clang/win-patches/llvm-objcopy-6.patch | 242 ---------
projects/clang/win-patches/llvm-objcopy-7.patch | 224 --------
projects/clang/win-patches/llvm-objcopy-8.patch | 330 -----------
projects/clang/win-patches/llvm-objcopy-9.patch | 260 ---------
projects/fenix-clang/build | 3 +
projects/fenix-clang/config | 3 +
18 files changed, 17 insertions(+), 2955 deletions(-)
diff --git a/projects/clang/42574.patch b/projects/clang/42574.patch
deleted file mode 100644
index 285d254..0000000
--- a/projects/clang/42574.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 3757213db371dcea53cae357cf9c56d1b0604f98 Mon Sep 17 00:00:00 2001
-From: Alina Sbirlea <asbirlea(a)google.com>
-Date: Fri, 12 Jul 2019 22:30:30 +0000
-Subject: [PATCH] [MemorySSA] Use SetVector to avoid nondeterminism.
-
-Summary:
-Use a SetVector for DeadBlockSet.
-Resolves PR42574.
-
-Reviewers: george.burgess.iv, uabelho, dblaikie
-
-Subscribers: jlebar, Prazek, mgrang, llvm-commits
-
-Tags: #llvm
-
-Differential Revision: https://reviews.llvm.org/D64601
-
-llvm-svn: 365970
-
-diff --git a/llvm/include/llvm/Analysis/MemorySSAUpdater.h b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-index 169d5bd9fa8..276620bd445 100644
---- a/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-+++ b/llvm/include/llvm/Analysis/MemorySSAUpdater.h
-@@ -32,6 +32,7 @@
- #ifndef LLVM_ANALYSIS_MEMORYSSAUPDATER_H
- #define LLVM_ANALYSIS_MEMORYSSAUPDATER_H
-
-+#include "llvm/ADT/SetVector.h"
- #include "llvm/ADT/SmallPtrSet.h"
- #include "llvm/ADT/SmallSet.h"
- #include "llvm/ADT/SmallVector.h"
-@@ -239,7 +240,7 @@ public:
- /// Deleted blocks still have successor info, but their predecessor edges and
- /// Phi nodes may already be updated. Instructions in DeadBlocks should be
- /// deleted after this call.
-- void removeBlocks(const SmallPtrSetImpl<BasicBlock *> &DeadBlocks);
-+ void removeBlocks(const SmallSetVector<BasicBlock *, 8> &DeadBlocks);
-
- /// Get handle on MemorySSA.
- MemorySSA* getMemorySSA() const { return MSSA; }
-diff --git a/llvm/lib/Analysis/MemorySSAUpdater.cpp b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-index 6c817d20368..a6c7142a697 100644
---- a/llvm/lib/Analysis/MemorySSAUpdater.cpp
-+++ b/llvm/lib/Analysis/MemorySSAUpdater.cpp
-@@ -1101,7 +1101,7 @@ void MemorySSAUpdater::removeMemoryAccess(MemoryAccess *MA) {
- }
-
- void MemorySSAUpdater::removeBlocks(
-- const SmallPtrSetImpl<BasicBlock *> &DeadBlocks) {
-+ const SmallSetVector<BasicBlock *, 8> &DeadBlocks) {
- // First delete all uses of BB in MemoryPhis.
- for (BasicBlock *BB : DeadBlocks) {
- Instruction *TI = BB->getTerminator();
-diff --git a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-index 2e5927f9a06..f464df26a02 100644
---- a/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-+++ b/llvm/lib/Transforms/Scalar/LoopSimplifyCFG.cpp
-@@ -388,8 +388,8 @@ private:
- void deleteDeadLoopBlocks() {
- DomTreeUpdater DTU(DT, DomTreeUpdater::UpdateStrategy::Eager);
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-- DeadLoopBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadLoopBlocksSet(DeadLoopBlocks.begin(),
-+ DeadLoopBlocks.end());
- MSSAU->removeBlocks(DeadLoopBlocksSet);
- }
- for (auto *BB : DeadLoopBlocks) {
-diff --git a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-index 5a67178cef3..814cf814989 100644
---- a/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-+++ b/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp
-@@ -1436,8 +1436,8 @@ deleteDeadClonedBlocks(Loop &L, ArrayRef<BasicBlock *> ExitBlocks,
-
- // Remove all MemorySSA in the dead blocks
- if (MSSAU) {
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet(DeadBlocks.begin(),
-- DeadBlocks.end());
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet(DeadBlocks.begin(),
-+ DeadBlocks.end());
- MSSAU->removeBlocks(DeadBlockSet);
- }
-
-@@ -1455,7 +1455,7 @@ static void deleteDeadBlocksFromLoop(Loop &L,
- MemorySSAUpdater *MSSAU) {
- // Find all the dead blocks tied to this loop, and remove them from their
- // successors.
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
-
- // Start with loop/exit blocks and get a transitive closure of reachable dead
- // blocks.
-diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
-index 499e611acb5..83dabcd7952 100644
---- a/llvm/lib/Transforms/Utils/Local.cpp
-+++ b/llvm/lib/Transforms/Utils/Local.cpp
-@@ -2211,7 +2211,7 @@ bool llvm::removeUnreachableBlocks(Function &F, LazyValueInfo *LVI,
- assert(Reachable.size() < F.size());
- NumRemoved += F.size()-Reachable.size();
-
-- SmallPtrSet<BasicBlock *, 16> DeadBlockSet;
-+ SmallSetVector<BasicBlock *, 8> DeadBlockSet;
- for (Function::iterator I = ++F.begin(), E = F.end(); I != E; ++I) {
- auto *BB = &*I;
- if (Reachable.count(BB))
-diff --git a/llvm/test/Analysis/MemorySSA/nondeterminism.ll b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-new file mode 100644
-index 00000000000..0bb3df30b58
---- /dev/null
-+++ b/llvm/test/Analysis/MemorySSA/nondeterminism.ll
-@@ -0,0 +1,122 @@
-+; RUN: opt -simplifycfg -enable-mssa-loop-dependency -S --preserve-ll-uselistorder %s | FileCheck %s
-+; REQUIRES: x86-registered-target
-+; CHECK-LABEL: @n
-+; CHECK: uselistorder i16 0, { 3, 2, 4, 1, 5, 0, 6 }
-+
-+; Note: test was added in an effort to ensure determinism when updating memoryssa. See PR42574.
-+; If the uselistorder check becomes no longer relevant, the test can be disabled or removed.
-+
-+%rec9 = type { i16, i32, i32 }
-+
-+@a = global [1 x [1 x %rec9]] zeroinitializer
-+
-+define i16 @n() {
-+ br label %..split_crit_edge
-+
-+..split_crit_edge: ; preds = %0
-+ br label %.split
-+
-+bb4.us4: ; preds = %bb2.split.us32, %bb6.us28
-+ %i.4.01.us5 = phi i16 [ %_tmp49.us30, %bb6.us28 ]
-+ br label %g.exit4.us21
-+
-+bb1.i.us14: ; preds = %bb4.us4
-+ br label %g.exit4.us21
-+
-+g.exit4.us21: ; preds = %bb1.i.us14, %g.exit4.critedge.us9
-+ %i.4.02.us22 = phi i16 [ %i.4.01.us5, %bb4.us4 ], [ %i.4.01.us5, %bb1.i.us14 ]
-+ br label %bb6.us28
-+
-+bb5.us26: ; preds = %g.exit4.us21
-+ br label %bb6.us28
-+
-+bb6.us28: ; preds = %bb5.us26, %g.exit4.us21
-+ %i.4.03.us29 = phi i16 [ %i.4.02.us22, %bb5.us26 ], [ %i.4.02.us22, %g.exit4.us21 ]
-+ %_tmp49.us30 = add nuw nsw i16 %i.4.03.us29, 1
-+ br label %bb4.us4
-+
-+bb4.us.us: ; preds = %bb2.split.us.us, %bb6.us.us
-+ %i.4.01.us.us = phi i16 [ %_tmp49.us.us, %bb6.us.us ]
-+ br label %bb1.i.us.us
-+
-+bb1.i.us.us: ; preds = %bb4.us.us
-+ br label %g.exit4.us.us
-+
-+g.exit4.us.us: ; preds = %bb1.i.us.us, %g.exit4.critedge.us.us
-+ %i.4.02.us.us = phi i16 [ %i.4.01.us.us, %bb1.i.us.us ]
-+ br label %bb5.us.us
-+
-+bb5.us.us: ; preds = %g.exit4.us.us
-+ br label %bb6.us.us
-+
-+bb6.us.us: ; preds = %bb5.us.us, %g.exit4.us.us
-+ %i.4.03.us.us = phi i16 [ %i.4.02.us.us, %bb5.us.us ]
-+ %_tmp49.us.us = add nuw nsw i16 %i.4.03.us.us, 1
-+ br label %bb4.us.us
-+
-+
-+.split: ; preds = %..split_crit_edge
-+ br label %bb2
-+
-+bb2: ; preds = %.split, %bb7
-+ %h.3.0 = phi i16 [ undef, %.split ], [ %_tmp53, %bb7 ]
-+ br label %bb2.bb2.split_crit_edge
-+
-+bb2.bb2.split_crit_edge: ; preds = %bb2
-+ br label %bb2.split
-+
-+bb2.split.us: ; preds = %bb2
-+ br label %bb4.us
-+
-+bb4.us: ; preds = %bb6.us, %bb2.split.us
-+ %i.4.01.us = phi i16 [ 0, %bb2.split.us ]
-+ br label %bb1.i.us
-+
-+g.exit4.critedge.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+bb1.i.us: ; preds = %bb4.us
-+ br label %g.exit4.us
-+
-+g.exit4.us: ; preds = %bb1.i.us, %g.exit4.critedge.us
-+ %i.4.02.us = phi i16 [ %i.4.01.us, %g.exit4.critedge.us ], [ %i.4.01.us, %bb1.i.us ]
-+ br label %bb5.us
-+
-+bb5.us: ; preds = %g.exit4.us
-+ br label %bb7
-+
-+bb2.split: ; preds = %bb2.bb2.split_crit_edge
-+ br label %bb4
-+
-+bb4: ; preds = %bb2.split, %bb6
-+ %i.4.01 = phi i16 [ 0, %bb2.split ]
-+ %_tmp16 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 0
-+ %_tmp17 = load i16, i16* %_tmp16, align 1
-+ br label %g.exit4.critedge
-+
-+bb1.i: ; preds = %bb4
-+ br label %g.exit4
-+
-+g.exit4.critedge: ; preds = %bb4
-+ %_tmp28.c = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.01, i32 1
-+ %_tmp29.c = load i32, i32* %_tmp28.c, align 1
-+ %_tmp30.c = trunc i32 %_tmp29.c to i16
-+ br label %g.exit4
-+
-+g.exit4: ; preds = %g.exit4.critedge, %bb1.i
-+ %i.4.02 = phi i16 [ %i.4.01, %g.exit4.critedge ], [ %i.4.01, %bb1.i ]
-+ %_tmp41 = getelementptr [1 x [1 x %rec9]], [1 x [1 x %rec9]]* @a, i16 0, i16 %h.3.0, i16 %i.4.02, i32 2
-+ br label %bb6
-+
-+bb5: ; preds = %g.exit4
-+ br label %bb6
-+
-+bb6: ; preds = %bb5, %g.exit4
-+ %i.4.03 = phi i16 [ %i.4.02, %bb5 ], [ %i.4.02, %g.exit4 ]
-+ %_tmp49 = add nuw nsw i16 %i.4.03, 1
-+ br label %bb7
-+
-+bb7: ; preds = %bb7.us-lcssa.us, %bb7.us-lcssa
-+ %_tmp53 = add nsw i16 %h.3.0, 1
-+ br label %bb2
-+}
---
-2.24.0
-
diff --git a/projects/clang/build b/projects/clang/build
index d95e9af..d61ed43 100644
--- a/projects/clang/build
+++ b/projects/clang/build
@@ -10,11 +10,13 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH"
[% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
hardened_gcc => 0 }) %]
ln -s gcc /var/tmp/dist/gcc/bin/cc
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
mkdir -p /var/tmp/build
cd /var/tmp/build
tar -xf $rootdir/[% c('input_files_by_name/llvm') %]
-tar -xf $rootdir/[% c('input_files_by_name/cfe') %]
+tar -xf $rootdir/[% c('input_files_by_name/clang') %]
tar -xf $rootdir/[% c('input_files_by_name/libcxx') %]
tar -xf $rootdir/[% c('input_files_by_name/libcxxabi') %]
tar -xf $rootdir/[% c('input_files_by_name/lld') %]
@@ -22,26 +24,19 @@ tar -xf $rootdir/[% c('input_files_by_name/compiler-rt') %]
mv llvm-* llvm
# LLVM has reproducibility issues when optimizing bitcode, which we need to
# patch. See: #32053 for more details.
-patch -p1 < $rootdir/42574.patch
patch -p1 < $rootdir/43909.patch
-mv cfe-* llvm/tools/clang
+mv clang-* llvm/tools/clang
mv libcxx-* llvm/projects/libcxx
mv libcxxabi-* llvm/projects/libcxxabi
mv lld-* llvm/tools/lld
mv compiler-rt-* llvm/projects/compiler-rt
-[% IF c("var/windows") -%]
- # Patch order is important here
- for i in {1..12}
- do git apply $rootdir/win-patches/llvm-objcopy-$i.patch
- done
- patch -p1 -d llvm/tools/lld < $rootdir/timestamp.patch
-[% END %]
cd llvm
export LLVM_HOME=$(pwd)
mkdir build
cd build
cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$distdir \
-DCMAKE_BUILD_TYPE:STRING=Release \
+ [% IF c("var/linux") -%]-DCOMPILER_RT_BUILD_CRT=OFF \[% END -%]
[% IF c("var/rlbox") -%]-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \[% END -%]
$LLVM_HOME
make -j[% c("buildconf/num_procs") %]
diff --git a/projects/clang/config b/projects/clang/config
index cf4dcb0..c4b7efc 100644
--- a/projects/clang/config
+++ b/projects/clang/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 8.0.1
+version: 9.0.1
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
gpg_keyring: clang.gpg
sig_ext: sig
@@ -8,26 +8,21 @@ var:
container:
use_container: 1
-targets:
- windows:
- var:
- arch_deps:
- # We use git to apply patches
- - git
-
-
input_files:
- project: container-image
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
enable: '[% c("var/linux") %]'
+ - name: binutils
+ project: binutils
+ enable: '[% c("var/linux") %]'
- project: cmake
name: cmake
- URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/llvm-[% c("version") %].src.tar.xz'
name: llvm
file_gpg_id: 1
- - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/cfe-[% c("version") %].src.tar.xz'
- name: cfe
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/clang-[% c("version") %].src.tar.xz'
+ name: clang
file_gpg_id: 1
- URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/libcxx-[% c("version") %].src.tar.xz'
name: libcxx
@@ -41,9 +36,4 @@ input_files:
- URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/compiler-rt-[% c("version") %].src.tar.xz'
name: compiler-rt
file_gpg_id: 1
- - filename: win-patches
- enable: '[% c("var/windows") %]'
- - filename: timestamp.patch
- enable: '[% c("var/windows") %]'
- - filename: 42574.patch
- filename: 43909.patch
diff --git a/projects/clang/timestamp.patch b/projects/clang/timestamp.patch
deleted file mode 100644
index bea48a2..0000000
--- a/projects/clang/timestamp.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From f4743f40894d1dcd4ba131af3ad86a34c6d54598 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Tue, 5 Feb 2019 08:16:06 +0000
-Subject: [PATCH] Hook up the --no-insert-timestamp option
-
-This fixes PR40582.
-
-Patch by Georg Koppen!
-
-Differential Revision: https://reviews.llvm.org/D57679
-
-git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@353145 91177308-0d34-0410-b5e6-96231b3b80d8
-
-diff --git a/MinGW/Driver.cpp b/MinGW/Driver.cpp
-index 27a5550ec..d79ebe82e 100644
---- a/MinGW/Driver.cpp
-+++ b/MinGW/Driver.cpp
-@@ -170,6 +170,9 @@ bool mingw::link(ArrayRef<const char *> ArgsArr, raw_ostream &Diag) {
- Args.getLastArgValue(OPT_m) != "arm64pe" && !Args.hasArg(OPT_dynamicbase))
- Add("-dynamicbase:no");
-
-+ if (Args.hasArg(OPT_no_insert_timestamp))
-+ Add("-timestamp:0");
-+
- if (Args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, false))
- Add("-opt:ref");
- else
-diff --git a/MinGW/Options.td b/MinGW/Options.td
-index ad699f711..5cc339a4a 100644
---- a/MinGW/Options.td
-+++ b/MinGW/Options.td
-@@ -20,6 +20,8 @@ def l: JoinedOrSeparate<["-"], "l">, MetaVarName<"<libName>">,
- def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
- def map: S<"Map">, HelpText<"Output a linker map">;
- def map_eq: J<"Map=">, Alias<map>;
-+def no_insert_timestamp: F<"no-insert-timestamp">,
-+ HelpText<"Don't include PE header timestamp">;
- def no_whole_archive: F<"no-whole-archive">,
- HelpText<"No longer include all object files for following archives">;
- def large_address_aware: Flag<["--"], "large-address-aware">,
-diff --git a/test/MinGW/driver.test b/test/MinGW/driver.test
-index 3222bb111..b853527a0 100644
---- a/test/MinGW/driver.test
-+++ b/test/MinGW/driver.test
-@@ -151,3 +151,6 @@ REQUIRE-DEFINED: -include:_foo -include:_bar -include:_baz -include:_foo2
-
- RUN: ld.lld -### -m i386pep foo.o -Llibpath | FileCheck -check-prefix LIBPATH %s
- LIBPATH: -libpath:libpath
-+
-+RUN: ld.lld -### -m i386pep foo.o --no-insert-timestamp | FileCheck -check-prefix NOTIMESTAMP %s
-+NOTIMESTAMP: -timestamp:0
---
-2.23.0.rc1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-1.patch b/projects/clang/win-patches/llvm-objcopy-1.patch
deleted file mode 100644
index 9c9f250..0000000
--- a/projects/clang/win-patches/llvm-objcopy-1.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a495c9ae6fb3367e6b59d8d245273ed3669754f0 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Sat, 19 Jan 2019 19:42:23 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Remove a superfluous namespace
- qualification. NFC.
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351658 91177308-0d34-0410-b5e6-96231b3b80d8
----
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index ceebf600b3a..437dccbd3d5 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -78,7 +78,7 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- }
-
- void executeObjcopyOnBinary(const CopyConfig &Config,
-- object::COFFObjectFile &In, Buffer &Out) {
-+ COFFObjectFile &In, Buffer &Out) {
- COFFReader Reader(In);
- Expected<std::unique_ptr<Object>> ObjOrErr = Reader.create();
- if (!ObjOrErr)
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-10.patch b/projects/clang/win-patches/llvm-objcopy-10.patch
deleted file mode 100644
index 4aca911..0000000
--- a/projects/clang/win-patches/llvm-objcopy-10.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 1284ee3c47bab17ec081b5169633aea4f8abfd30 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Wed, 23 Jan 2019 09:12:53 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Clear the unwritten tail of
- coff_section::Header::Name
-
-This should fix the add-gnu-debuglink test on all buildbots.
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351934 91177308-0d34-0410-b5e6-96231b3b80d8
----
- tools/llvm-objcopy/COFF/Writer.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index 05e46291c39..db897e2ff33 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -121,6 +121,7 @@ size_t COFFWriter::finalizeStringTable() {
-
- for (auto &S : Obj.getMutableSections()) {
- if (S.Name.size() > COFF::NameSize) {
-+ memset(S.Header.Name, 0, sizeof(S.Header.Name));
- snprintf(S.Header.Name, sizeof(S.Header.Name), "/%d",
- (int)StrTabBuilder.getOffset(S.Name));
- } else {
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-11.patch b/projects/clang/win-patches/llvm-objcopy-11.patch
deleted file mode 100644
index 9149b80..0000000
--- a/projects/clang/win-patches/llvm-objcopy-11.patch
+++ /dev/null
@@ -1,377 +0,0 @@
-From 74c7d422cba163635394ec32f2b243b1de502a18 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Wed, 23 Jan 2019 11:54:51 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Fix handling of aux symbols for big
- objects
-
-The aux symbols were stored in an opaque std::vector<uint8_t>,
-with contents interpreted according to the rest of the symbol.
-
-All aux symbol types but one fit in 18 bytes (sizeof(coff_symbol16)),
-and if written to a bigobj, two extra padding bytes are written (as
-sizeof(coff_symbol32) is 20). In the storage agnostic intermediate
-representation, store the aux symbols as a series of coff_symbol16
-sized opaque blobs. (In practice, all such aux symbols only consist
-of one aux symbol, so this is more flexible than what reality needs.)
-
-The special case is the file aux symbols, which are written in
-potentially more than one aux symbol slot, without any padding,
-as one single long string. This can't be stored in the same opaque
-vector of fixed sized aux symbol entries. The file aux symbols will
-occupy a different number of aux symbol slots depending on the type
-of output object file. As nothing in the intermediate process needs
-to have accurate raw symbol indices, updating that is moved into the
-writer class.
-
-Differential Revision: https://reviews.llvm.org/D57009
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351947 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../llvm-objcopy/COFF/Inputs/bigobj.o.gz | Bin 0 -> 7841 bytes
- test/tools/llvm-objcopy/COFF/bigobj.test | 35 +++++++++++++
- .../llvm-objcopy/ELF/auto-remove-shndx.test | 2 +-
- .../tools/llvm-objcopy/ELF/many-sections.test | 2 +-
- test/tools/llvm-objcopy/ELF/remove-shndx.test | 2 +-
- .../tools/llvm-objcopy/ELF/strict-no-add.test | 2 +-
- .../llvm-objcopy/{ELF => }/Inputs/ungzip.py | 0
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 6 +--
- tools/llvm-objcopy/COFF/Object.cpp | 6 +--
- tools/llvm-objcopy/COFF/Object.h | 18 ++++++-
- tools/llvm-objcopy/COFF/Reader.cpp | 21 ++++++--
- tools/llvm-objcopy/COFF/Writer.cpp | 49 +++++++++++++-----
- tools/llvm-objcopy/COFF/Writer.h | 2 +-
- 13 files changed, 115 insertions(+), 30 deletions(-)
- create mode 100644 test/tools/llvm-objcopy/COFF/Inputs/bigobj.o.gz
- create mode 100644 test/tools/llvm-objcopy/COFF/bigobj.test
- rename test/tools/llvm-objcopy/{ELF => }/Inputs/ungzip.py (100%)
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/Inputs/bigobj.o.gz b/llvm/test/tools/llvm-objcopy/COFF/Inputs/bigobj.o.gz
-new file mode 100644
-index 0000000000000000000000000000000000000000..6435f4785ff76e0c6bca12f3e57bc6ad8888bece
-GIT binary patch
-literal 7841
-zcmb2|=3r3v^@w3&etUMmo^zoH`-kGKM_vfJsF<z%6+Sz#g6qq)pf0Hj#_r`4B7DML
-zW(h1l`+!x)t@&W-R@I~lyKmU3Ti&1Z=iKur;uBMy1MR!_ywlsouYY&-*4H1mU!Qw=
-z`RpIDkw;!V4(WOF_)B3`(Vt|~S>?L-b)Wx@^wig`HIMAw|N8V<v65oeyETs611{)_
-zm27RwTe)ENN|7SLgM~83N6}~qjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk
-zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kgRokHNw|D97mKRo|%+Z6Ym
-z*X{Ku$4#4*Vqm}gyYR^b^Sc?_E*<<cFE#Q=*rt6OBmJeLZ=aoe_u9R>-w!^l5biDe
-p{d@nvw*mU6<NG83=jxn4_wt_G?yUy#YeOF~KhH^=cj<;Y0{~9Br>p<~
-
-literal 0
-HcmV?d00001
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/bigobj.test b/llvm/test/tools/llvm-objcopy/COFF/bigobj.test
-new file mode 100644
-index 00000000000..17968f12b8a
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/bigobj.test
-@@ -0,0 +1,35 @@
-+RUN: %python %p/../Inputs/ungzip.py %p/Inputs/bigobj.o.gz > %t.in.o
-+
-+RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-ORIG
-+
-+# Do a plain copy, to check that section numbers in symbols referring
-+# to sections outside of the small object format are handled correctly.
-+RUN: llvm-objcopy -R '.text$4' %t.in.o %t.small.o
-+RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-ORIG
-+
-+# Remove a section, making the section count fit into a small object.
-+RUN: llvm-objcopy -R '.text$4' %t.in.o %t.small.o
-+RUN: llvm-objdump -t %t.small.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-SMALL,SYMBOLS-REMOVED-SMALL
-+
-+# Add a .gnu_debuglink section, forcing the object back to big format.
-+RUN: llvm-objcopy --add-gnu-debuglink=%t.in.o %t.small.o %t.big.o
-+ llvm-objdump -t %t.big.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-BIG,SYMBOLS-REMOVED-BIG
-+
-+# In big object format, the .file symbol occupies one symbol table entry for
-+# the auxillary data, but needs two entries in the small format, forcing the
-+# raw symbol indices of later symbols to change.
-+SYMBOLS: SYMBOL TABLE:
-+SYMBOLS-NEXT: [ 0]{{.*}} (nx 1) {{.*}} .text
-+SYMBOLS-NEXT: AUX scnlen
-+SYMBOLS-SMALL-NEXT: [ 2]{{.*}} (nx 2) {{.*}} .file
-+SYMBOLS-BIG-NEXT: [ 2]{{.*}} (nx 1) {{.*}} .file
-+SYMBOLS-NEXT: AUX abcdefghijklmnopqrs
-+SYMBOLS-SMALL-NEXT: [ 5]{{.*}} (nx 0) {{.*}} foo
-+SYMBOLS-BIG-NEXT: [ 4]{{.*}} (nx 0) {{.*}} foo
-+
-+# Check that the section numbers outside of signed 16 bit int range
-+# are represented properly. After removing one section, the section
-+# numbers decrease.
-+SYMBOLS-ORIG: [ 5](sec 65280){{.*}} symbol65280
-+SYMBOLS-REMOVED-SMALL: [ 6](sec 65279){{.*}} symbol65280
-+SYMBOLS-REMOVED-BIG: [ 5](sec 65279){{.*}} symbol65280
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/auto-remove-shndx.test b/llvm/test/tools/llvm-objcopy/ELF/auto-remove-shndx.test
-index 5a23493fa94..8e6c788bf48 100644
---- a/llvm/test/tools/llvm-objcopy/ELF/auto-remove-shndx.test
-+++ b/llvm/test/tools/llvm-objcopy/ELF/auto-remove-shndx.test
-@@ -1,4 +1,4 @@
--# RUN: %python %p/Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
-+# RUN: %python %p/../Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
- # RUN: llvm-objcopy -R .text -R s0 -R s1 -R s2 -R s3 -R s4 -R s5 -R s6 %t %t2
- # RUN: llvm-readobj --sections %t2 | FileCheck --check-prefix=SECS %s
-
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/many-sections.test b/llvm/test/tools/llvm-objcopy/ELF/many-sections.test
-index 57239f32e4a..1dd41cfb10c 100644
---- a/llvm/test/tools/llvm-objcopy/ELF/many-sections.test
-+++ b/llvm/test/tools/llvm-objcopy/ELF/many-sections.test
-@@ -1,4 +1,4 @@
--RUN: %python %p/Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
-+RUN: %python %p/../Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
- RUN: llvm-objcopy %t %t2
- RUN: llvm-readobj --file-headers %t2 | FileCheck --check-prefix=EHDR %s
- RUN: llvm-readobj --sections %t2 | FileCheck --check-prefix=SECS %s
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/remove-shndx.test b/llvm/test/tools/llvm-objcopy/ELF/remove-shndx.test
-index 6cc3a1a291f..53ca8e7f220 100644
---- a/llvm/test/tools/llvm-objcopy/ELF/remove-shndx.test
-+++ b/llvm/test/tools/llvm-objcopy/ELF/remove-shndx.test
-@@ -1,6 +1,6 @@
- # This test checks to see that a .symtab_shndx section is added to any binary
- # that needs it, even if the original was removed.
--RUN: %python %p/Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
-+RUN: %python %p/../Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t
- RUN: llvm-objcopy -R .symtab_shndx %t %t2
- RUN: llvm-readobj --sections %t2 | FileCheck %s
-
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/strict-no-add.test b/llvm/test/tools/llvm-objcopy/ELF/strict-no-add.test
-index 4f24df31bf9..348ab7c4fbd 100644
---- a/llvm/test/tools/llvm-objcopy/ELF/strict-no-add.test
-+++ b/llvm/test/tools/llvm-objcopy/ELF/strict-no-add.test
-@@ -1,7 +1,7 @@
- # This test makes sure that sections added at the end that don't have symbols
- # defined in them don't trigger the creation of a large index table.
-
--RUN: %python %p/Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t.0
-+RUN: %python %p/../Inputs/ungzip.py %p/Inputs/many-sections.o.gz > %t.0
- RUN: cat %p/Inputs/alloc-symtab.o > %t
- RUN: llvm-objcopy -R .text -R s0 -R s1 -R s2 -R s3 -R s4 -R s5 -R s6 %t.0 %t2
- RUN: llvm-objcopy --add-section=.s0=%t --add-section=.s1=%t --add-section=.s2=%t %t2 %t2
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/Inputs/ungzip.py b/llvm/test/tools/llvm-objcopy/Inputs/ungzip.py
-similarity index 100%
-rename from llvm/test/tools/llvm-objcopy/ELF/Inputs/ungzip.py
-rename to llvm/test/tools/llvm-objcopy/Inputs/ungzip.py
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 20adbe11e7a..64b4e79a4e0 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -37,7 +37,7 @@ static uint64_t getNextRVA(const Object &Obj) {
- return 0;
- const Section &Last = Obj.getSections().back();
- return alignTo(Last.Header.VirtualAddress + Last.Header.VirtualSize,
-- Obj.PeHeader.SectionAlignment);
-+ Obj.IsPE ? Obj.PeHeader.SectionAlignment : 1);
- }
-
- static uint32_t getCRC32(StringRef Data) {
-@@ -74,8 +74,8 @@ static void addGnuDebugLink(Object &Obj, StringRef DebugLinkFile) {
- Sec.Name = ".gnu_debuglink";
- Sec.Header.VirtualSize = Sec.getContents().size();
- Sec.Header.VirtualAddress = StartRVA;
-- Sec.Header.SizeOfRawData =
-- alignTo(Sec.Header.VirtualSize, Obj.PeHeader.FileAlignment);
-+ Sec.Header.SizeOfRawData = alignTo(Sec.Header.VirtualSize,
-+ Obj.IsPE ? Obj.PeHeader.FileAlignment : 1);
- // Sec.Header.PointerToRawData is filled in by the writer.
- Sec.Header.PointerToRelocations = 0;
- Sec.Header.PointerToLinenumbers = 0;
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.cpp b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-index 8c382c1faef..0ad5a05a144 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-@@ -26,12 +26,8 @@ void Object::addSymbols(ArrayRef<Symbol> NewSymbols) {
-
- void Object::updateSymbols() {
- SymbolMap = DenseMap<size_t, Symbol *>(Symbols.size());
-- size_t RawSymIndex = 0;
-- for (Symbol &Sym : Symbols) {
-+ for (Symbol &Sym : Symbols)
- SymbolMap[Sym.UniqueId] = &Sym;
-- Sym.RawIndex = RawSymIndex;
-- RawSymIndex += 1 + Sym.Sym.NumberOfAuxSymbols;
-- }
- }
-
- const Symbol *Object::findSymbol(size_t UniqueId) const {
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h
-index afa272286ef..21475b06862 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.h
-@@ -66,10 +66,24 @@ private:
- std::vector<uint8_t> OwnedContents;
- };
-
-+struct AuxSymbol {
-+ AuxSymbol(ArrayRef<uint8_t> In) {
-+ assert(In.size() == sizeof(Opaque));
-+ std::copy(In.begin(), In.end(), Opaque);
-+ }
-+
-+ ArrayRef<uint8_t> getRef() const {
-+ return ArrayRef<uint8_t>(Opaque, sizeof(Opaque));
-+ }
-+
-+ uint8_t Opaque[sizeof(object::coff_symbol16)];
-+};
-+
- struct Symbol {
- object::coff_symbol32 Sym;
- StringRef Name;
-- std::vector<uint8_t> AuxData;
-+ std::vector<AuxSymbol> AuxData;
-+ StringRef AuxFile;
- ssize_t TargetSectionId;
- ssize_t AssociativeComdatTargetSectionId = 0;
- Optional<size_t> WeakTargetSymbolId;
-@@ -132,7 +146,7 @@ private:
-
- ssize_t NextSectionUniqueId = 1; // Allow a UniqueId 0 to mean undefined.
-
-- // Update SymbolMap and RawIndex in each Symbol.
-+ // Update SymbolMap.
- void updateSymbols();
-
- // Update SectionMap and Index in each Section.
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.cpp b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-index 87dd60a43cf..7270bbf94de 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-@@ -107,9 +107,24 @@ Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- *reinterpret_cast<const coff_symbol16 *>(SymRef.getRawPtr()));
- if (auto EC = COFFObj.getSymbolName(SymRef, Sym.Name))
- return errorCodeToError(EC);
-- Sym.AuxData = COFFObj.getSymbolAuxData(SymRef);
-- assert((Sym.AuxData.size() %
-- (IsBigObj ? sizeof(coff_symbol32) : sizeof(coff_symbol16))) == 0);
-+
-+ ArrayRef<uint8_t> AuxData = COFFObj.getSymbolAuxData(SymRef);
-+ size_t SymSize = IsBigObj ? sizeof(coff_symbol32) : sizeof(coff_symbol16);
-+ assert(AuxData.size() == SymSize * SymRef.getNumberOfAuxSymbols());
-+ // The auxillary symbols are structs of sizeof(coff_symbol16) each.
-+ // In the big object format (where symbols are coff_symbol32), each
-+ // auxillary symbol is padded with 2 bytes at the end. Copy each
-+ // auxillary symbol to the Sym.AuxData vector. For file symbols,
-+ // the whole range of aux symbols are interpreted as one null padded
-+ // string instead.
-+ if (SymRef.isFileRecord())
-+ Sym.AuxFile = StringRef(reinterpret_cast<const char *>(AuxData.data()),
-+ AuxData.size())
-+ .rtrim('\0');
-+ else
-+ for (size_t I = 0; I < SymRef.getNumberOfAuxSymbols(); I++)
-+ Sym.AuxData.push_back(AuxData.slice(I * SymSize, sizeof(AuxSymbol)));
-+
- // Find the unique id of the section
- if (SymRef.getSectionNumber() <=
- 0) // Special symbol (undefined/absolute/debug)
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index db897e2ff33..6e69c597217 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -55,7 +55,8 @@ Error COFFWriter::finalizeSymbolContents() {
- if (Sym.Sym.NumberOfAuxSymbols == 1 &&
- Sym.Sym.StorageClass == IMAGE_SYM_CLASS_STATIC) {
- coff_aux_section_definition *SD =
-- reinterpret_cast<coff_aux_section_definition *>(Sym.AuxData.data());
-+ reinterpret_cast<coff_aux_section_definition *>(
-+ Sym.AuxData[0].Opaque);
- uint32_t SDSectionNumber;
- if (Sym.AssociativeComdatTargetSectionId == 0) {
- // Not a comdat associative section; just set the Number field to
-@@ -79,7 +80,7 @@ Error COFFWriter::finalizeSymbolContents() {
- // we want to set. Only >= 1 would be required, but only == 1 makes sense.
- if (Sym.WeakTargetSymbolId && Sym.Sym.NumberOfAuxSymbols == 1) {
- coff_aux_weak_external *WE =
-- reinterpret_cast<coff_aux_weak_external *>(Sym.AuxData.data());
-+ reinterpret_cast<coff_aux_weak_external *>(Sym.AuxData[0].Opaque);
- const Symbol *Target = Obj.findSymbol(*Sym.WeakTargetSymbolId);
- if (Target == nullptr)
- return createStringError(object_error::invalid_symbol_index,
-@@ -141,13 +142,26 @@ size_t COFFWriter::finalizeStringTable() {
-
- template <class SymbolTy>
- std::pair<size_t, size_t> COFFWriter::finalizeSymbolTable() {
-- size_t SymTabSize = Obj.getSymbols().size() * sizeof(SymbolTy);
-- for (const auto &S : Obj.getSymbols())
-- SymTabSize += S.AuxData.size();
-- return std::make_pair(SymTabSize, sizeof(SymbolTy));
-+ size_t RawSymIndex = 0;
-+ for (auto &S : Obj.getMutableSymbols()) {
-+ // Symbols normally have NumberOfAuxSymbols set correctly all the time.
-+ // For file symbols, we need to know the output file's symbol size to be
-+ // able to calculate the number of slots it occupies.
-+ if (!S.AuxFile.empty())
-+ S.Sym.NumberOfAuxSymbols =
-+ alignTo(S.AuxFile.size(), sizeof(SymbolTy)) / sizeof(SymbolTy);
-+ S.RawIndex = RawSymIndex;
-+ RawSymIndex += 1 + S.Sym.NumberOfAuxSymbols;
-+ }
-+ return std::make_pair(RawSymIndex * sizeof(SymbolTy), sizeof(SymbolTy));
- }
-
- Error COFFWriter::finalize(bool IsBigObj) {
-+ size_t SymTabSize, SymbolSize;
-+ std::tie(SymTabSize, SymbolSize) = IsBigObj
-+ ? finalizeSymbolTable<coff_symbol32>()
-+ : finalizeSymbolTable<coff_symbol16>();
-+
- if (Error E = finalizeRelocTargets())
- return E;
- if (Error E = finalizeSymbolContents())
-@@ -199,10 +213,6 @@ Error COFFWriter::finalize(bool IsBigObj) {
- }
-
- size_t StrTabSize = finalizeStringTable();
-- size_t SymTabSize, SymbolSize;
-- std::tie(SymTabSize, SymbolSize) = IsBigObj
-- ? finalizeSymbolTable<coff_symbol32>()
-- : finalizeSymbolTable<coff_symbol16>();
-
- size_t PointerToSymbolTable = FileSize;
- // StrTabSize <= 4 is the size of an empty string table, only consisting
-@@ -312,8 +322,23 @@ template <class SymbolTy> void COFFWriter::writeSymbolStringTables() {
- copySymbol<SymbolTy, coff_symbol32>(*reinterpret_cast<SymbolTy *>(Ptr),
- S.Sym);
- Ptr += sizeof(SymbolTy);
-- std::copy(S.AuxData.begin(), S.AuxData.end(), Ptr);
-- Ptr += S.AuxData.size();
-+ if (!S.AuxFile.empty()) {
-+ // For file symbols, just write the string into the aux symbol slots,
-+ // assuming that the unwritten parts are initialized to zero in the memory
-+ // mapped file.
-+ std::copy(S.AuxFile.begin(), S.AuxFile.end(), Ptr);
-+ Ptr += S.Sym.NumberOfAuxSymbols * sizeof(SymbolTy);
-+ } else {
-+ // For other auxillary symbols, write their opaque payload into one symbol
-+ // table slot each. For big object files, the symbols are larger than the
-+ // opaque auxillary symbol struct and we leave padding at the end of each
-+ // entry.
-+ for (const AuxSymbol &AuxSym : S.AuxData) {
-+ ArrayRef<uint8_t> Ref = AuxSym.getRef();
-+ std::copy(Ref.begin(), Ref.end(), Ptr);
-+ Ptr += sizeof(SymbolTy);
-+ }
-+ }
- }
- if (StrTabBuilder.getSize() > 4 || !Obj.IsPE) {
- // Always write a string table in object files, even an empty one.
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.h b/llvm/tools/llvm-objcopy/COFF/Writer.h
-index 9b1cfa91d00..681a8d5e4a6 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.h
-@@ -30,11 +30,11 @@ class COFFWriter {
- size_t SizeOfInitializedData;
- StringTableBuilder StrTabBuilder;
-
-+ template <class SymbolTy> std::pair<size_t, size_t> finalizeSymbolTable();
- Error finalizeRelocTargets();
- Error finalizeSymbolContents();
- void layoutSections();
- size_t finalizeStringTable();
-- template <class SymbolTy> std::pair<size_t, size_t> finalizeSymbolTable();
-
- Error finalize(bool IsBigObj);
-
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-12.patch b/projects/clang/win-patches/llvm-objcopy-12.patch
deleted file mode 100644
index 35dec30..0000000
--- a/projects/clang/win-patches/llvm-objcopy-12.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From abacd83232acf69d7cbacd53fc2f9aae66c1a32e Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Wed, 23 Jan 2019 11:54:55 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Error out on use of unhandled options
-
-Prefer erroring out than silently not doing what was requested.
-
-Differential Revision: https://reviews.llvm.org/D57045
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351948 91177308-0d34-0410-b5e6-96231b3b80d8
----
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 64b4e79a4e0..b7b3d3cb629 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -170,6 +170,21 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- if (!Config.AddGnuDebugLink.empty())
- addGnuDebugLink(Obj, Config.AddGnuDebugLink);
-
-+ if (!Config.BuildIdLinkDir.empty() || Config.BuildIdLinkInput ||
-+ Config.BuildIdLinkOutput || !Config.SplitDWO.empty() ||
-+ !Config.SymbolsPrefix.empty() || !Config.AddSection.empty() ||
-+ !Config.DumpSection.empty() || !Config.KeepSection.empty() ||
-+ !Config.SymbolsToGlobalize.empty() || !Config.SymbolsToKeep.empty() ||
-+ !Config.SymbolsToLocalize.empty() || !Config.SymbolsToWeaken.empty() ||
-+ !Config.SymbolsToKeepGlobal.empty() || !Config.SectionsToRename.empty() ||
-+ !Config.SymbolsToRename.empty() || Config.ExtractDWO ||
-+ Config.KeepFileSymbols || Config.LocalizeHidden || Config.PreserveDates ||
-+ Config.StripDWO || Config.StripNonAlloc || Config.StripSections ||
-+ Config.Weaken || Config.DecompressDebugSections) {
-+ return createStringError(llvm::errc::invalid_argument,
-+ "Option not supported by llvm-objcopy for COFF");
-+ }
-+
- return Error::success();
- }
-
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-2.patch b/projects/clang/win-patches/llvm-objcopy-2.patch
deleted file mode 100644
index 41e7a94..0000000
--- a/projects/clang/win-patches/llvm-objcopy-2.patch
+++ /dev/null
@@ -1,665 +0,0 @@
-From 2ccafacb7ddd740054dbee06655749ebc55a4d86 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Sat, 19 Jan 2019 19:42:35 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Add support for removing sections
-
-Differential Revision: https://reviews.llvm.org/D56683
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351660 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../llvm-objcopy/COFF/remove-section.test | 210 ++++++++++++++++++
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 10 +-
- tools/llvm-objcopy/COFF/Object.cpp | 63 ++++++
- tools/llvm-objcopy/COFF/Object.h | 27 ++-
- tools/llvm-objcopy/COFF/Reader.cpp | 31 ++-
- tools/llvm-objcopy/COFF/Writer.cpp | 68 ++++--
- tools/llvm-objcopy/COFF/Writer.h | 1 +
- 7 files changed, 391 insertions(+), 19 deletions(-)
- create mode 100644 test/tools/llvm-objcopy/COFF/remove-section.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/remove-section.test b/llvm/test/tools/llvm-objcopy/COFF/remove-section.test
-new file mode 100644
-index 00000000000..b3dfb0b98cb
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/remove-section.test
-@@ -0,0 +1,210 @@
-+# RUN: yaml2obj %s > %t.in.o
-+#
-+# RUN: llvm-objdump -section-headers %t.in.o | FileCheck %s --check-prefixes=SECTIONS-PRE
-+# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS-PRE
-+#
-+# RUN: llvm-objcopy -R .bss %t.in.o %t.remove-bss.o
-+# RUN: llvm-objdump -section-headers %t.remove-bss.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-BSS
-+# RUN: llvm-objdump -t %t.remove-bss.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-BSS
-+#
-+# RUN: llvm-objcopy --remove-section .bss %t.in.o %t.cmp.o
-+# RUN: cmp %t.remove-bss.o %t.cmp.o
-+#
-+# RUN: llvm-objcopy -R .text %t.in.o %t.remove-text.o
-+# RUN: llvm-objdump -section-headers %t.remove-text.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT
-+# RUN: llvm-objdump -t %t.remove-text.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT
-+#
-+# RUN: not llvm-objcopy -R .comdat %t.in.o %t.remove-comdat.o 2>&1 | FileCheck %s --check-prefix=ERROR-RELOC
-+#
-+# RUN: llvm-objcopy -R .text -R .comdat %t.in.o %t.remove-text-comdat.o
-+# RUN: llvm-objdump -section-headers %t.remove-text-comdat.o | FileCheck %s --check-prefix=SECTIONS-REMOVE-TEXT-COMDAT
-+# RUN: llvm-objdump -t %t.remove-text-comdat.o | FileCheck %s --check-prefix=SYMBOLS-REMOVE-TEXT-COMDAT
-+#
-+#
-+# SECTIONS-PRE: Sections:
-+# SECTIONS-PRE-NEXT: Idx Name
-+# SECTIONS-PRE-NEXT: 0 .text
-+# SECTIONS-PRE-NEXT: 1 .bss
-+# SECTIONS-PRE-NEXT: 2 .comdat
-+# SECTIONS-PRE-NEXT: 3 .associative
-+# SECTIONS-PRE-EMPTY:
-+#
-+# SYMBOLS-PRE: SYMBOL TABLE:
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec -1){{.*}} @feat.00
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} .text
-+# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 2){{.*}} .bss
-+# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 2 comdat 0
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 4){{.*}} .associative
-+# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 5
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} .comdat
-+# SYMBOLS-PRE-NEXT: AUX scnlen {{.*}} assoc 3 comdat 2
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 3){{.*}} foo
-+# SYMBOLS-PRE-NEXT: {{.*}}(sec 1){{.*}} main
-+# SYMBOLS-PRE-EMPTY:
-+#
-+#
-+# Removing the .bss section removes one symbol and its aux symbol,
-+# and updates the section indices in symbols pointing to later
-+# symbols, including the aux section defintitions.
-+#
-+# Testing that the absolute symbol @feat.00 survives the section number
-+# mangling.
-+#
-+# SECTIONS-REMOVE-BSS: Sections:
-+# SECTIONS-REMOVE-BSS-NEXT: Idx Name
-+# SECTIONS-REMOVE-BSS-NEXT: 0 .text
-+# SECTIONS-REMOVE-BSS-NEXT: 1 .comdat
-+# SECTIONS-REMOVE-BSS-NEXT: 2 .associative
-+# SECTIONS-REMOVE-BSS-EMPTY:
-+#
-+# SYMBOLS-REMOVE-BSS: SYMBOL TABLE:
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec -1){{.*}} @feat.00
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} .text
-+# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 3){{.*}} .associative
-+# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 5
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} .comdat
-+# SYMBOLS-REMOVE-BSS-NEXT: AUX scnlen {{.*}} assoc 2 comdat 2
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 2){{.*}} foo
-+# SYMBOLS-REMOVE-BSS-NEXT: {{.*}}(sec 1){{.*}} main
-+# SYMBOLS-REMOVE-BSS-EMPTY:
-+#
-+#
-+# Removing the .text section is ok and just removes the external symbol
-+# referring to it.
-+#
-+# SECTIONS-REMOVE-TEXT: Sections:
-+# SECTIONS-REMOVE-TEXT-NEXT: Idx Name
-+# SECTIONS-REMOVE-TEXT-NEXT: 0 .bss
-+# SECTIONS-REMOVE-TEXT-NEXT: 1 .comdat
-+# SECTIONS-REMOVE-TEXT-NEXT: 2 .associative
-+# SECTIONS-REMOVE-TEXT-EMPTY:
-+#
-+# SYMBOLS-REMOVE-TEXT: SYMBOL TABLE:
-+# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec -1){{.*}} @feat.00
-+# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 1){{.*}} .bss
-+# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
-+# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 3){{.*}} .associative
-+# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 5
-+# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} .comdat
-+# SYMBOLS-REMOVE-TEXT-NEXT: AUX scnlen {{.*}} assoc 2 comdat 2
-+# SYMBOLS-REMOVE-TEXT-NEXT: {{.*}}(sec 2){{.*}} foo
-+# SYMBOLS-REMOVE-TEXT-EMPTY:
-+#
-+#
-+# Removing the .comdat section fails, since the .text section has relocations
-+# against it.
-+#
-+# ERROR-RELOC: Relocation target foo ({{.*}}) not found
-+#
-+#
-+# Removing the .comdat section and .text (with a relocation against .comdat)
-+# works, as it also removes the .associative section transitively.
-+#
-+# SECTIONS-REMOVE-TEXT-COMDAT: Sections:
-+# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: Idx Name
-+# SECTIONS-REMOVE-TEXT-COMDAT-NEXT: 0 .bss
-+# SECTIONS-REMOVE-TEXT-COMDAT-EMPTY:
-+#
-+# SYMBOLS-REMOVE-TEXT-COMDAT: SYMBOL TABLE:
-+# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec -1){{.*}} @feat.00
-+# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: {{.*}}(sec 1){{.*}} .bss
-+# SYMBOLS-REMOVE-TEXT-COMDAT-NEXT: AUX scnlen {{.*}} assoc 1 comdat 0
-+# SYMBOLS-REMOVE-TEXT-COMDAT-EMPTY:
-+
-+--- !COFF
-+header:
-+ Machine: IMAGE_FILE_MACHINE_AMD64
-+ Characteristics: [ ]
-+sections:
-+ - Name: .text
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 488B0500000000C3
-+ Relocations:
-+ - VirtualAddress: 3
-+ SymbolName: foo
-+ Type: IMAGE_REL_AMD64_REL32
-+ - Name: .bss
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: ''
-+ - Name: .comdat
-+ Characteristics: [ IMAGE_SCN_LNK_COMDAT ]
-+ Alignment: 1
-+ SectionData: '2A000000'
-+ - Name: .associative
-+ Characteristics: [ IMAGE_SCN_LNK_COMDAT ]
-+ Alignment: 1
-+ SectionData: '0000000000000000'
-+symbols:
-+ - Name: '@feat.00'
-+ Value: 0
-+ SectionNumber: -1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ - Name: .text
-+ Value: 0
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ SectionDefinition:
-+ Length: 8
-+ NumberOfRelocations: 1
-+ NumberOfLinenumbers: 0
-+ CheckSum: 583624169
-+ Number: 1
-+ - Name: .bss
-+ Value: 0
-+ SectionNumber: 2
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ SectionDefinition:
-+ Length: 0
-+ NumberOfRelocations: 0
-+ NumberOfLinenumbers: 0
-+ CheckSum: 0
-+ Number: 2
-+ - Name: .associative
-+ Value: 0
-+ SectionNumber: 4
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ SectionDefinition:
-+ Length: 8
-+ NumberOfRelocations: 0
-+ NumberOfLinenumbers: 0
-+ CheckSum: 0
-+ Number: 3
-+ Selection: IMAGE_COMDAT_SELECT_ASSOCIATIVE
-+ - Name: .comdat
-+ Value: 0
-+ SectionNumber: 3
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ SectionDefinition:
-+ Length: 4
-+ NumberOfRelocations: 0
-+ NumberOfLinenumbers: 0
-+ CheckSum: 3482275674
-+ Number: 3
-+ Selection: IMAGE_COMDAT_SELECT_ANY
-+ - Name: foo
-+ Value: 0
-+ SectionNumber: 3
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: main
-+ Value: 0
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+...
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 437dccbd3d5..dd2e4829218 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -27,9 +27,17 @@ using namespace object;
- using namespace COFF;
-
- static Error handleArgs(const CopyConfig &Config, Object &Obj) {
-+ // Perform the actual section removals.
-+ Obj.removeSections([&Config](const Section &Sec) {
-+ if (is_contained(Config.ToRemove, Sec.Name))
-+ return true;
-+
-+ return false;
-+ });
-+
- // StripAll removes all symbols and thus also removes all relocations.
- if (Config.StripAll || Config.StripAllGNU)
-- for (Section &Sec : Obj.Sections)
-+ for (Section &Sec : Obj.getMutableSections())
- Sec.Relocs.clear();
-
- // If we need to do per-symbol removals, initialize the Referenced field.
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.cpp b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-index e58e161e7d2..e19cea6aa9d 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-@@ -7,6 +7,7 @@
- //===----------------------------------------------------------------------===//
-
- #include "Object.h"
-+#include "llvm/ADT/DenseSet.h"
- #include <algorithm>
-
- namespace llvm {
-@@ -64,6 +65,68 @@ Error Object::markSymbols() {
- return Error::success();
- }
-
-+void Object::addSections(ArrayRef<Section> NewSections) {
-+ for (Section S : NewSections) {
-+ S.UniqueId = NextSectionUniqueId++;
-+ Sections.emplace_back(S);
-+ }
-+ updateSections();
-+}
-+
-+void Object::updateSections() {
-+ SectionMap = DenseMap<ssize_t, Section *>(Sections.size());
-+ size_t Index = 1;
-+ for (Section &S : Sections) {
-+ SectionMap[S.UniqueId] = &S;
-+ S.Index = Index++;
-+ }
-+}
-+
-+const Section *Object::findSection(ssize_t UniqueId) const {
-+ auto It = SectionMap.find(UniqueId);
-+ if (It == SectionMap.end())
-+ return nullptr;
-+ return It->second;
-+}
-+
-+void Object::removeSections(function_ref<bool(const Section &)> ToRemove) {
-+ DenseSet<ssize_t> AssociatedSections;
-+ auto RemoveAssociated = [&AssociatedSections](const Section &Sec) {
-+ return AssociatedSections.count(Sec.UniqueId) == 1;
-+ };
-+ do {
-+ DenseSet<ssize_t> RemovedSections;
-+ Sections.erase(
-+ std::remove_if(std::begin(Sections), std::end(Sections),
-+ [ToRemove, &RemovedSections](const Section &Sec) {
-+ bool Remove = ToRemove(Sec);
-+ if (Remove)
-+ RemovedSections.insert(Sec.UniqueId);
-+ return Remove;
-+ }),
-+ std::end(Sections));
-+ // Remove all symbols referring to the removed sections.
-+ AssociatedSections.clear();
-+ Symbols.erase(
-+ std::remove_if(
-+ std::begin(Symbols), std::end(Symbols),
-+ [&RemovedSections, &AssociatedSections](const Symbol &Sym) {
-+ // If there are sections that are associative to a removed
-+ // section,
-+ // remove those as well as nothing will include them (and we can't
-+ // leave them dangling).
-+ if (RemovedSections.count(Sym.AssociativeComdatTargetSectionId) ==
-+ 1)
-+ AssociatedSections.insert(Sym.TargetSectionId);
-+ return RemovedSections.count(Sym.TargetSectionId) == 1;
-+ }),
-+ std::end(Symbols));
-+ ToRemove = RemoveAssociated;
-+ } while (!AssociatedSections.empty());
-+ updateSections();
-+ updateSymbols();
-+}
-+
- } // end namespace coff
- } // end namespace objcopy
- } // end namespace llvm
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h
-index e6147c40b7c..a73e93620d3 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.h
-@@ -37,12 +37,16 @@ struct Section {
- ArrayRef<uint8_t> Contents;
- std::vector<Relocation> Relocs;
- StringRef Name;
-+ ssize_t UniqueId;
-+ size_t Index;
- };
-
- struct Symbol {
- object::coff_symbol32 Sym;
- StringRef Name;
-- ArrayRef<uint8_t> AuxData;
-+ std::vector<uint8_t> AuxData;
-+ ssize_t TargetSectionId;
-+ ssize_t AssociativeComdatTargetSectionId = 0;
- size_t UniqueId;
- size_t RawIndex;
- bool Referenced;
-@@ -61,7 +65,6 @@ struct Object {
- uint32_t BaseOfData = 0; // pe32plus_header lacks this field.
-
- std::vector<object::data_directory> DataDirectories;
-- std::vector<Section> Sections;
-
- ArrayRef<Symbol> getSymbols() const { return Symbols; }
- // This allows mutating individual Symbols, but not mutating the list
-@@ -79,14 +82,34 @@ struct Object {
- // all sections.
- Error markSymbols();
-
-+ ArrayRef<Section> getSections() const { return Sections; }
-+ // This allows mutating individual Sections, but not mutating the list
-+ // of symbols itself.
-+ iterator_range<std::vector<Section>::iterator> getMutableSections() {
-+ return make_range(Sections.begin(), Sections.end());
-+ }
-+
-+ const Section *findSection(ssize_t UniqueId) const;
-+
-+ void addSections(ArrayRef<Section> NewSections);
-+ void removeSections(function_ref<bool(const Section &)> ToRemove);
-+
- private:
- std::vector<Symbol> Symbols;
- DenseMap<size_t, Symbol *> SymbolMap;
-
- size_t NextSymbolUniqueId = 0;
-
-+ std::vector<Section> Sections;
-+ DenseMap<ssize_t, Section *> SectionMap;
-+
-+ ssize_t NextSectionUniqueId = 1; // Allow a UniqueId 0 to mean undefined.
-+
- // Update SymbolMap and RawIndex in each Symbol.
- void updateSymbols();
-+
-+ // Update SectionMap and Index in each Section.
-+ void updateSections();
- };
-
- // Copy between coff_symbol16 and coff_symbol32.
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.cpp b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-index d794042ae24..c8abe2913a2 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-@@ -11,6 +11,7 @@
- #include "llvm-objcopy.h"
- #include "llvm/ADT/ArrayRef.h"
- #include "llvm/ADT/StringRef.h"
-+#include "llvm/BinaryFormat/COFF.h"
- #include "llvm/Object/COFF.h"
- #include "llvm/Support/ErrorHandling.h"
- #include <cstddef>
-@@ -21,6 +22,7 @@ namespace objcopy {
- namespace coff {
-
- using namespace object;
-+using namespace COFF;
-
- Error COFFReader::readExecutableHeaders(Object &Obj) const {
- const dos_header *DH = COFFObj.getDOSHeader();
-@@ -58,13 +60,14 @@ Error COFFReader::readExecutableHeaders(Object &Obj) const {
- }
-
- Error COFFReader::readSections(Object &Obj) const {
-+ std::vector<Section> Sections;
- // Section indexing starts from 1.
- for (size_t I = 1, E = COFFObj.getNumberOfSections(); I <= E; I++) {
- const coff_section *Sec;
- if (auto EC = COFFObj.getSection(I, Sec))
- return errorCodeToError(EC);
-- Obj.Sections.push_back(Section());
-- Section &S = Obj.Sections.back();
-+ Sections.push_back(Section());
-+ Section &S = Sections.back();
- S.Header = *Sec;
- if (auto EC = COFFObj.getSectionContents(Sec, S.Contents))
- return errorCodeToError(EC);
-@@ -77,12 +80,14 @@ Error COFFReader::readSections(Object &Obj) const {
- return make_error<StringError>("Extended relocations not supported yet",
- object_error::parse_failed);
- }
-+ Obj.addSections(Sections);
- return Error::success();
- }
-
- Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- std::vector<Symbol> Symbols;
- Symbols.reserve(COFFObj.getRawNumberOfSymbols());
-+ ArrayRef<Section> Sections = Obj.getSections();
- for (uint32_t I = 0, E = COFFObj.getRawNumberOfSymbols(); I < E;) {
- Expected<COFFSymbolRef> SymOrErr = COFFObj.getSymbol(I);
- if (!SymOrErr)
-@@ -103,6 +108,26 @@ Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- Sym.AuxData = COFFObj.getSymbolAuxData(SymRef);
- assert((Sym.AuxData.size() %
- (IsBigObj ? sizeof(coff_symbol32) : sizeof(coff_symbol16))) == 0);
-+ // Find the unique id of the section
-+ if (SymRef.getSectionNumber() <=
-+ 0) // Special symbol (undefined/absolute/debug)
-+ Sym.TargetSectionId = SymRef.getSectionNumber();
-+ else if (static_cast<uint32_t>(SymRef.getSectionNumber() - 1) <
-+ Sections.size())
-+ Sym.TargetSectionId = Sections[SymRef.getSectionNumber() - 1].UniqueId;
-+ else
-+ return make_error<StringError>("Section number out of range",
-+ object_error::parse_failed);
-+ // For section definitions, check if it is comdat associative, and if
-+ // it is, find the target section unique id.
-+ const coff_aux_section_definition *SD = SymRef.getSectionDefinition();
-+ if (SD && SD->Selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) {
-+ int32_t Index = SD->getNumber(IsBigObj);
-+ if (Index <= 0 || static_cast<uint32_t>(Index - 1) >= Sections.size())
-+ return make_error<StringError>("Unexpected associative section index",
-+ object_error::parse_failed);
-+ Sym.AssociativeComdatTargetSectionId = Sections[Index - 1].UniqueId;
-+ }
- I += 1 + SymRef.getNumberOfAuxSymbols();
- }
- Obj.addSymbols(Symbols);
-@@ -116,7 +141,7 @@ Error COFFReader::setRelocTargets(Object &Obj) const {
- for (size_t I = 0; I < Sym.Sym.NumberOfAuxSymbols; I++)
- RawSymbolTable.push_back(nullptr);
- }
-- for (Section &Sec : Obj.Sections) {
-+ for (Section &Sec : Obj.getMutableSections()) {
- for (Relocation &R : Sec.Relocs) {
- if (R.Reloc.SymbolTableIndex >= RawSymbolTable.size())
- return make_error<StringError>("SymbolTableIndex out of range",
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index c347810dd24..9fb7812672b 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -25,7 +25,7 @@ using namespace object;
- using namespace COFF;
-
- Error COFFWriter::finalizeRelocTargets() {
-- for (Section &Sec : Obj.Sections) {
-+ for (Section &Sec : Obj.getMutableSections()) {
- for (Relocation &R : Sec.Relocs) {
- const Symbol *Sym = Obj.findSymbol(R.Target);
- if (Sym == nullptr)
-@@ -39,8 +39,48 @@ Error COFFWriter::finalizeRelocTargets() {
- return Error::success();
- }
-
-+Error COFFWriter::finalizeSectionNumbers() {
-+ for (Symbol &Sym : Obj.getMutableSymbols()) {
-+ if (Sym.TargetSectionId <= 0) {
-+ // Undefined, or a special kind of symbol. These negative values
-+ // are stored in the SectionNumber field which is unsigned.
-+ Sym.Sym.SectionNumber = static_cast<uint32_t>(Sym.TargetSectionId);
-+ } else {
-+ const Section *Sec = Obj.findSection(Sym.TargetSectionId);
-+ if (Sec == nullptr)
-+ return make_error<StringError>("Symbol " + Sym.Name +
-+ " points to a removed section",
-+ object_error::invalid_symbol_index);
-+ Sym.Sym.SectionNumber = Sec->Index;
-+
-+ if (Sym.Sym.NumberOfAuxSymbols == 1 &&
-+ Sym.Sym.StorageClass == IMAGE_SYM_CLASS_STATIC) {
-+ coff_aux_section_definition *SD =
-+ reinterpret_cast<coff_aux_section_definition *>(Sym.AuxData.data());
-+ uint32_t SDSectionNumber;
-+ if (Sym.AssociativeComdatTargetSectionId == 0) {
-+ // Not a comdat associative section; just set the Number field to
-+ // the number of the section itself.
-+ SDSectionNumber = Sec->Index;
-+ } else {
-+ Sec = Obj.findSection(Sym.AssociativeComdatTargetSectionId);
-+ if (Sec == nullptr)
-+ return make_error<StringError>(
-+ "Symbol " + Sym.Name + " is associative to a removed section",
-+ object_error::invalid_symbol_index);
-+ SDSectionNumber = Sec->Index;
-+ }
-+ // Update the section definition with the new section number.
-+ SD->NumberLowPart = static_cast<uint16_t>(SDSectionNumber);
-+ SD->NumberHighPart = static_cast<uint16_t>(SDSectionNumber >> 16);
-+ }
-+ }
-+ }
-+ return Error::success();
-+}
-+
- void COFFWriter::layoutSections() {
-- for (auto &S : Obj.Sections) {
-+ for (auto &S : Obj.getMutableSections()) {
- if (S.Header.SizeOfRawData > 0)
- S.Header.PointerToRawData = FileSize;
- FileSize += S.Header.SizeOfRawData; // For executables, this is already
-@@ -57,7 +97,7 @@ void COFFWriter::layoutSections() {
- }
-
- size_t COFFWriter::finalizeStringTable() {
-- for (auto &S : Obj.Sections)
-+ for (const auto &S : Obj.getSections())
- if (S.Name.size() > COFF::NameSize)
- StrTabBuilder.add(S.Name);
-
-@@ -67,7 +107,7 @@ size_t COFFWriter::finalizeStringTable() {
-
- StrTabBuilder.finalize();
-
-- for (auto &S : Obj.Sections) {
-+ for (auto &S : Obj.getMutableSections()) {
- if (S.Name.size() > COFF::NameSize) {
- snprintf(S.Header.Name, sizeof(S.Header.Name), "/%d",
- (int)StrTabBuilder.getOffset(S.Name));
-@@ -97,6 +137,8 @@ std::pair<size_t, size_t> COFFWriter::finalizeSymbolTable() {
- Error COFFWriter::finalize(bool IsBigObj) {
- if (Error E = finalizeRelocTargets())
- return E;
-+ if (Error E = finalizeSectionNumbers())
-+ return E;
-
- size_t SizeOfHeaders = 0;
- FileAlignment = 1;
-@@ -113,10 +155,10 @@ Error COFFWriter::finalize(bool IsBigObj) {
- SizeOfHeaders +=
- PeHeaderSize + sizeof(data_directory) * Obj.DataDirectories.size();
- }
-- Obj.CoffFileHeader.NumberOfSections = Obj.Sections.size();
-+ Obj.CoffFileHeader.NumberOfSections = Obj.getSections().size();
- SizeOfHeaders +=
- IsBigObj ? sizeof(coff_bigobj_file_header) : sizeof(coff_file_header);
-- SizeOfHeaders += sizeof(coff_section) * Obj.Sections.size();
-+ SizeOfHeaders += sizeof(coff_section) * Obj.getSections().size();
- SizeOfHeaders = alignTo(SizeOfHeaders, FileAlignment);
-
- Obj.CoffFileHeader.SizeOfOptionalHeader =
-@@ -131,8 +173,8 @@ Error COFFWriter::finalize(bool IsBigObj) {
- Obj.PeHeader.SizeOfHeaders = SizeOfHeaders;
- Obj.PeHeader.SizeOfInitializedData = SizeOfInitializedData;
-
-- if (!Obj.Sections.empty()) {
-- const Section &S = Obj.Sections.back();
-+ if (!Obj.getSections().empty()) {
-+ const Section &S = Obj.getSections().back();
- Obj.PeHeader.SizeOfImage =
- alignTo(S.Header.VirtualAddress + S.Header.VirtualSize,
- Obj.PeHeader.SectionAlignment);
-@@ -198,7 +240,7 @@ void COFFWriter::writeHeaders(bool IsBigObj) {
- BigObjHeader.unused4 = 0;
- // The value in Obj.CoffFileHeader.NumberOfSections is truncated, thus
- // get the original one instead.
-- BigObjHeader.NumberOfSections = Obj.Sections.size();
-+ BigObjHeader.NumberOfSections = Obj.getSections().size();
- BigObjHeader.PointerToSymbolTable = Obj.CoffFileHeader.PointerToSymbolTable;
- BigObjHeader.NumberOfSymbols = Obj.CoffFileHeader.NumberOfSymbols;
-
-@@ -223,14 +265,14 @@ void COFFWriter::writeHeaders(bool IsBigObj) {
- Ptr += sizeof(DD);
- }
- }
-- for (const auto &S : Obj.Sections) {
-+ for (const auto &S : Obj.getSections()) {
- memcpy(Ptr, &S.Header, sizeof(S.Header));
- Ptr += sizeof(S.Header);
- }
- }
-
- void COFFWriter::writeSections() {
-- for (const auto &S : Obj.Sections) {
-+ for (const auto &S : Obj.getSections()) {
- uint8_t *Ptr = Buf.getBufferStart() + S.Header.PointerToRawData;
- std::copy(S.Contents.begin(), S.Contents.end(), Ptr);
-
-@@ -295,7 +337,7 @@ Error COFFWriter::patchDebugDirectory() {
- const data_directory *Dir = &Obj.DataDirectories[DEBUG_DIRECTORY];
- if (Dir->Size <= 0)
- return Error::success();
-- for (const auto &S : Obj.Sections) {
-+ for (const auto &S : Obj.getSections()) {
- if (Dir->RelativeVirtualAddress >= S.Header.VirtualAddress &&
- Dir->RelativeVirtualAddress <
- S.Header.VirtualAddress + S.Header.SizeOfRawData) {
-@@ -324,7 +366,7 @@ Error COFFWriter::patchDebugDirectory() {
- }
-
- Error COFFWriter::write() {
-- bool IsBigObj = Obj.Sections.size() > MaxNumberOfSections16;
-+ bool IsBigObj = Obj.getSections().size() > MaxNumberOfSections16;
- if (IsBigObj && Obj.IsPE)
- return make_error<StringError>("Too many sections for executable",
- object_error::parse_failed);
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.h b/llvm/tools/llvm-objcopy/COFF/Writer.h
-index 52fef385926..a967a103df9 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.h
-@@ -31,6 +31,7 @@ class COFFWriter {
- StringTableBuilder StrTabBuilder;
-
- Error finalizeRelocTargets();
-+ Error finalizeSectionNumbers();
- void layoutSections();
- size_t finalizeStringTable();
- template <class SymbolTy> std::pair<size_t, size_t> finalizeSymbolTable();
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-3.patch b/projects/clang/win-patches/llvm-objcopy-3.patch
deleted file mode 100644
index 6e303c0..0000000
--- a/projects/clang/win-patches/llvm-objcopy-3.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From 2b6e1b7585d6bd997ea4e4233c904a6d2c11ad33 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Sat, 19 Jan 2019 19:42:41 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Implement --strip-debug
-
-Also remove sections similarly for --strip-all, --discard-all,
---strip-unneeded.
-
-Differential Revision: https://reviews.llvm.org/D56839
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351661 91177308-0d34-0410-b5e6-96231b3b80d8
----
- test/tools/llvm-objcopy/COFF/strip-debug.test | 109 ++++++++++++++++++
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 11 ++
- 2 files changed, 120 insertions(+)
- create mode 100644 test/tools/llvm-objcopy/COFF/strip-debug.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/strip-debug.test b/llvm/test/tools/llvm-objcopy/COFF/strip-debug.test
-new file mode 100644
-index 00000000000..97fa96aac70
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/strip-debug.test
-@@ -0,0 +1,109 @@
-+# RUN: yaml2obj %s > %t.in.o
-+#
-+# RUN: llvm-objdump --section-headers %t.in.o | FileCheck %s --check-prefixes=SECTIONS,SECTIONS-PRE
-+# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-PRE
-+#
-+# RUN: llvm-objcopy --strip-debug %t.in.o %t.out.o
-+# RUN: llvm-objdump --section-headers %t.out.o | FileCheck %s --check-prefixes=SECTIONS
-+# RUN: llvm-objdump -t %t.out.o | FileCheck %s --check-prefixes=SYMBOLS
-+#
-+# Test that --strip-all, --strip-all-gnu, --discard-all and --strip-unneeded,
-+# plus llvm-strip without arguments all produce a similiar set of sections
-+# (while they remove symbols differently).
-+#
-+# RUN: llvm-objcopy --strip-all %t.in.o %t.strip-all.o
-+# RUN: llvm-objdump --section-headers %t.strip-all.o | FileCheck %s --check-prefixes=SECTIONS
-+#
-+# RUN: llvm-objcopy --strip-all-gnu %t.in.o %t.strip-all-gnu.o
-+# RUN: llvm-objdump --section-headers %t.strip-all-gnu.o | FileCheck %s --check-prefixes=SECTIONS
-+#
-+# RUN: llvm-objcopy --discard-all %t.in.o %t.discard-all.o
-+# RUN: llvm-objdump --section-headers %t.discard-all.o | FileCheck %s --check-prefixes=SECTIONS
-+#
-+# RUN: llvm-objcopy --discard-all %t.in.o %t.strip-unneeded.o
-+# RUN: llvm-objdump --section-headers %t.strip-unneeded.o | FileCheck %s --check-prefixes=SECTIONS
-+#
-+# SECTIONS: Sections:
-+# SECTIONS-NEXT: Idx Name
-+# SECTIONS-NEXT: 0 .text
-+# SECTIONS-NEXT: 1 .data
-+# SECTIONS-NEXT: 2 .bss
-+# SECTIONS-NEXT: 3 .xdata
-+# SECTIONS-NEXT: 4 .reloc
-+# SECTIONS-PRE-NEXT: 5 .debug_discardable
-+# SECTIONS-NEXT: {{.*}} .debug_undiscardable
-+# SECTIONS-NEXT: {{.*}} .llvm_addrsig
-+# SECTIONS-EMPTY:
-+#
-+# Test that --strip-debug doesn't remove e.g. unreferenced local symbols.
-+#
-+# SYMBOLS: SYMBOL TABLE:
-+# SYMBOLS-NEXT: external
-+# SYMBOLS-NEXT: local_unreferenced
-+# SYMBOLS-PRE-NEXT: debug_discardable_sym
-+# SYMBOLS-NEXT: debug_undiscardable_sym
-+# SYMBOLS-EMPTY:
-+
-+--- !COFF
-+header:
-+ Machine: IMAGE_FILE_MACHINE_AMD64
-+ Characteristics: [ ]
-+sections:
-+ - Name: .text
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .data
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .bss
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .xdata
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .reloc
-+ Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .debug_discardable
-+ Characteristics: [ IMAGE_SCN_MEM_DISCARDABLE ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .debug_undiscardable
-+ Characteristics: [ ]
-+ Alignment: 4
-+ SectionData: 00000000
-+ - Name: .llvm_addrsig
-+ Characteristics: [ IMAGE_SCN_LNK_REMOVE ]
-+ Alignment: 4
-+ SectionData: 00000000
-+symbols:
-+ - Name: external
-+ Value: 0
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: local_unreferenced
-+ Value: 0
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_STATIC
-+ - Name: debug_discardable_sym
-+ Value: 0
-+ SectionNumber: 6
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: debug_undiscardable_sym
-+ Value: 0
-+ SectionNumber: 7
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+...
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index dd2e4829218..13d8efde37c 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -26,9 +26,20 @@ namespace coff {
- using namespace object;
- using namespace COFF;
-
-+static bool isDebugSection(const Section &Sec) {
-+ return Sec.Name.startswith(".debug");
-+}
-+
- static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- // Perform the actual section removals.
- Obj.removeSections([&Config](const Section &Sec) {
-+ if (Config.StripDebug || Config.StripAll || Config.StripAllGNU ||
-+ Config.DiscardAll || Config.StripUnneeded) {
-+ if (isDebugSection(Sec) &&
-+ (Sec.Header.Characteristics & IMAGE_SCN_MEM_DISCARDABLE) != 0)
-+ return true;
-+ }
-+
- if (is_contained(Config.ToRemove, Sec.Name))
- return true;
-
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-4.patch b/projects/clang/win-patches/llvm-objcopy-4.patch
deleted file mode 100644
index e922384..0000000
--- a/projects/clang/win-patches/llvm-objcopy-4.patch
+++ /dev/null
@@ -1,222 +0,0 @@
-From 526aa2e94355b7feb3bf7774a6e1899f68e94ad8 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Sat, 19 Jan 2019 19:42:48 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Implement --only-keep-debug
-
-Differential Revision: https://reviews.llvm.org/D56840
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351662 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../COFF/Inputs/only-keep-sections.yaml | 77 +++++++++++++++++++
- .../llvm-objcopy/COFF/only-keep-debug.test | 58 ++++++++++++++
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 10 +++
- tools/llvm-objcopy/COFF/Object.cpp | 10 +++
- tools/llvm-objcopy/COFF/Object.h | 1 +
- 5 files changed, 156 insertions(+)
- create mode 100644 test/tools/llvm-objcopy/COFF/Inputs/only-keep-sections.yaml
- create mode 100644 test/tools/llvm-objcopy/COFF/only-keep-debug.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/Inputs/only-keep-sections.yaml b/llvm/test/tools/llvm-objcopy/COFF/Inputs/only-keep-sections.yaml
-new file mode 100644
-index 00000000000..b5437e10763
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/Inputs/only-keep-sections.yaml
-@@ -0,0 +1,77 @@
-+--- !COFF
-+OptionalHeader:
-+ AddressOfEntryPoint: 4144
-+ ImageBase: 1073741824
-+ SectionAlignment: 4096
-+ FileAlignment: 512
-+ MajorOperatingSystemVersion: 6
-+ MinorOperatingSystemVersion: 0
-+ MajorImageVersion: 0
-+ MinorImageVersion: 0
-+ MajorSubsystemVersion: 6
-+ MinorSubsystemVersion: 0
-+ Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI
-+ DLLCharacteristics: [ ]
-+ SizeOfStackReserve: 1048576
-+ SizeOfStackCommit: 4096
-+ SizeOfHeapReserve: 1048576
-+ SizeOfHeapCommit: 4096
-+header:
-+ Machine: IMAGE_FILE_MACHINE_AMD64
-+ Characteristics: [ ]
-+sections:
-+ - Name: .text
-+ Characteristics: [ IMAGE_SCN_CNT_CODE ]
-+ VirtualAddress: 4096
-+ VirtualSize: 4
-+ SectionData: C3C3C3C3
-+ - Name: .rdata
-+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA ]
-+ VirtualAddress: 8192
-+ VirtualSize: 4
-+ SectionData: 2A000000
-+ - Name: .buildid
-+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA ]
-+ VirtualAddress: 12288
-+ VirtualSize: 4
-+ SectionData: 2B000000
-+ - Name: .reloc
-+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE ]
-+ VirtualAddress: 16384
-+ VirtualSize: 4
-+ SectionData: 2C000000
-+ - Name: .debug_discardable
-+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_DISCARDABLE ]
-+ VirtualAddress: 20480
-+ VirtualSize: 4
-+ SectionData: 2D000000
-+ - Name: .debug_undiscardable
-+ Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA ]
-+ VirtualAddress: 24576
-+ VirtualSize: 4
-+ SectionData: 2E000000
-+ - Name: .unflagged
-+ Characteristics: [ ]
-+ VirtualAddress: 28672
-+ VirtualSize: 4
-+ SectionData: 2F000000
-+symbols:
-+ - Name: main
-+ Value: 2
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: debug_discardable_sym
-+ Value: 0
-+ SectionNumber: 5
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: debug_undiscardable_sym
-+ Value: 0
-+ SectionNumber: 6
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+...
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/only-keep-debug.test b/llvm/test/tools/llvm-objcopy/COFF/only-keep-debug.test
-new file mode 100644
-index 00000000000..5518d4000fc
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/only-keep-debug.test
-@@ -0,0 +1,58 @@
-+RUN: yaml2obj %p/Inputs/only-keep-sections.yaml > %t.in.exe
-+
-+RUN: llvm-objcopy --only-keep-debug %t.in.exe %t.out.exe
-+RUN: llvm-readobj --sections %t.out.exe | FileCheck %s --check-prefix=SECTIONS
-+RUN: llvm-objdump -t %t.out.exe | FileCheck %s --check-prefix=SYMBOLS
-+
-+Check that all non-debug/buildid sections with IMAGE_SCN_CNT_CODE
-+or IMAGE_SCN_CNT_INITIALIZED_DATA are truncated, and no others.
-+
-+SECTIONS: Sections [
-+SECTIONS-NEXT: Section {
-+SECTIONS-NEXT: Number: 1
-+SECTIONS-NEXT: Name: .text
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 0
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 2
-+SECTIONS-NEXT: Name: .rdata
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 0
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 3
-+SECTIONS-NEXT: Name: .buildid
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 512
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 4
-+SECTIONS-NEXT: Name: .reloc
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 0
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 5
-+SECTIONS-NEXT: Name: .debug_discardable
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 512
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 6
-+SECTIONS-NEXT: Name: .debug_undiscardable
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 512
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 7
-+SECTIONS-NEXT: Name: .unflagged
-+SECTIONS-NEXT: VirtualSize: 0x4
-+SECTIONS-NEXT: VirtualAddress:
-+SECTIONS-NEXT: RawDataSize: 512
-+
-+SYMBOLS: SYMBOL TABLE:
-+SYMBOLS-NEXT: main
-+SYMBOLS-NEXT: debug_discardable_sym
-+SYMBOLS-NEXT: debug_undiscardable_sym
-+SYMBOLS-EMPTY:
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 13d8efde37c..60afbf7bb54 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -46,6 +46,16 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- return false;
- });
-
-+ if (Config.OnlyKeepDebug) {
-+ // For --only-keep-debug, we keep all other sections, but remove their
-+ // content. The VirtualSize field in the section header is kept intact.
-+ Obj.truncateSections([](const Section &Sec) {
-+ return !isDebugSection(Sec) && Sec.Name != ".buildid" &&
-+ ((Sec.Header.Characteristics &
-+ (IMAGE_SCN_CNT_CODE | IMAGE_SCN_CNT_INITIALIZED_DATA)) != 0);
-+ });
-+ }
-+
- // StripAll removes all symbols and thus also removes all relocations.
- if (Config.StripAll || Config.StripAllGNU)
- for (Section &Sec : Obj.getMutableSections())
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.cpp b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-index e19cea6aa9d..fc87d9e574d 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-@@ -127,6 +127,16 @@ void Object::removeSections(function_ref<bool(const Section &)> ToRemove) {
- updateSymbols();
- }
-
-+void Object::truncateSections(function_ref<bool(const Section &)> ToTruncate) {
-+ for (Section &Sec : Sections) {
-+ if (ToTruncate(Sec)) {
-+ Sec.Contents = ArrayRef<uint8_t>();
-+ Sec.Relocs.clear();
-+ Sec.Header.SizeOfRawData = 0;
-+ }
-+ }
-+}
-+
- } // end namespace coff
- } // end namespace objcopy
- } // end namespace llvm
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h
-index a73e93620d3..8e200369f0b 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.h
-@@ -93,6 +93,7 @@ struct Object {
-
- void addSections(ArrayRef<Section> NewSections);
- void removeSections(function_ref<bool(const Section &)> ToRemove);
-+ void truncateSections(function_ref<bool(const Section &)> ToTruncate);
-
- private:
- std::vector<Symbol> Symbols;
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-5.patch b/projects/clang/win-patches/llvm-objcopy-5.patch
deleted file mode 100644
index 657c72a..0000000
--- a/projects/clang/win-patches/llvm-objcopy-5.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 17dcf25b3ade15605ca27150e4440bcc75caed65 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Sat, 19 Jan 2019 19:42:54 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Implement --only-section
-
-Differential Revision: https://reviews.llvm.org/D56873
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351663 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../tools/llvm-objcopy/COFF/only-section.test | 21 +++++++++++++++++++
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 6 ++++++
- 2 files changed, 27 insertions(+)
- create mode 100644 test/tools/llvm-objcopy/COFF/only-section.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/only-section.test b/llvm/test/tools/llvm-objcopy/COFF/only-section.test
-new file mode 100644
-index 00000000000..42492ed80ff
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/only-section.test
-@@ -0,0 +1,21 @@
-+RUN: yaml2obj %p/Inputs/only-keep-sections.yaml > %t.in.exe
-+
-+RUN: llvm-objcopy --only-section .debug_discardable %t.in.exe %t.out.exe
-+RUN: llvm-objdump --section-headers -t %t.out.exe | FileCheck %s --check-prefixes=SECTIONS,SECTIONS-DEBUG,SYMBOLS,SYMBOLS-DEBUG
-+
-+Adding another section stripping option makes it return the intersection of
-+kept sections - in this case keeping only .text.
-+
-+RUN: llvm-objcopy --only-section .debug_discardable --only-section .text --strip-debug %t.in.exe %t.combination.exe
-+RUN: llvm-objdump --section-headers -t %t.combination.exe | FileCheck %s --check-prefixes=SECTIONS,SECTIONS-TEXT,SYMBOLS,SYMBOLS-TEXT
-+
-+SECTIONS: Sections:
-+SECTIONS-NEXT: Idx Name
-+SECTIONS-DEBUG-NEXT: .debug_discardable
-+SECTIONS-TEXT-NEXT: .text
-+SECTIONS-EMPTY:
-+
-+SYMBOLS: SYMBOL TABLE:
-+SYMBOLS-DEBUG-NEXT: debug_discardable_sym
-+SYMBOLS-TEXT-NEXT: main
-+SYMBOLS-EMPTY:
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 60afbf7bb54..99929d10a1f 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -33,6 +33,12 @@ static bool isDebugSection(const Section &Sec) {
- static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- // Perform the actual section removals.
- Obj.removeSections([&Config](const Section &Sec) {
-+ // Contrary to --only-keep-debug, --only-section fully removes sections that
-+ // aren't mentioned.
-+ if (!Config.OnlySection.empty() &&
-+ !is_contained(Config.OnlySection, Sec.Name))
-+ return true;
-+
- if (Config.StripDebug || Config.StripAll || Config.StripAllGNU ||
- Config.DiscardAll || Config.StripUnneeded) {
- if (isDebugSection(Sec) &&
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-6.patch b/projects/clang/win-patches/llvm-objcopy-6.patch
deleted file mode 100644
index e70f1b9..0000000
--- a/projects/clang/win-patches/llvm-objcopy-6.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From d3b89a1637cddee1c61e59257cfe92227ead29e5 Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Tue, 22 Jan 2019 10:57:59 +0000
-Subject: [PATCH] [llvm-objcopy] Consistently use createStringError instead of
- make_error<StringError>
-
-This was requested in the review of D57006.
-
-Also add missing quotes around symbol names in error messages.
-
-Differential Revision: https://reviews.llvm.org/D57014
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351799 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../llvm-objcopy/COFF/remove-section.test | 2 +-
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 8 ++---
- tools/llvm-objcopy/COFF/Object.cpp | 5 ++-
- tools/llvm-objcopy/COFF/Reader.cpp | 24 +++++++-------
- tools/llvm-objcopy/COFF/Writer.cpp | 33 +++++++++----------
- tools/llvm-objcopy/ELF/ELFObjcopy.cpp | 10 +++---
- 6 files changed, 40 insertions(+), 42 deletions(-)
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/remove-section.test b/llvm/test/tools/llvm-objcopy/COFF/remove-section.test
-index b3dfb0b98cb..6dc8f6a6c2e 100644
---- a/llvm/test/tools/llvm-objcopy/COFF/remove-section.test
-+++ b/llvm/test/tools/llvm-objcopy/COFF/remove-section.test
-@@ -96,7 +96,7 @@
- # Removing the .comdat section fails, since the .text section has relocations
- # against it.
- #
--# ERROR-RELOC: Relocation target foo ({{.*}}) not found
-+# ERROR-RELOC: Relocation target 'foo' ({{.*}}) not found
- #
- #
- # Removing the .comdat section and .text (with a relocation against .comdat)
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 99929d10a1f..8d8f53d13d8 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -84,10 +84,10 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- // Explicitly removing a referenced symbol is an error.
- if (Sym.Referenced)
- reportError(Config.OutputFilename,
-- make_error<StringError>(
-- "not stripping symbol '" + Sym.Name +
-- "' because it is named in a relocation.",
-- llvm::errc::invalid_argument));
-+ createStringError(llvm::errc::invalid_argument,
-+ "not stripping symbol '%s' because it is "
-+ "named in a relocation.",
-+ Sym.Name.str().c_str()));
- return true;
- }
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.cpp b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-index fc87d9e574d..83435dffa98 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-@@ -56,9 +56,8 @@ Error Object::markSymbols() {
- for (const Relocation &R : Sec.Relocs) {
- auto It = SymbolMap.find(R.Target);
- if (It == SymbolMap.end())
-- return make_error<StringError>("Relocation target " + Twine(R.Target) +
-- " not found",
-- object_error::invalid_symbol_index);
-+ return createStringError(object_error::invalid_symbol_index,
-+ "Relocation target %zu not found", R.Target);
- It->second->Referenced = true;
- }
- }
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.cpp b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-index c8abe2913a2..20ff32a59dc 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-@@ -77,8 +77,8 @@ Error COFFReader::readSections(Object &Obj) const {
- if (auto EC = COFFObj.getSectionName(Sec, S.Name))
- return errorCodeToError(EC);
- if (Sec->hasExtendedRelocations())
-- return make_error<StringError>("Extended relocations not supported yet",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Extended relocations not supported yet");
- }
- Obj.addSections(Sections);
- return Error::success();
-@@ -116,16 +116,16 @@ Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- Sections.size())
- Sym.TargetSectionId = Sections[SymRef.getSectionNumber() - 1].UniqueId;
- else
-- return make_error<StringError>("Section number out of range",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Section number out of range");
- // For section definitions, check if it is comdat associative, and if
- // it is, find the target section unique id.
- const coff_aux_section_definition *SD = SymRef.getSectionDefinition();
- if (SD && SD->Selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) {
- int32_t Index = SD->getNumber(IsBigObj);
- if (Index <= 0 || static_cast<uint32_t>(Index - 1) >= Sections.size())
-- return make_error<StringError>("Unexpected associative section index",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Unexpected associative section index");
- Sym.AssociativeComdatTargetSectionId = Sections[Index - 1].UniqueId;
- }
- I += 1 + SymRef.getNumberOfAuxSymbols();
-@@ -144,12 +144,12 @@ Error COFFReader::setRelocTargets(Object &Obj) const {
- for (Section &Sec : Obj.getMutableSections()) {
- for (Relocation &R : Sec.Relocs) {
- if (R.Reloc.SymbolTableIndex >= RawSymbolTable.size())
-- return make_error<StringError>("SymbolTableIndex out of range",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "SymbolTableIndex out of range");
- const Symbol *Sym = RawSymbolTable[R.Reloc.SymbolTableIndex];
- if (Sym == nullptr)
-- return make_error<StringError>("Invalid SymbolTableIndex",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Invalid SymbolTableIndex");
- R.Target = Sym->UniqueId;
- R.TargetName = Sym->Name;
- }
-@@ -169,8 +169,8 @@ Expected<std::unique_ptr<Object>> COFFReader::create() const {
- Obj->CoffFileHeader = *CFH;
- } else {
- if (!CBFH)
-- return make_error<StringError>("No COFF file header returned",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "No COFF file header returned");
- // Only copying the few fields from the bigobj header that we need
- // and won't recreate in the end.
- Obj->CoffFileHeader.Machine = CBFH->Machine;
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index 9fb7812672b..0321f94a896 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -29,10 +29,9 @@ Error COFFWriter::finalizeRelocTargets() {
- for (Relocation &R : Sec.Relocs) {
- const Symbol *Sym = Obj.findSymbol(R.Target);
- if (Sym == nullptr)
-- return make_error<StringError>("Relocation target " + R.TargetName +
-- " (" + Twine(R.Target) +
-- ") not found",
-- object_error::invalid_symbol_index);
-+ return createStringError(object_error::invalid_symbol_index,
-+ "Relocation target '%s' (%zu) not found",
-+ R.TargetName.str().c_str(), R.Target);
- R.Reloc.SymbolTableIndex = Sym->RawIndex;
- }
- }
-@@ -48,9 +47,9 @@ Error COFFWriter::finalizeSectionNumbers() {
- } else {
- const Section *Sec = Obj.findSection(Sym.TargetSectionId);
- if (Sec == nullptr)
-- return make_error<StringError>("Symbol " + Sym.Name +
-- " points to a removed section",
-- object_error::invalid_symbol_index);
-+ return createStringError(object_error::invalid_symbol_index,
-+ "Symbol '%s' points to a removed section",
-+ Sym.Name.str().c_str());
- Sym.Sym.SectionNumber = Sec->Index;
-
- if (Sym.Sym.NumberOfAuxSymbols == 1 &&
-@@ -65,9 +64,10 @@ Error COFFWriter::finalizeSectionNumbers() {
- } else {
- Sec = Obj.findSection(Sym.AssociativeComdatTargetSectionId);
- if (Sec == nullptr)
-- return make_error<StringError>(
-- "Symbol " + Sym.Name + " is associative to a removed section",
-- object_error::invalid_symbol_index);
-+ return createStringError(
-+ object_error::invalid_symbol_index,
-+ "Symbol '%s' is associative to a removed section",
-+ Sym.Name.str().c_str());
- SDSectionNumber = Sec->Index;
- }
- // Update the section definition with the new section number.
-@@ -343,9 +343,8 @@ Error COFFWriter::patchDebugDirectory() {
- S.Header.VirtualAddress + S.Header.SizeOfRawData) {
- if (Dir->RelativeVirtualAddress + Dir->Size >
- S.Header.VirtualAddress + S.Header.SizeOfRawData)
-- return make_error<StringError>(
-- "Debug directory extends past end of section",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Debug directory extends past end of section");
-
- size_t Offset = Dir->RelativeVirtualAddress - S.Header.VirtualAddress;
- uint8_t *Ptr = Buf.getBufferStart() + S.Header.PointerToRawData + Offset;
-@@ -361,15 +360,15 @@ Error COFFWriter::patchDebugDirectory() {
- return Error::success();
- }
- }
-- return make_error<StringError>("Debug directory not found",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Debug directory not found");
- }
-
- Error COFFWriter::write() {
- bool IsBigObj = Obj.getSections().size() > MaxNumberOfSections16;
- if (IsBigObj && Obj.IsPE)
-- return make_error<StringError>("Too many sections for executable",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed,
-+ "Too many sections for executable");
- return write(IsBigObj);
- }
-
-diff --git a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-index db0cd76ced4..a2996395c1f 100644
---- a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-@@ -185,9 +185,10 @@ static Error dumpSectionToFile(StringRef SecName, StringRef Filename,
- for (auto &Sec : Obj.sections()) {
- if (Sec.Name == SecName) {
- if (Sec.OriginalData.empty())
-- return make_error<StringError>("Can't dump section \"" + SecName +
-- "\": it has no contents",
-- object_error::parse_failed);
-+ return createStringError(
-+ object_error::parse_failed,
-+ "Can't dump section \"%s\": it has no contents",
-+ SecName.str().c_str());
- Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
- FileOutputBuffer::create(Filename, Sec.OriginalData.size());
- if (!BufferOrErr)
-@@ -200,8 +201,7 @@ static Error dumpSectionToFile(StringRef SecName, StringRef Filename,
- return Error::success();
- }
- }
-- return make_error<StringError>("Section not found",
-- object_error::parse_failed);
-+ return createStringError(object_error::parse_failed, "Section not found");
- }
-
- static bool isCompressed(const SectionBase &Section) {
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-7.patch b/projects/clang/win-patches/llvm-objcopy-7.patch
deleted file mode 100644
index 80e9785..0000000
--- a/projects/clang/win-patches/llvm-objcopy-7.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-From d37f67c7311cd371d9ff1afd398bc92f309e6baf Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Tue, 22 Jan 2019 10:58:09 +0000
-Subject: [PATCH] [llvm-objcopy] [COFF] Update symbol indices in weak externals
-
-Differential Revision: https://reviews.llvm.org/D57006
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351800 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../llvm-objcopy/COFF/weak-external.test | 49 +++++++++++++++++++
- tools/llvm-objcopy/COFF/Object.h | 2 +
- tools/llvm-objcopy/COFF/Reader.cpp | 24 ++++++++-
- tools/llvm-objcopy/COFF/Reader.h | 2 +-
- tools/llvm-objcopy/COFF/Writer.cpp | 16 +++++-
- tools/llvm-objcopy/COFF/Writer.h | 2 +-
- 6 files changed, 89 insertions(+), 6 deletions(-)
- create mode 100644 test/tools/llvm-objcopy/COFF/weak-external.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/weak-external.test b/llvm/test/tools/llvm-objcopy/COFF/weak-external.test
-new file mode 100644
-index 00000000000..d36a53b4eb1
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/weak-external.test
-@@ -0,0 +1,49 @@
-+# RUN: yaml2obj %s > %t.in.o
-+
-+# RUN: llvm-objdump -t %t.in.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-PRE
-+
-+# RUN: llvm-objcopy -N func %t.in.o %t.out.o
-+# RUN: llvm-objdump -t %t.out.o | FileCheck %s --check-prefixes=SYMBOLS,SYMBOLS-POST
-+
-+# RUN: not llvm-objcopy -N .weak.foobar.file1 %t.in.o %t.err.o 2>&1 | FileCheck %s --check-prefix=ERROR
-+
-+# SYMBOLS: SYMBOL TABLE:
-+# SYMBOLS-PRE-NEXT: func
-+# SYMBOLS-NEXT: .weak.foobar.file1
-+# SYMBOLS-NEXT: foobar
-+# SYMBOLS-PRE-NEXT: AUX indx 1
-+# SYMBOLS-POST-NEXT: AUX indx 0
-+# SYMBOLS-EMPTY:
-+
-+# ERROR: Symbol 'foobar' is missing its weak target
-+
-+--- !COFF
-+header:
-+ Machine: IMAGE_FILE_MACHINE_AMD64
-+ Characteristics: [ ]
-+sections:
-+ - Name: .text
-+ Characteristics: [ ]
-+symbols:
-+ - Name: func
-+ Value: 0
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: .weak.foobar.file1
-+ Value: 1
-+ SectionNumber: 1
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_NULL
-+ StorageClass: IMAGE_SYM_CLASS_EXTERNAL
-+ - Name: foobar
-+ Value: 0
-+ SectionNumber: 0
-+ SimpleType: IMAGE_SYM_TYPE_NULL
-+ ComplexType: IMAGE_SYM_DTYPE_FUNCTION
-+ StorageClass: IMAGE_SYM_CLASS_WEAK_EXTERNAL
-+ WeakExternal:
-+ TagIndex: 1
-+ Characteristics: IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY
-+...
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h
-index 8e200369f0b..0630f9c5ff8 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.h
-@@ -11,6 +11,7 @@
-
- #include "llvm/ADT/ArrayRef.h"
- #include "llvm/ADT/DenseMap.h"
-+#include "llvm/ADT/Optional.h"
- #include "llvm/ADT/StringRef.h"
- #include "llvm/ADT/iterator_range.h"
- #include "llvm/BinaryFormat/COFF.h"
-@@ -47,6 +48,7 @@ struct Symbol {
- std::vector<uint8_t> AuxData;
- ssize_t TargetSectionId;
- ssize_t AssociativeComdatTargetSectionId = 0;
-+ Optional<size_t> WeakTargetSymbolId;
- size_t UniqueId;
- size_t RawIndex;
- bool Referenced;
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.cpp b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-index 20ff32a59dc..2446277cc2b 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-@@ -121,12 +121,18 @@ Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- // For section definitions, check if it is comdat associative, and if
- // it is, find the target section unique id.
- const coff_aux_section_definition *SD = SymRef.getSectionDefinition();
-+ const coff_aux_weak_external *WE = SymRef.getWeakExternal();
- if (SD && SD->Selection == IMAGE_COMDAT_SELECT_ASSOCIATIVE) {
- int32_t Index = SD->getNumber(IsBigObj);
- if (Index <= 0 || static_cast<uint32_t>(Index - 1) >= Sections.size())
- return createStringError(object_error::parse_failed,
- "Unexpected associative section index");
- Sym.AssociativeComdatTargetSectionId = Sections[Index - 1].UniqueId;
-+ } else if (WE) {
-+ // This is a raw symbol index for now, but store it in the Symbol
-+ // until we've added them to the Object, which assigns the final
-+ // unique ids.
-+ Sym.WeakTargetSymbolId = WE->TagIndex;
- }
- I += 1 + SymRef.getNumberOfAuxSymbols();
- }
-@@ -134,13 +140,27 @@ Error COFFReader::readSymbols(Object &Obj, bool IsBigObj) const {
- return Error::success();
- }
-
--Error COFFReader::setRelocTargets(Object &Obj) const {
-+Error COFFReader::setSymbolTargets(Object &Obj) const {
- std::vector<const Symbol *> RawSymbolTable;
- for (const Symbol &Sym : Obj.getSymbols()) {
- RawSymbolTable.push_back(&Sym);
- for (size_t I = 0; I < Sym.Sym.NumberOfAuxSymbols; I++)
- RawSymbolTable.push_back(nullptr);
- }
-+ for (Symbol &Sym : Obj.getMutableSymbols()) {
-+ // Convert WeakTargetSymbolId from the original raw symbol index to
-+ // a proper unique id.
-+ if (Sym.WeakTargetSymbolId) {
-+ if (*Sym.WeakTargetSymbolId >= RawSymbolTable.size())
-+ return createStringError(object_error::parse_failed,
-+ "Weak external reference out of range");
-+ const Symbol *Target = RawSymbolTable[*Sym.WeakTargetSymbolId];
-+ if (Target == nullptr)
-+ return createStringError(object_error::parse_failed,
-+ "Invalid SymbolTableIndex");
-+ Sym.WeakTargetSymbolId = Target->UniqueId;
-+ }
-+ }
- for (Section &Sec : Obj.getMutableSections()) {
- for (Relocation &R : Sec.Relocs) {
- if (R.Reloc.SymbolTableIndex >= RawSymbolTable.size())
-@@ -184,7 +204,7 @@ Expected<std::unique_ptr<Object>> COFFReader::create() const {
- return std::move(E);
- if (Error E = readSymbols(*Obj, IsBigObj))
- return std::move(E);
-- if (Error E = setRelocTargets(*Obj))
-+ if (Error E = setSymbolTargets(*Obj))
- return std::move(E);
-
- return std::move(Obj);
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.h b/llvm/tools/llvm-objcopy/COFF/Reader.h
-index 4493705e73c..ec15369db0b 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.h
-@@ -28,7 +28,7 @@ class COFFReader {
- Error readExecutableHeaders(Object &Obj) const;
- Error readSections(Object &Obj) const;
- Error readSymbols(Object &Obj, bool IsBigObj) const;
-- Error setRelocTargets(Object &Obj) const;
-+ Error setSymbolTargets(Object &Obj) const;
-
- public:
- explicit COFFReader(const COFFObjectFile &O) : COFFObj(O) {}
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index 0321f94a896..4f57131d5ab 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -38,7 +38,7 @@ Error COFFWriter::finalizeRelocTargets() {
- return Error::success();
- }
-
--Error COFFWriter::finalizeSectionNumbers() {
-+Error COFFWriter::finalizeSymbolContents() {
- for (Symbol &Sym : Obj.getMutableSymbols()) {
- if (Sym.TargetSectionId <= 0) {
- // Undefined, or a special kind of symbol. These negative values
-@@ -75,6 +75,18 @@ Error COFFWriter::finalizeSectionNumbers() {
- SD->NumberHighPart = static_cast<uint16_t>(SDSectionNumber >> 16);
- }
- }
-+ // Check that we actually have got AuxData to match the weak symbol target
-+ // we want to set. Only >= 1 would be required, but only == 1 makes sense.
-+ if (Sym.WeakTargetSymbolId && Sym.Sym.NumberOfAuxSymbols == 1) {
-+ coff_aux_weak_external *WE =
-+ reinterpret_cast<coff_aux_weak_external *>(Sym.AuxData.data());
-+ const Symbol *Target = Obj.findSymbol(*Sym.WeakTargetSymbolId);
-+ if (Target == nullptr)
-+ return createStringError(object_error::invalid_symbol_index,
-+ "Symbol '%s' is missing its weak target",
-+ Sym.Name.str().c_str());
-+ WE->TagIndex = Target->RawIndex;
-+ }
- }
- return Error::success();
- }
-@@ -137,7 +149,7 @@ std::pair<size_t, size_t> COFFWriter::finalizeSymbolTable() {
- Error COFFWriter::finalize(bool IsBigObj) {
- if (Error E = finalizeRelocTargets())
- return E;
-- if (Error E = finalizeSectionNumbers())
-+ if (Error E = finalizeSymbolContents())
- return E;
-
- size_t SizeOfHeaders = 0;
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.h b/llvm/tools/llvm-objcopy/COFF/Writer.h
-index a967a103df9..9b1cfa91d00 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.h
-@@ -31,7 +31,7 @@ class COFFWriter {
- StringTableBuilder StrTabBuilder;
-
- Error finalizeRelocTargets();
-- Error finalizeSectionNumbers();
-+ Error finalizeSymbolContents();
- void layoutSections();
- size_t finalizeStringTable();
- template <class SymbolTy> std::pair<size_t, size_t> finalizeSymbolTable();
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-8.patch b/projects/clang/win-patches/llvm-objcopy-8.patch
deleted file mode 100644
index 6fd9776..0000000
--- a/projects/clang/win-patches/llvm-objcopy-8.patch
+++ /dev/null
@@ -1,330 +0,0 @@
-From 8cf7aa39d7c9461e2d765f6d4fa7e0925571695f Mon Sep 17 00:00:00 2001
-From: Jordan Rupprecht <rupprecht(a)google.com>
-Date: Tue, 22 Jan 2019 23:49:16 +0000
-Subject: [PATCH] [llvm-objcopy] Return Error from Buffer::allocate(),
- [ELF]Writer::finalize(), and [ELF]Writer::commit()
-
-Summary:
-This patch changes a few methods to return Error instead of manually calling error/reportError to abort. This will make it easier to extract into a library.
-
-Note that error() takes just a string (this patch also adds an overload that takes an Error), while reportError() takes string + [error/code]. To help unify things, use FileError to associate a given filename with an error. Note that this takes some special care (for now), e.g. calling reportError(FileName, <something that could be FileError>) will duplicate the filename. The goal is to eventually remove reportError() and have every error associated with a file to be a FileError, and just one error handling block at the tool level.
-
-This change was suggested in D56806. I took it a little further than suggested, but completely fixing llvm-objcopy will take a couple more patches. If this approach looks good, I'll commit this and apply similar patche(s) for the rest.
-
-This change is NFC in terms of non-error related code, although the error message changes in one context.
-
-Reviewers: alexshap, jhenderson, jakehehrlich, mstorsjo, espindola
-
-Reviewed By: alexshap, jhenderson
-
-Subscribers: llvm-commits, emaste, arichardson
-
-Differential Revision: https://reviews.llvm.org/D56930
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351896 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../ELF/fail-no-output-directory.test | 2 +-
- tools/llvm-objcopy/Buffer.cpp | 20 ++++++++++++-----
- tools/llvm-objcopy/Buffer.h | 6 ++---
- tools/llvm-objcopy/COFF/Writer.cpp | 3 ++-
- tools/llvm-objcopy/ELF/ELFObjcopy.cpp | 18 ++++++++++-----
- tools/llvm-objcopy/ELF/Object.cpp | 22 ++++++++++---------
- tools/llvm-objcopy/ELF/Object.h | 12 +++++-----
- tools/llvm-objcopy/llvm-objcopy.cpp | 15 +++++++++++--
- tools/llvm-objcopy/llvm-objcopy.h | 1 +
- 9 files changed, 64 insertions(+), 35 deletions(-)
-
-diff --git a/llvm/test/tools/llvm-objcopy/ELF/fail-no-output-directory.test b/llvm/test/tools/llvm-objcopy/ELF/fail-no-output-directory.test
-index f66b2e09fce..732046fa925 100644
---- a/llvm/test/tools/llvm-objcopy/ELF/fail-no-output-directory.test
-+++ b/llvm/test/tools/llvm-objcopy/ELF/fail-no-output-directory.test
-@@ -1,6 +1,6 @@
- # RUN: yaml2obj %s > %t
- # RUN: not llvm-objcopy %t no/such/dir 2>&1 | FileCheck %s
--# CHECK: failed to open no/such/dir:
-+# CHECK: error: 'no/such/dir': No such file or directory
-
- !ELF
- FileHeader:
-diff --git a/llvm/tools/llvm-objcopy/Buffer.cpp b/llvm/tools/llvm-objcopy/Buffer.cpp
-index 2da03dee1af..1789097f276 100644
---- a/llvm/tools/llvm-objcopy/Buffer.cpp
-+++ b/llvm/tools/llvm-objcopy/Buffer.cpp
-@@ -17,23 +17,31 @@ namespace objcopy {
-
- Buffer::~Buffer() {}
-
--void FileBuffer::allocate(size_t Size) {
-+Error FileBuffer::allocate(size_t Size) {
- Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
- FileOutputBuffer::create(getName(), Size, FileOutputBuffer::F_executable);
-- handleAllErrors(BufferOrErr.takeError(), [this](const ErrorInfoBase &E) {
-- error("failed to open " + getName() + ": " + E.message());
-- });
-+ // FileOutputBuffer::create() returns an Error that is just a wrapper around
-+ // std::error_code. Wrap it in FileError to include the actual filename.
-+ if (!BufferOrErr)
-+ return createFileError(getName(), BufferOrErr.takeError());
- Buf = std::move(*BufferOrErr);
-+ return Error::success();
- }
-
--Error FileBuffer::commit() { return Buf->commit(); }
-+Error FileBuffer::commit() {
-+ Error Err = Buf->commit();
-+ // FileOutputBuffer::commit() returns an Error that is just a wrapper around
-+ // std::error_code. Wrap it in FileError to include the actual filename.
-+ return Err ? createFileError(getName(), std::move(Err)) : std::move(Err);
-+}
-
- uint8_t *FileBuffer::getBufferStart() {
- return reinterpret_cast<uint8_t *>(Buf->getBufferStart());
- }
-
--void MemBuffer::allocate(size_t Size) {
-+Error MemBuffer::allocate(size_t Size) {
- Buf = WritableMemoryBuffer::getNewMemBuffer(Size, getName());
-+ return Error::success();
- }
-
- Error MemBuffer::commit() { return Error::success(); }
-diff --git a/llvm/tools/llvm-objcopy/Buffer.h b/llvm/tools/llvm-objcopy/Buffer.h
-index 482777fe05c..40670accac2 100644
---- a/llvm/tools/llvm-objcopy/Buffer.h
-+++ b/llvm/tools/llvm-objcopy/Buffer.h
-@@ -27,7 +27,7 @@ class Buffer {
-
- public:
- virtual ~Buffer();
-- virtual void allocate(size_t Size) = 0;
-+ virtual Error allocate(size_t Size) = 0;
- virtual uint8_t *getBufferStart() = 0;
- virtual Error commit() = 0;
-
-@@ -39,7 +39,7 @@ class FileBuffer : public Buffer {
- std::unique_ptr<FileOutputBuffer> Buf;
-
- public:
-- void allocate(size_t Size) override;
-+ Error allocate(size_t Size) override;
- uint8_t *getBufferStart() override;
- Error commit() override;
-
-@@ -50,7 +50,7 @@ class MemBuffer : public Buffer {
- std::unique_ptr<WritableMemoryBuffer> Buf;
-
- public:
-- void allocate(size_t Size) override;
-+ Error allocate(size_t Size) override;
- uint8_t *getBufferStart() override;
- Error commit() override;
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index 4f57131d5ab..db3589bb119 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -324,7 +324,8 @@ Error COFFWriter::write(bool IsBigObj) {
- if (Error E = finalize(IsBigObj))
- return E;
-
-- Buf.allocate(FileSize);
-+ if (Error E = Buf.allocate(FileSize))
-+ return E;
-
- writeHeaders(IsBigObj);
- writeSections();
-diff --git a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-index a2996395c1f..2a52f1f9951 100644
---- a/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
-@@ -176,8 +176,10 @@ static void splitDWOToFile(const CopyConfig &Config, const Reader &Reader,
- DWOFile->Machine = Config.OutputArch.getValue().EMachine;
- FileBuffer FB(File);
- auto Writer = createWriter(Config, *DWOFile, FB, OutputElfType);
-- Writer->finalize();
-- Writer->write();
-+ if (Error E = Writer->finalize())
-+ error(std::move(E));
-+ if (Error E = Writer->write())
-+ error(std::move(E));
- }
-
- static Error dumpSectionToFile(StringRef SecName, StringRef Filename,
-@@ -542,8 +544,10 @@ void executeObjcopyOnRawBinary(const CopyConfig &Config, MemoryBuffer &In,
- handleArgs(Config, *Obj, Reader, OutputElfType);
- std::unique_ptr<Writer> Writer =
- createWriter(Config, *Obj, Out, OutputElfType);
-- Writer->finalize();
-- Writer->write();
-+ if (Error E = Writer->finalize())
-+ error(std::move(E));
-+ if (Error E = Writer->write())
-+ error(std::move(E));
- }
-
- void executeObjcopyOnBinary(const CopyConfig &Config,
-@@ -570,8 +574,10 @@ void executeObjcopyOnBinary(const CopyConfig &Config,
- handleArgs(Config, *Obj, Reader, OutputElfType);
- std::unique_ptr<Writer> Writer =
- createWriter(Config, *Obj, Out, OutputElfType);
-- Writer->finalize();
-- Writer->write();
-+ if (Error E = Writer->finalize())
-+ error(std::move(E));
-+ if (Error E = Writer->write())
-+ error(std::move(E));
- if (!Config.BuildIdLinkDir.empty() && Config.BuildIdLinkOutput) {
- linkToBuildIdDir(Config, Config.OutputFilename,
- Config.BuildIdLinkOutput.getValue(), BuildIdBytes);
-diff --git a/llvm/tools/llvm-objcopy/ELF/Object.cpp b/llvm/tools/llvm-objcopy/ELF/Object.cpp
-index fecb752a39f..ef5dc5d7951 100644
---- a/llvm/tools/llvm-objcopy/ELF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/ELF/Object.cpp
-@@ -1488,17 +1488,16 @@ template <class ELFT> size_t ELFWriter<ELFT>::totalSize() const {
- NullSectionSize;
- }
-
--template <class ELFT> void ELFWriter<ELFT>::write() {
-+template <class ELFT> Error ELFWriter<ELFT>::write() {
- writeEhdr();
- writePhdrs();
- writeSectionData();
- if (WriteSectionHeaders)
- writeShdrs();
-- if (auto E = Buf.commit())
-- reportError(Buf.getName(), errorToErrorCode(std::move(E)));
-+ return Buf.commit();
- }
-
--template <class ELFT> void ELFWriter<ELFT>::finalize() {
-+template <class ELFT> Error ELFWriter<ELFT>::finalize() {
- // It could happen that SectionNames has been removed and yet the user wants
- // a section header table output. We need to throw an error if a user tries
- // to do that.
-@@ -1582,21 +1581,22 @@ template <class ELFT> void ELFWriter<ELFT>::finalize() {
- Section.finalize();
- }
-
-- Buf.allocate(totalSize());
-+ if (Error E = Buf.allocate(totalSize()))
-+ return E;
- SecWriter = llvm::make_unique<ELFSectionWriter<ELFT>>(Buf);
-+ return Error::success();
- }
-
--void BinaryWriter::write() {
-+Error BinaryWriter::write() {
- for (auto &Section : Obj.sections()) {
- if ((Section.Flags & SHF_ALLOC) == 0)
- continue;
- Section.accept(*SecWriter);
- }
-- if (auto E = Buf.commit())
-- reportError(Buf.getName(), errorToErrorCode(std::move(E)));
-+ return Buf.commit();
- }
-
--void BinaryWriter::finalize() {
-+Error BinaryWriter::finalize() {
- // TODO: Create a filter range to construct OrderedSegments from so that this
- // code can be deduped with assignOffsets above. This should also solve the
- // todo below for LayoutSections.
-@@ -1675,8 +1675,10 @@ void BinaryWriter::finalize() {
- TotalSize = std::max(TotalSize, Section->Offset + Section->Size);
- }
-
-- Buf.allocate(TotalSize);
-+ if (Error E = Buf.allocate(TotalSize))
-+ return E;
- SecWriter = llvm::make_unique<BinarySectionWriter>(Buf);
-+ return Error::success();
- }
-
- template class ELFBuilder<ELF64LE>;
-diff --git a/llvm/tools/llvm-objcopy/ELF/Object.h b/llvm/tools/llvm-objcopy/ELF/Object.h
-index 0dcb0d888bc..9e2b64be9dc 100644
---- a/llvm/tools/llvm-objcopy/ELF/Object.h
-+++ b/llvm/tools/llvm-objcopy/ELF/Object.h
-@@ -193,8 +193,8 @@ protected:
-
- public:
- virtual ~Writer();
-- virtual void finalize() = 0;
-- virtual void write() = 0;
-+ virtual Error finalize() = 0;
-+ virtual Error write() = 0;
-
- Writer(Object &O, Buffer &B) : Obj(O), Buf(B) {}
- };
-@@ -226,8 +226,8 @@ public:
- virtual ~ELFWriter() {}
- bool WriteSectionHeaders = true;
-
-- void finalize() override;
-- void write() override;
-+ Error finalize() override;
-+ Error write() override;
- ELFWriter(Object &Obj, Buffer &Buf, bool WSH)
- : Writer(Obj, Buf), WriteSectionHeaders(WSH) {}
- };
-@@ -240,8 +240,8 @@ private:
-
- public:
- ~BinaryWriter() {}
-- void finalize() override;
-- void write() override;
-+ Error finalize() override;
-+ Error write() override;
- BinaryWriter(Object &Obj, Buffer &Buf) : Writer(Obj, Buf) {}
- };
-
-diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
-index d27395f2ae0..75d513546b7 100644
---- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
-@@ -56,6 +56,16 @@ LLVM_ATTRIBUTE_NORETURN void error(Twine Message) {
- exit(1);
- }
-
-+LLVM_ATTRIBUTE_NORETURN void error(Error E) {
-+ assert(E);
-+ std::string Buf;
-+ raw_string_ostream OS(Buf);
-+ logAllUnhandledErrors(std::move(E), OS);
-+ OS.flush();
-+ WithColor::error(errs(), ToolName) << Buf;
-+ exit(1);
-+}
-+
- LLVM_ATTRIBUTE_NORETURN void reportError(StringRef File, std::error_code EC) {
- assert(EC);
- WithColor::error(errs(), ToolName)
-@@ -100,10 +110,11 @@ static Error deepWriteArchive(StringRef ArcName,
- // NewArchiveMember still requires them even though writeArchive does not
- // write them on disk.
- FileBuffer FB(Member.MemberName);
-- FB.allocate(Member.Buf->getBufferSize());
-+ if (Error E = FB.allocate(Member.Buf->getBufferSize()))
-+ return E;
- std::copy(Member.Buf->getBufferStart(), Member.Buf->getBufferEnd(),
- FB.getBufferStart());
-- if (auto E = FB.commit())
-+ if (Error E = FB.commit())
- return E;
- }
- return Error::success();
-diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.h b/llvm/tools/llvm-objcopy/llvm-objcopy.h
-index 46d8339576c..18a789ca1f8 100644
---- a/llvm/tools/llvm-objcopy/llvm-objcopy.h
-+++ b/llvm/tools/llvm-objcopy/llvm-objcopy.h
-@@ -19,6 +19,7 @@ namespace llvm {
- namespace objcopy {
-
- LLVM_ATTRIBUTE_NORETURN extern void error(Twine Message);
-+LLVM_ATTRIBUTE_NORETURN extern void error(Error E);
- LLVM_ATTRIBUTE_NORETURN extern void reportError(StringRef File, Error E);
- LLVM_ATTRIBUTE_NORETURN extern void reportError(StringRef File,
- std::error_code EC);
---
-2.17.1
-
diff --git a/projects/clang/win-patches/llvm-objcopy-9.patch b/projects/clang/win-patches/llvm-objcopy-9.patch
deleted file mode 100644
index 6cb4656..0000000
--- a/projects/clang/win-patches/llvm-objcopy-9.patch
+++ /dev/null
@@ -1,260 +0,0 @@
-From 840d70f854a1d550924ced1d00160efcc7b8549a Mon Sep 17 00:00:00 2001
-From: Martin Storsjo <martin(a)martin.st>
-Date: Wed, 23 Jan 2019 08:25:28 +0000
-Subject: [PATCH] Reapply: [llvm-objcopy] [COFF] Implement --add-gnu-debuglink
-
-This was reverted since it broke a couple buildbots. The reason
-for the breakage is not yet known, but this time, the test has
-got more diagnostics added, to hopefully allow figuring out
-what goes wrong.
-
-Differential Revision: https://reviews.llvm.org/D57007
-
-git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351931 91177308-0d34-0410-b5e6-96231b3b80d8
----
- .../llvm-objcopy/COFF/add-gnu-debuglink.test | 48 +++++++++++++++
- tools/llvm-objcopy/COFF/COFFObjcopy.cpp | 61 +++++++++++++++++++
- tools/llvm-objcopy/COFF/Object.cpp | 2 +-
- tools/llvm-objcopy/COFF/Object.h | 26 +++++++-
- tools/llvm-objcopy/COFF/Reader.cpp | 4 +-
- tools/llvm-objcopy/COFF/Writer.cpp | 9 +--
- 6 files changed, 143 insertions(+), 7 deletions(-)
- create mode 100644 test/tools/llvm-objcopy/COFF/add-gnu-debuglink.test
-
-diff --git a/llvm/test/tools/llvm-objcopy/COFF/add-gnu-debuglink.test b/llvm/test/tools/llvm-objcopy/COFF/add-gnu-debuglink.test
-new file mode 100644
-index 00000000000..cf3a9bba920
---- /dev/null
-+++ b/llvm/test/tools/llvm-objcopy/COFF/add-gnu-debuglink.test
-@@ -0,0 +1,48 @@
-+RUN: yaml2obj %p/Inputs/x86_64-exe.yaml > %t.in123.exe
-+
-+# Using a debuglink filename with a length that is a multiple of 4, to
-+# showcase padding in CONTENTS below.
-+
-+RUN: llvm-objcopy --add-gnu-debuglink=%t.in123.exe %t.in123.exe %t.out.exe
-+
-+# Temporary debugging of issues with this test:
-+RUN: ls -l %t.out.exe || true
-+RUN: od -Ax -t x1 %t.out.exe || true
-+RUN: llvm-readobj -sections %t.out.exe || true
-+
-+RUN: llvm-readobj -sections %t.out.exe | FileCheck %s --check-prefix=SECTIONS
-+RUN: llvm-objdump -s %t.out.exe | FileCheck %s --check-prefix=CONTENTS
-+
-+# Show the last of the preexisting sections, which is used for choosing
-+# a virtual address for the generated one.
-+
-+SECTIONS: Section {
-+SECTIONS: Number: 4
-+SECTIONS-NEXT: Name: .pdata
-+SECTIONS-NEXT: VirtualSize: 0x18
-+SECTIONS-NEXT: VirtualAddress: 0x4000
-+SECTIONS-NEXT: RawDataSize: 512
-+SECTIONS: Section {
-+SECTIONS-NEXT: Number: 5
-+SECTIONS-NEXT: Name: .gnu_debuglink
-+SECTIONS-NEXT: VirtualSize: 0x2C
-+SECTIONS-NEXT: VirtualAddress: 0x5000
-+SECTIONS-NEXT: RawDataSize: 512
-+SECTIONS-NEXT: PointerToRawData:
-+SECTIONS-NEXT: PointerToRelocations:
-+SECTIONS-NEXT: PointerToLineNumbers:
-+SECTIONS-NEXT: RelocationCount:
-+SECTIONS-NEXT: LineNumberCount:
-+SECTIONS-NEXT: Characteristics [ (0x42000040)
-+SECTIONS-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)
-+SECTIONS-NEXT: IMAGE_SCN_MEM_DISCARDABLE (0x2000000)
-+SECTIONS-NEXT: IMAGE_SCN_MEM_READ (0x40000000)
-+SECTIONS-NEXT: ]
-+
-+# Note: The last 4 bytes here are the crc of the referenced file - if the
-+# yaml2obj generated file changes, this crc changes.
-+
-+CONTENTS: Contents of section .gnu_debuglink:
-+CONTENTS: 40005000 6164642d 676e752d 64656275 676c696e add-gnu-debuglin
-+CONTENTS: 40005010 6b2e7465 73742e74 6d702e69 6e313233 k.test.tmp.in123
-+CONTENTS: 40005020 2e657865 00000000 7929adc3 .exe
-diff --git a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-index 8d8f53d13d8..20adbe11e7a 100644
---- a/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/COFFObjcopy.cpp
-@@ -17,6 +17,8 @@
- #include "llvm/Object/Binary.h"
- #include "llvm/Object/COFF.h"
- #include "llvm/Support/Errc.h"
-+#include "llvm/Support/JamCRC.h"
-+#include "llvm/Support/Path.h"
- #include <cassert>
-
- namespace llvm {
-@@ -30,6 +32,61 @@ static bool isDebugSection(const Section &Sec) {
- return Sec.Name.startswith(".debug");
- }
-
-+static uint64_t getNextRVA(const Object &Obj) {
-+ if (Obj.getSections().empty())
-+ return 0;
-+ const Section &Last = Obj.getSections().back();
-+ return alignTo(Last.Header.VirtualAddress + Last.Header.VirtualSize,
-+ Obj.PeHeader.SectionAlignment);
-+}
-+
-+static uint32_t getCRC32(StringRef Data) {
-+ JamCRC CRC;
-+ CRC.update(ArrayRef<char>(Data.data(), Data.size()));
-+ // The CRC32 value needs to be complemented because the JamCRC dosn't
-+ // finalize the CRC32 value. It also dosn't negate the initial CRC32 value
-+ // but it starts by default at 0xFFFFFFFF which is the complement of zero.
-+ return ~CRC.getCRC();
-+}
-+
-+static std::vector<uint8_t> createGnuDebugLinkSectionContents(StringRef File) {
-+ ErrorOr<std::unique_ptr<MemoryBuffer>> LinkTargetOrErr =
-+ MemoryBuffer::getFile(File);
-+ if (!LinkTargetOrErr)
-+ error("'" + File + "': " + LinkTargetOrErr.getError().message());
-+ auto LinkTarget = std::move(*LinkTargetOrErr);
-+ uint32_t CRC32 = getCRC32(LinkTarget->getBuffer());
-+
-+ StringRef FileName = sys::path::filename(File);
-+ size_t CRCPos = alignTo(FileName.size() + 1, 4);
-+ std::vector<uint8_t> Data(CRCPos + 4);
-+ memcpy(Data.data(), FileName.data(), FileName.size());
-+ support::endian::write32le(Data.data() + CRCPos, CRC32);
-+ return Data;
-+}
-+
-+static void addGnuDebugLink(Object &Obj, StringRef DebugLinkFile) {
-+ uint32_t StartRVA = getNextRVA(Obj);
-+
-+ std::vector<Section> Sections;
-+ Section Sec;
-+ Sec.setOwnedContents(createGnuDebugLinkSectionContents(DebugLinkFile));
-+ Sec.Name = ".gnu_debuglink";
-+ Sec.Header.VirtualSize = Sec.getContents().size();
-+ Sec.Header.VirtualAddress = StartRVA;
-+ Sec.Header.SizeOfRawData =
-+ alignTo(Sec.Header.VirtualSize, Obj.PeHeader.FileAlignment);
-+ // Sec.Header.PointerToRawData is filled in by the writer.
-+ Sec.Header.PointerToRelocations = 0;
-+ Sec.Header.PointerToLinenumbers = 0;
-+ // Sec.Header.NumberOfRelocations is filled in by the writer.
-+ Sec.Header.NumberOfLinenumbers = 0;
-+ Sec.Header.Characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA |
-+ IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_DISCARDABLE;
-+ Sections.push_back(Sec);
-+ Obj.addSections(Sections);
-+}
-+
- static Error handleArgs(const CopyConfig &Config, Object &Obj) {
- // Perform the actual section removals.
- Obj.removeSections([&Config](const Section &Sec) {
-@@ -109,6 +166,10 @@ static Error handleArgs(const CopyConfig &Config, Object &Obj) {
-
- return false;
- });
-+
-+ if (!Config.AddGnuDebugLink.empty())
-+ addGnuDebugLink(Obj, Config.AddGnuDebugLink);
-+
- return Error::success();
- }
-
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.cpp b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-index 83435dffa98..8c382c1faef 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.cpp
-@@ -129,7 +129,7 @@ void Object::removeSections(function_ref<bool(const Section &)> ToRemove) {
- void Object::truncateSections(function_ref<bool(const Section &)> ToTruncate) {
- for (Section &Sec : Sections) {
- if (ToTruncate(Sec)) {
-- Sec.Contents = ArrayRef<uint8_t>();
-+ Sec.clearContents();
- Sec.Relocs.clear();
- Sec.Header.SizeOfRawData = 0;
- }
-diff --git a/llvm/tools/llvm-objcopy/COFF/Object.h b/llvm/tools/llvm-objcopy/COFF/Object.h
-index 0630f9c5ff8..afa272286ef 100644
---- a/llvm/tools/llvm-objcopy/COFF/Object.h
-+++ b/llvm/tools/llvm-objcopy/COFF/Object.h
-@@ -35,11 +35,35 @@ struct Relocation {
-
- struct Section {
- object::coff_section Header;
-- ArrayRef<uint8_t> Contents;
- std::vector<Relocation> Relocs;
- StringRef Name;
- ssize_t UniqueId;
- size_t Index;
-+
-+ ArrayRef<uint8_t> getContents() const {
-+ if (!OwnedContents.empty())
-+ return OwnedContents;
-+ return ContentsRef;
-+ }
-+
-+ void setContentsRef(ArrayRef<uint8_t> Data) {
-+ OwnedContents.clear();
-+ ContentsRef = Data;
-+ }
-+
-+ void setOwnedContents(std::vector<uint8_t> &&Data) {
-+ ContentsRef = ArrayRef<uint8_t>();
-+ OwnedContents = std::move(Data);
-+ }
-+
-+ void clearContents() {
-+ ContentsRef = ArrayRef<uint8_t>();
-+ OwnedContents.clear();
-+ }
-+
-+private:
-+ ArrayRef<uint8_t> ContentsRef;
-+ std::vector<uint8_t> OwnedContents;
- };
-
- struct Symbol {
-diff --git a/llvm/tools/llvm-objcopy/COFF/Reader.cpp b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-index 2446277cc2b..87dd60a43cf 100644
---- a/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Reader.cpp
-@@ -69,8 +69,10 @@ Error COFFReader::readSections(Object &Obj) const {
- Sections.push_back(Section());
- Section &S = Sections.back();
- S.Header = *Sec;
-- if (auto EC = COFFObj.getSectionContents(Sec, S.Contents))
-+ ArrayRef<uint8_t> Contents;
-+ if (auto EC = COFFObj.getSectionContents(Sec, Contents))
- return errorCodeToError(EC);
-+ S.setContentsRef(Contents);
- ArrayRef<coff_relocation> Relocs = COFFObj.getRelocations(Sec);
- for (const coff_relocation &R : Relocs)
- S.Relocs.push_back(R);
-diff --git a/llvm/tools/llvm-objcopy/COFF/Writer.cpp b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-index db3589bb119..05e46291c39 100644
---- a/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-+++ b/llvm/tools/llvm-objcopy/COFF/Writer.cpp
-@@ -286,14 +286,15 @@ void COFFWriter::writeHeaders(bool IsBigObj) {
- void COFFWriter::writeSections() {
- for (const auto &S : Obj.getSections()) {
- uint8_t *Ptr = Buf.getBufferStart() + S.Header.PointerToRawData;
-- std::copy(S.Contents.begin(), S.Contents.end(), Ptr);
-+ ArrayRef<uint8_t> Contents = S.getContents();
-+ std::copy(Contents.begin(), Contents.end(), Ptr);
-
- // For executable sections, pad the remainder of the raw data size with
- // 0xcc, which is int3 on x86.
- if ((S.Header.Characteristics & IMAGE_SCN_CNT_CODE) &&
-- S.Header.SizeOfRawData > S.Contents.size())
-- memset(Ptr + S.Contents.size(), 0xcc,
-- S.Header.SizeOfRawData - S.Contents.size());
-+ S.Header.SizeOfRawData > Contents.size())
-+ memset(Ptr + Contents.size(), 0xcc,
-+ S.Header.SizeOfRawData - Contents.size());
-
- Ptr += S.Header.SizeOfRawData;
- for (const auto &R : S.Relocs) {
---
-2.17.1
-
diff --git a/projects/fenix-clang/build b/projects/fenix-clang/build
index c8cceb4..d61ed43 100644
--- a/projects/fenix-clang/build
+++ b/projects/fenix-clang/build
@@ -10,6 +10,8 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH"
[% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
hardened_gcc => 0 }) %]
ln -s gcc /var/tmp/dist/gcc/bin/cc
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
+ export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
mkdir -p /var/tmp/build
cd /var/tmp/build
@@ -34,6 +36,7 @@ mkdir build
cd build
cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$distdir \
-DCMAKE_BUILD_TYPE:STRING=Release \
+ [% IF c("var/linux") -%]-DCOMPILER_RT_BUILD_CRT=OFF \[% END -%]
[% IF c("var/rlbox") -%]-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \[% END -%]
$LLVM_HOME
make -j[% c("buildconf/num_procs") %]
diff --git a/projects/fenix-clang/config b/projects/fenix-clang/config
index 8f16354..c4b7efc 100644
--- a/projects/fenix-clang/config
+++ b/projects/fenix-clang/config
@@ -13,6 +13,9 @@ input_files:
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
enable: '[% c("var/linux") %]'
+ - name: binutils
+ project: binutils
+ enable: '[% c("var/linux") %]'
- project: cmake
name: cmake
- URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% c("version") %]/llvm-[% c("version") %].src.tar.xz'
1
0