tbb-commits
Threads by month
- ----- 2025 -----
- 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
May 2018
- 1 participants
- 70 discussions
commit 1b8977f5e497512feeebd810bbbca0f41f7874d1
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed May 30 11:26:28 2018 +0000
Update translations
---
src/chrome/locale/ar/aboutDialog.dtd | 8 ++--
src/chrome/locale/ar/aboutTBUpdate.dtd | 6 +--
src/chrome/locale/ar/aboutTor.dtd | 6 +--
src/chrome/locale/ar/aboutTor.properties | 16 ++++----
src/chrome/locale/ar/torbutton.dtd | 49 ++++++++++++-----------
src/chrome/locale/ar/torbutton.properties | 59 +++++++++++++++-------------
src/chrome/locale/da/torbutton.dtd | 3 +-
src/chrome/locale/da/torbutton.properties | 5 ++-
src/chrome/locale/de/torbutton.dtd | 3 +-
src/chrome/locale/de/torbutton.properties | 5 ++-
src/chrome/locale/es/torbutton.dtd | 5 ++-
src/chrome/locale/es/torbutton.properties | 5 ++-
src/chrome/locale/eu/torbutton.dtd | 3 +-
src/chrome/locale/eu/torbutton.properties | 5 ++-
src/chrome/locale/fa/torbutton.dtd | 3 +-
src/chrome/locale/fa/torbutton.properties | 3 ++
src/chrome/locale/fr/torbutton.dtd | 3 +-
src/chrome/locale/fr/torbutton.properties | 5 ++-
src/chrome/locale/it/torbutton.dtd | 3 +-
src/chrome/locale/it/torbutton.properties | 5 ++-
src/chrome/locale/ja/torbutton.dtd | 3 +-
src/chrome/locale/ja/torbutton.properties | 3 ++
src/chrome/locale/ko/torbutton.dtd | 3 +-
src/chrome/locale/ko/torbutton.properties | 5 ++-
src/chrome/locale/nl/torbutton.dtd | 3 +-
src/chrome/locale/nl/torbutton.properties | 5 ++-
src/chrome/locale/pl/torbutton.dtd | 3 +-
src/chrome/locale/pl/torbutton.properties | 5 ++-
src/chrome/locale/pt-BR/torbutton.dtd | 3 +-
src/chrome/locale/pt-BR/torbutton.properties | 5 ++-
src/chrome/locale/ru/torbutton.dtd | 3 +-
src/chrome/locale/ru/torbutton.properties | 5 ++-
src/chrome/locale/sv/torbutton.dtd | 3 +-
src/chrome/locale/sv/torbutton.properties | 5 ++-
src/chrome/locale/tr/torbutton.dtd | 3 +-
src/chrome/locale/tr/torbutton.properties | 5 ++-
src/chrome/locale/vi/torbutton.dtd | 3 +-
src/chrome/locale/vi/torbutton.properties | 5 ++-
src/chrome/locale/zh-CN/torbutton.dtd | 3 +-
src/chrome/locale/zh-CN/torbutton.properties | 3 ++
40 files changed, 174 insertions(+), 102 deletions(-)
diff --git a/src/chrome/locale/ar/aboutDialog.dtd b/src/chrome/locale/ar/aboutDialog.dtd
index 5046d11..fbd16ae 100644
--- a/src/chrome/locale/ar/aboutDialog.dtd
+++ b/src/chrome/locale/ar/aboutDialog.dtd
@@ -1,7 +1,7 @@
-<!ENTITY project.start "Ù
Ø·ÙÙØ± Ù
٠طر٠&brandShortName;">
+<!ENTITY project.start "Ø·ÙÙØ± &brandShortName;">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
-<!ENTITY project.tpoLink "اÙ&vendorShortNameØ">
-<!ENTITY project.end "ÙØ§ØªÙد٠ÙÙØ±ØšØ تعÙ
٠عÙÙ ØÙ
Ø§ÙØ© Ø®ØµÙØµÙØªÙ ÙØØ±ÙØªÙ عÙÙ Ø§ÙØ£ÙØªØ±ÙØª">
+<!ENTITY project.tpoLink "&vendorShortNameØ">
+<!ENTITY project.end "Ø Ù
؀سسة ØºÙØ± ÙØ§Ø¯ÙØ© ÙÙØ±ØšØ تعÙ
٠عÙÙ ØÙ
Ø§ÙØ© Ø®ØµÙØµÙØªÙ ÙØØ±ÙØªÙ عÙÙ Ø§ÙØ¥ÙØªØ±ÙØª.">
<!ENTITY help.start "Ù٠ترغؚ Ù٠اÙÙ
ساعدةØ">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
@@ -13,7 +13,7 @@
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
<!ENTITY bottomLinks.questions "Ø£ÙØ© Ø£Ø³ØŠÙØ©Ø">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
-<!ENTITY bottomLinks.grow "ساعد ØŽØšÙØ© ØªÙØ± عÙ٠اÙÙÙ
Ù !">
+<!ENTITY bottomLinks.grow "ساعد ØŽØšÙØ© ØªÙØ± عÙ٠اÙÙÙ
Ù.">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Ù
عÙÙÙ
ات Ø§ÙØªØ±Ø®Ùص">
<!ENTITY tor.TrademarkStatement ""ØªÙØ±" Ù "؎عار Ø§ÙØšØµÙØ©" Ø¹ÙØ§Ù
ات ØªØ¬Ø§Ø±ÙØ© Ù
Ø³Ø¬ÙØ© ؚاسÙ
ØŽØ±ÙØ© Ù
ØŽØ±ÙØ¹ ØªÙØ± اÙÙ
ØØ¯Ùدة">
diff --git a/src/chrome/locale/ar/aboutTBUpdate.dtd b/src/chrome/locale/ar/aboutTBUpdate.dtd
index 41fd873..ee153f6 100644
--- a/src/chrome/locale/ar/aboutTBUpdate.dtd
+++ b/src/chrome/locale/ar/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
<!ENTITY aboutTBUpdate.title "ØªØØ¯ÙØ« Ù
ØªØµÙØ ØªÙØ±">
-<!ENTITY aboutTBUpdate.updated "ÙÙØ¯ تÙ
ØªØØ¯ÙØ« Ù
ØªØµÙØ ØªÙØ±.">
-<!ENTITY aboutTBUpdate.linkPrefix "ÙÙØØµÙ٠عÙÙ Ø£ØØ¯Ø« اÙÙ
عÙÙÙ
ات ØÙÙ ÙØ°Ø§ Ø§ÙØ¥ØµØ¯Ø§Ø±.">
+<!ENTITY aboutTBUpdate.updated "تÙ
ØªØØ¯ÙØ« Ù
ØªØµÙØ ØªÙØ±.">
+<!ENTITY aboutTBUpdate.linkPrefix "ÙÙØØµÙ٠عÙÙ Ø£ØØ¯Ø« اÙÙ
عÙÙÙ
ات ØÙÙ ÙØ°Ø§ Ø§ÙØ¥ØµØ¯Ø§Ø±Ø">
<!ENTITY aboutTBUpdate.linkLabel "Ø²ÙØ± Ù
ÙÙØ¹Ùا">
<!ENTITY aboutTBUpdate.linkSuffix ".">
-<!ENTITY aboutTBUpdate.changeLogHeading "ØªØºÙØ± سجÙ:">
+<!ENTITY aboutTBUpdate.changeLogHeading "Ø³Ø¬Ù Ø§ÙØªØºÙÙØ±Ø§Øª:">
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index c64915a..86fe2cd 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -13,7 +13,7 @@
<!ENTITY aboutTor.check.label "اختؚر إعدادات ØŽØšÙØ© ØªÙØ±.">
<!ENTITY aboutTor.success.label "Ø£ÙÙØ§Ù ØšÙ ÙÙ Ù
ØªØµÙØ ØªÙØ±">
-<!ENTITY aboutTor.success2.label "تÙ
Ø§ÙØ¥ØªØµØ§Ù ØšØŽØšÙØ© ØªÙØ±">
+<!ENTITY aboutTor.success2.label "Ù
ØªØµÙ ØšØŽØšÙØ© ØªÙØ±">
<!ENTITY aboutTor.success3.label "ÙÙ
ÙÙÙ Ø§ÙØ¢Ù ØªØµÙØ Ø§ÙØ§ÙØªØ±ÙØª ؚ؎ÙÙ ÙØÙ
Ù ÙÙÙØªÙ.">
<!ENTITY aboutTor.failure.label "ØØ¯Ø« خطأ Ù
ا!">
<!ENTITY aboutTor.failure2.label "ØªÙØ± ÙØ§ ÙØ¹Ù
Ù ÙÙ ÙØ°Ø§ اÙÙ
ØªØµÙØ.">
@@ -29,8 +29,8 @@
<!ENTITY aboutTor.whatnextAnswer.label "ÙØ§ ÙÙ
Ø«Ù ØªÙØ± ÙÙ Ù
ا ØªØØªØ§Ø¬Ù ÙÙØªØµÙØ ØšØŽÙÙ ÙØÙ
Ù ÙÙÙØªÙ! ÙØ¯ ØªØØªØ§Ø¬ ÙØªØºÙÙØ± ؚعد Ø¹Ø§Ø¯Ø§ØªÙ Ø£Ø«ÙØ§Ø¡ Ø§ÙØªØµÙÙØ ÙØ¶Ù
Ø§Ù Ø³Ø±ÙØ© ÙÙÙØªÙ.">
<!ENTITY aboutTor.whatnext.label "ÙØµØ§ØŠØ ÙÙØÙØ§Øž عÙ٠سرÙÙØ© ÙÙÙØªÙ »">
<!ENTITY aboutTor.whatnext.link "https://www.torproject.org/download/download.html.en#warning">
-<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
-<!ENTITY aboutTor.torbrowser_user_manual.label "دÙÙ٠استخداÙ
Ù
تصÙÙØ Tor">
+<!ENTITY aboutTor.torbrowser_user_manual.accesskey "س">
+<!ENTITY aboutTor.torbrowser_user_manual.label "دÙÙ٠استخداÙ
Ù
تصÙÙØ ØªÙØ±">
<!ENTITY aboutTor.helpInfo1.label "ؚإÙ
ÙØ§Ù٠اÙÙ
ساعدة!">
<!ENTITY aboutTor.helpInfo2.label "ÙÙ
ÙÙÙ Ù
ساعدة ØŽØšÙØ© ØªÙØ± ٠جعÙÙØ§ Ø£ÙØ«Ø± سرعة Ù ÙÙÙØ© ØšØ¥ØØ¯Ù Ø§ÙØ·Ø±Ù Ø§ÙØ¢ØªÙØ©:">
<!ENTITY aboutTor.helpInfo3.label "؎غÙÙ ÙÙØ·Ø© ØªÙØ± »">
diff --git a/src/chrome/locale/ar/aboutTor.properties b/src/chrome/locale/ar/aboutTor.properties
index 369c257..07d82ff 100644
--- a/src/chrome/locale/ar/aboutTor.properties
+++ b/src/chrome/locale/ar/aboutTor.properties
@@ -2,19 +2,19 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-aboutTor.searchDDG.privacy=Ø§ØšØØ« <a href="%1$S">Ø¢Ù
ÙØ§</a> Ù
ع <a href="%2$S">DuckDuckGo</a>.
+aboutTor.searchDDG.privacy=Ø§ØšØØ« <a href="%1$S">ؚأÙ
اÙ</a> Ù
ع <a href="%2$S">DuckDuckGo</a>.
# The following string is a link which replaces %1$S above.
aboutTor.searchDDG.privacy.link=https://duckduckgo.com/privacy.html
# The following string is a link which replaces %2$S above.
aboutTor.searchDDG.search.link=https://duckduckgo.com/
-aboutTor.donationBanner.donate=تؚرع Ø§ÙØ¢Ù !
+aboutTor.donationBanner.donate=تؚرع Ø§ÙØ¢Ù
-aboutTor.donationBanner.slogan=ØªÙØ± : دعÙ
Ø§ÙØµÙ
ÙØ¯ Ø§ÙØ±ÙÙ
Ù
-aboutTor.donationBanner.mozilla=اعط٠اÙÙÙÙ
ÙÙ
ÙØ¯Ø²ÙÙØ§ Ø³ØªØ±ÙØ¯ Ù٠اÙÙØ¯ÙØ©
+aboutTor.donationBanner.slogan=ØªÙØ±: دعÙ
Ø§ÙØµÙ
ÙØ¯ Ø§ÙØ±ÙÙ
Ù
+aboutTor.donationBanner.mozilla=أعط٠اÙÙÙÙ
ÙÙ
ÙØ²ÙÙØ§ ستعط٠Ù
Ø«ÙÙ
-aboutTor.donationBanner.tagline1=ØÙ
Ø§ÙØ© Ø§ÙØµØØ§ÙÙÙÙ Ø Ø§ÙÙ
ÙØ®ØšØ±ÙÙ ÙØ§ÙÙÙØŽØ·Ø§Ø¡ Ù
ÙØ° عاÙ
2006
+aboutTor.donationBanner.tagline1=ÙØÙ
Ù Ø§ÙØµØÙÙÙÙØ ÙÙØ§ØŽÙ٠اÙÙØ³Ø§Ø¯Ø ÙØ§ÙÙÙØŽØ·Ø§Ø¡ Ù
ÙØ° Ù¢Ù Ù ÙŠ
aboutTor.donationBanner.tagline2=ØØ±ÙØ© Ø§ÙØªÙØ§ØµÙ Ø§ÙØŽØšÙÙ Ø§ÙØ¹Ø§ÙÙ
ÙØ©
-aboutTor.donationBanner.tagline3=Freedom Online
-aboutTor.donationBanner.tagline4=ØªØ¹Ø²ÙØ² ØØ±ÙØ© Ø§ÙØªØ¹ØšÙر عاÙÙ
ÙØ§Ù
-aboutTor.donationBanner.tagline5=تØÙ
Ù Ø®ØµÙØµÙØ© اÙÙ
ÙØ§ÙÙÙ Ù
Ù Ø§ÙØ£ØŽØ®Ø§Øµ ÙÙ ÙÙÙ
+aboutTor.donationBanner.tagline3=Ø§ÙØØ±ÙØ© عÙÙ Ø§ÙØ¥ÙØªØ±ÙØª
+aboutTor.donationBanner.tagline4=ÙØ¹Ø²Ùز ØØ±ÙØ© Ø§ÙØªØ¹ØšÙر عاÙÙ
ÙÙØ§
+aboutTor.donationBanner.tagline5=ÙØÙ
Ù Ø®ØµÙØµÙØ© اÙÙ
ÙØ§ÙÙÙ Ù
Ù Ø§ÙØ£ØŽØ®Ø§Øµ ÙÙ ÙÙÙ
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index 1605070..9bf013f 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -2,7 +2,7 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "دا؊رة ØªÙØ± Ø¬Ø¯ÙØ¯Ø© ÙÙØ°Ø§ اÙÙ
ÙÙØ¹">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.preferences "Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§ÙØ£Ù
ÙÙØ© ...">
+<!ENTITY torbutton.context_menu.preferences "إعدادات Ø§ÙØ£Ù
اÙ...">
<!ENTITY torbutton.context_menu.preferences.key "S">
<!ENTITY torbutton.context_menu.networksettings "إعدادات ØŽØšÙØ© ØªÙØ±...">
<!ENTITY torbutton.context_menu.networksettings.key "N">
@@ -11,9 +11,9 @@
<!ENTITY torbutton.context_menu.cookieProtections "إعدادات Ø£Ù
ا٠Ù
ÙÙØ§Øª تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø·...">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
<!ENTITY torbutton.button.tooltip "اÙÙØ± ÙØšØ¯Ø¡ زر ØªÙØ±">
-<!ENTITY torbutton.prefs.security_settings "إعدادات Ø§ÙØ£Ù
ا٠ÙÙ
ØªØµÙØ Ø·ÙØ±">
-<!ENTITY torbutton.prefs.restore_defaults "إعادة Ø§ÙØªØ¹ÙÙÙ">
-<!ENTITY torbutton.prefs.custom_warning "Your custom browser preferences have resulted in unusual security settings. For security and privacy reasons, we recommend you choose one of the default security levels.">
+<!ENTITY torbutton.prefs.security_settings "إعدادات Ø£Ù
ا٠Ù
ØªØµÙØ Ø·ÙØ±">
+<!ENTITY torbutton.prefs.restore_defaults "استعد Ø§ÙØ¥Ø¹Ø§Ø¯Ø§Øª اÙÙ
ØšØ¯ØŠÙØ©">
+<!ENTITY torbutton.prefs.custom_warning "ØªÙØ¶ÙÙØ§ØªÙ Ø§ÙØ®Ø§ØµØ© ÙÙÙ
ØªØµÙØ تسؚؚت Ù٠إعدادات Ø£Ù
Ø§Ù ØºÙØ± Ù
عتادة. ÙØ£Ù
Ø§Ù ÙØ®ØµÙØµÙØ© Ø£ÙØ¶Ù ÙÙØµØ ؚاستخداÙ
Ø£ØØ¯ Ù
ستÙÙØ§Øª Ø§ÙØ£Ù
ا٠اÙÙ
ØšØ¯ØŠÙØ©.">
<!ENTITY torbutton.cookiedialog.title "إدارة إعدادت Ø§ÙØÙ
Ø§ÙØ© ÙÙ
ÙÙØ§Øª تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø·">
<!ENTITY torbutton.cookiedialog.lockCol "Ù
ØÙ
ÙØ©">
<!ENTITY torbutton.cookiedialog.domainCol "Ø§Ø³ØªØ¶Ø§ÙØ©">
@@ -22,29 +22,30 @@
<!ENTITY torbutton.cookiedialog.protectCookie "اØÙ
Ù
Ù٠تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø· (ÙÙÙÙ)">
<!ENTITY torbutton.cookiedialog.removeCookie "Ø¥Ø²Ø§ÙØ© Ù
Ù٠تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø· (ÙÙÙÙ)">
<!ENTITY torbutton.cookiedialog.unprotectCookie "Ø¥ÙØºØ§Ø¡ ØÙ
Ø§ÙØ© Ù
Ù٠تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø· (ÙÙÙÙ)">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Ø¥Ø²Ø§ÙØ© اÙÙÙ ÙÙ٠استÙ
ر ÙÙ Ø§ÙØÙ
Ø§ÙØ©">
+<!ENTITY torbutton.cookiedialog.removeAllBut "أزÙ٠اÙÙÙ ÙÙ٠استÙ
ر ÙÙ Ø§ÙØÙ
Ø§ÙØ©">
<!ENTITY torbutton.cookiedialog.saveAllCookies "اØÙ
Ù
ÙÙØ§Øª تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø· Ø§ÙØ¬Ø¯Ùدة">
<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "ÙØ§ تØÙ
Ù
ÙÙØ§Øª تعرÙÙ Ø§ÙØ§Ø±ØªØšØ§Ø· Ø§ÙØ¬Ø¯Ùدة">
<!ENTITY torbutton.prefs.restrict_thirdparty "تÙÙÙØ¯ اÙÙCookies Ø§ÙØ®Ø§ØµØ© ØšØ§ÙØ·Ø±Ù Ø§ÙØ«Ø§ÙØ« Ù ØšÙØ§Ùات Ø§ÙØªØªØšØ¹ Ø§ÙØ£Ø®Ø±Ù.">
-<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "R">
-<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Keep this box checked to prevent various browser features from being abused to track you as you browse the web. Modified features include blob URLs, broadcast channels, the browser cache, cookies, favicons, HTTP Auth headers, link preconnects, localStorage, mediaSource URLs, OCSP requests, SharedWorkers, and TLS session tickets.">
-<!ENTITY torbutton.prefs.resist_fingerprinting "تغÙÙØ± Ø§ÙØªÙاصÙÙ Ø§ÙØªÙ تÙ
ÙØ²Ù ع٠اÙÙ
ستخدÙ
ÙÙ Ø§ÙØ¢Ø®Ø±ÙÙ ÙÙ
ØªØµÙØ ØªÙØ±">
-<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "F">
-<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Keep this box checked to hide things from websites that could be unique about you, including your computer performance, keyboard layout, locale, the location of installed plugins, the list of installed plugins, your network status, screen orientation, screen size, site-specific zoom levels, supported file types, system colors, and WebGL capabilities.">
+<!ENTITY torbutton.prefs.restrict_thirdparty.accesskey "Ù">
+<!ENTITY torbutton.prefs.restrict_thirdparty_tooltip "Ø§ØªØ±Ù ÙØ°Ø§ اÙÙ
رؚع Ù
؀؎را ÙÙ
ÙØ¹ إساءة استخداÙ
Ø§ÙØ¹Ø¯Ùد Ù
٠خصا؊ص اÙÙ
ØªØµÙØ ÙÙ ØªØ¹ÙØšÙ Ø£Ø«ÙØ§Ø¡ ØªØµÙØÙ ÙÙÙØš. Ø§ÙØ®ØµØ§ØŠØµ اÙÙ
عدÙÙØ© ت؎Ù
Ù Ù
سارات اÙÙØ§ØŠÙØ§ØªØ ÙÙÙÙØ§Øª Ø§ÙØšØ«Ø ÙØ®ØšÙ؊ة اÙÙ
ØªØµÙØØ ÙØ§ÙÙØ¹ÙØ§ØªØ ÙØ£ÙÙÙÙØ§Øª اÙÙ
ÙØ§ÙØ¹Ø ÙØªØ±ÙÙØ³Ø§Øª Ø§Ø³ØªÙØ«Ø§Ù HTTPØ ÙØ§Ùاتصا٠اÙÙ
Ø³ØšÙ ØšØ§ÙØ±ÙØ§ØšØ·Ø Ø§ÙØªØ®Ø²Ù٠اÙÙ
ØÙÙØ ÙÙ
سارات اÙÙØ³Ø§ØŠØ·Ø ÙØ·Ùؚات OCSPØ ÙSharedWorkersØ ÙØšØ·Ø§Ùات Ø¬ÙØ³Ø§Øª TLS.">
+<!ENTITY torbutton.prefs.resist_fingerprinting "غÙÙØ± Ø§ÙØªÙاصÙÙ Ø§ÙØªÙ تÙ
ÙØ²Ù ع٠Ù
ستخدÙ
Ù Ù
ØªØµÙØ ØªÙØ± Ø§ÙØ¢Ø®Ø±ÙÙ">
+<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "غ">
+<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Ø§ØªØ±Ù ÙØ°Ø§ اÙÙ
رؚع Ù
؀؎را ÙØªØ®Ù٠ع٠Ù
ÙØ§Ùع اÙÙØš Ø§ÙØ£ØŽÙاء Ø§ÙØªÙ تÙ
ÙØ²Ù Ø¹Ù ØºÙØ±ÙØ Ù
ث٠أداء ØØ§Ø³ÙØšÙØ ÙØªØ®Ø·ÙØ· ÙÙØØ© اÙÙ
ÙØ§ØªÙØØ ÙØ§ÙÙØºØ©Ø ÙÙ
ÙØ§Ù ØªÙØµÙØš اÙÙ
ÙØÙØ§ØªØ ÙÙØ§ØŠÙ
Ø© اÙÙ
ÙØÙØ§Øª اÙÙ
ÙØµØšØ©Ø ÙØØ§ÙØ© Ø§ÙØŽØšÙØ©Ø ÙØ§ØªØ¬Ø§Ù Ø§ÙØŽØ§ØŽØ© ÙØØ¬Ù
ÙØ§Ø ÙÙ
ستÙÙØ§Øª Ø§ÙØªÙØ±ÙØš ÙÙÙ Ù
ÙÙØ¹Ø ÙØ£ÙÙØ§Ø¹ اÙÙ
ÙÙØ§Øª اÙÙ
دعÙÙ
Ø©Ø ÙØ£ÙÙØ§Ù اÙÙØžØ§Ù
Ø ÙØ¥Ù
ÙØ§Ùات WebGL.">
<!ENTITY torbutton.prefs.sec_caption "Ù
ستÙÙ Ø§ÙØ£Ù
اÙ">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "The Security Slider lets you disable certain browser features that may make your browser more vulnerable to hacking attempts.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "ÙØªÙØ ÙÙ ØŽØ±ÙØ· تÙ
Ø±ÙØ± Ù
ستÙÙ Ø§ÙØ£Ù
ا٠تعطÙ٠ؚعض Ù
Ù Ù
Ù
ÙØ²Ø§Øª Ù
ØªØµÙØÙ ØªØ¬Ø¹ÙÙ Ø£ÙØ«Ø± عرضة ÙÙØ§Ø®ØªØ±Ø§Ù.">
<!ENTITY torbutton.prefs.sec_standard_label "عادÙ">
-<!ENTITY torbutton.prefs.sec_standard_description "All Tor Browser and website features are enabled.">
-<!ENTITY torbutton.prefs.sec_safer_label "Ø¢Ù
Ù٠جدا">
-<!ENTITY torbutton.prefs.sec_safer_description "Disables website features that are often dangerous, causing some sites to lose functionality.">
-<!ENTITY torbutton.prefs.sec_safer_list_label "At the safer setting:">
-<!ENTITY torbutton.prefs.sec_safest_label "Ø¬ÙØ¯Ù Ø¢Ù
ÙÙ">
-<!ENTITY torbutton.prefs.sec_safest_description "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.">
-<!ENTITY torbutton.prefs.sec_safest_list_label "At the safest setting:">
+<!ENTITY torbutton.prefs.sec_standard_description "Ù٠خصا؊ص Ù
ØªØµÙØ ØªÙØ± ÙÙ
ÙØ§Ùع اÙÙØš Ù
ÙØ¹ÙØ©">
+<!ENTITY torbutton.prefs.sec_safer_label "Ø¢Ù
ÙÙ">
+<!ENTITY torbutton.prefs.sec_safer_description "ÙØ¹Ø·Ù Ù
Ù
ÙØ²Ø§Øª Ù
ÙØ§Ùع اÙÙØš Ø§ÙØªÙ عادة Ù
ا تÙÙÙ Ø®Ø·ÙØ±Ø©. ÙØªØ³ØšØš Ù٠تعط٠خصا؊ص ؚعض اÙÙ
ÙØ§Ùع.">
+<!ENTITY torbutton.prefs.sec_safer_list_label "ÙÙ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯ Ø§ÙØ¢Ù
Ù:">
+<!ENTITY torbutton.prefs.sec_safest_label "Ø§ÙØ£Ùثر Ø£Ù
ÙØ§">
+<!ENTITY torbutton.prefs.sec_safest_description "اسÙ
Ø ÙÙØ· ØšØ§ÙØ®ØµØ§ØŠØµ اÙÙ
Ø·ÙÙØšØ© ÙÙÙ
ÙØ§Ùع ØºÙØ± Ø§ÙØ¯ÙÙØ§Ù
ÙÙÙØ© ÙØ§ÙخدÙ
ات Ø§ÙØ£Ø³Ø§Ø³ÙØ©. ت؀ثر ÙØ°Ù Ø§ÙØªØºÙÙØ±Ø§Øª عÙÙ Ø§ÙØµÙر ÙØ§ÙÙØ³Ø§ØŠØ· ÙØ§ÙÙØµÙص Ø§ÙØšØ±Ù
Ø¬ÙØ©.">
+<!ENTITY torbutton.prefs.sec_safest_list_label "ÙÙ Ø§ÙØ¥Ø¹Ø¯Ø§Ø¯ Ø§ÙØ£Ùثر Ø£Ù
ÙØ§:">
<!ENTITY torbutton.prefs.sec_learn_more_label "تعرÙ٠عÙ٠اÙÙ
Ø²ÙØ¯">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript is disabled on non-HTTPS sites.">
-<!ENTITY torbutton.prefs.sec_js_disabled "Ø¬Ø§ÙØ§ Ø³ÙØ±Ùؚت Ù
عط٠ؚ؎ÙÙ Ø§ÙØªØ±Ø§Ø¶Ù عÙ٠جÙ
ÙØ¹ اÙÙ
ÙØ§Ùع.">
-<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
-<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "دا؊رة ØªÙØ± ÙÙØ°Ø§ اÙÙ
ÙÙØ¹">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "ØªØ¹Ø·Ù Ø¬Ø§ÙØ§ Ø³ÙØ±ØšØª عÙ٠اÙÙ
ÙØ§Ùع Ø§ÙØªÙ ÙØ§ تستخدÙ
HTTPS">
+<!ENTITY torbutton.prefs.sec_js_disabled "ØªØ¹Ø·Ù Ø¬Ø§ÙØ§ Ø³ÙØ±ØšØª Ù
ØšØ¯ØŠÙØ§ عÙ٠جÙ
ÙØ¹ اÙÙ
ÙØ§Ùع.">
+<!ENTITY torbutton.prefs.sec_limit_typography "تعطÙ٠ؚعض Ø§ÙØ®Ø·ÙØ· ÙØ§ÙرÙ
ÙØ² Ø§ÙØ±ÙØ§Ø¶ÙØ©.">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "تعطÙ٠ؚعض Ø§ÙØ®Ø·ÙØ· ÙØ§ÙØ£ÙÙÙÙØ§Øª ÙØ§ÙرÙ
ÙØ² Ø§ÙØ±ÙØ§Ø¶ÙØ© ÙØ§ÙØµÙØ±.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Ø§ÙØµÙت ÙØ§ÙÙÙØ¯ÙÙ ÙØØªØ§Ø¬ ÙÙÙÙØ± ÙØªØŽØºÙÙÙ.">
+<!ENTITY torbutton.circuit_display.title "دا؊رة ØªÙØ±">
+<!ENTITY torbutton.circuit_display.new_circuit "دا؊رة ØªÙØ± Ø¬Ø¯ÙØ¯Ø© ÙÙØ°Ø§ اÙÙ
ÙÙØ¹">
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index fb18bee..afa0b93 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -1,51 +1,54 @@
torbutton.circuit_display.internet = Ø§ÙØªØ±Ùت
torbutton.circuit_display.ip_unknown = IP ØºÙØ± Ù
عرÙÙ
-torbutton.circuit_display.onion_site = Ù
ÙÙØ¹ اÙÙÙÙÙ
+torbutton.circuit_display.onion_site = Ù
ÙÙØ¹ Ø£ÙÙÙÙÙ
torbutton.circuit_display.this_browser = ÙØ°Ø§ اÙÙ
ØªØµÙØ
-torbutton.circuit_display.relay = Ù
ÙØ±ØÙ
+torbutton.circuit_display.relay = تØÙÙÙØ©
torbutton.circuit_display.tor_bridge = جسر
torbutton.circuit_display.unknown_country = ØšÙØ¯ ØºÙØ± Ù
عرÙÙ
-torbutton.content_sizer.margin_tooltip = ÙØ¶ÙÙ Ù
ØªØµÙØ ØªÙØ± ÙØ°Ø§ اÙÙØ§Ù
ØŽ ÙØ§ØšÙاء ÙØ§ÙØ°ØªÙ ØºÙØ± Ù
Ù
ÙØ²ÙØ ÙØªÙÙÙ٠اÙ
ÙØ§ÙÙ٠تÙÙÙ٠عؚر Ø§ÙØ§ÙØªØ±ÙØª.
+torbutton.circuit_display.guard = ØØ§Ø±Ø³
+torbutton.circuit_display.guard_note = ÙØ§ ÙÙ
Ù٠تغÙÙØ± Ø§ÙØ¹Ùدة Ø§ÙØ®Ø§Ø±Ø³Ø©
+torbutton.circuit_display.learn_more = تعرÙ٠عÙ٠اÙÙ
Ø²ÙØ¯
+torbutton.content_sizer.margin_tooltip = ÙØ¶ÙÙ Ù
ØªØµÙØ ØªÙØ± ÙØ°Ø§ اÙÙØ§Ù
ØŽ ÙØ¬Ø¹Ù عرض ÙØ§Ø±ØªÙاع ÙØ§ÙØ°ØªÙ ØºÙØ± Ù
Ù
ÙØ²ÙÙØ ÙØªÙÙÙ٠إÙ
ÙØ§ÙÙØ© Ø§ÙØªÙاء أثر٠عؚر Ø§ÙØ¥ÙØªØ±ÙØª.
torbutton.panel.tooltip.disabled = اÙÙØ± ÙØªÙعÙÙ ØªÙØ±
torbutton.panel.tooltip.enabled = اÙÙØ± ÙØªØ¹Ø·ÙÙ ØªÙØ±
torbutton.panel.label.disabled = ØªÙØ± Ù
عطÙÙ
torbutton.panel.label.enabled = ØªÙØ± Ù
ÙØ¹ÙÙ
extensions.torbutton(a)torproject.org.description = زر ØªÙØ± ÙÙÙØ± زر ÙØªØ¹Ø¯Ù٠إعدادات ØªÙØ± ÙØ§Ùضا٠ÙÙ
Ø³Ø ØšÙØ§Ùات Ø§ÙØªØµÙØ Ø§ÙØ®Ø§ØµØ© ؚ٠ؚسرعة ÙØšØ³ÙÙÙØ©.
-torbutton.popup.external.title = ÙÙ ØªØ±ÙØ¯ ØªÙØ²ÙÙ Ù
ÙÙØ§Ù Ù
Ù ÙÙØ¹ اÙÙØµÙØ© Ø§ÙØ®Ø§Ø±Ø¬ÙØ©Ø
-torbutton.popup.external.app = ÙØ§ ÙÙ
ÙÙ ÙÙ
تصÙÙØ ØªÙØ± عرض ÙØ°Ù اÙÙ
ÙÙ, ÙØ¬Øš عÙÙÙ Ø£Ù ØªÙØªØÙ ؚاستعÙ
ا٠تطؚÙ٠أخر.\n\n
-torbutton.popup.external.note = ؚعض Ø§ÙØ£ÙÙØ§Ø¹ Ù
٠اÙÙ
ÙÙØ§Øª ÙØ¯ تعÙ
٠عÙ٠إعطاء ؚعض Ø§ÙØªØ·ØšÙÙØ§Øª Ø§ÙØ¥Ù
ÙØ§ÙÙÙØ© ÙÙØ§ØªØµØ§Ù ØšØ§ÙØ¥ÙØªØ±ÙØª دÙ٠استعÙ
Ø§Ù ØªÙØ±.\n\n
-torbutton.popup.external.suggest = ÙØ³ÙاÙ
تÙ, ÙØ¬Øš عÙÙÙ ÙØªØ اÙÙ
ÙÙØ§Øª اÙÙ
ÙØ²ÙÙØ© Ù
Ø³ØšÙØ§Ù Ø¹ÙØ¯ ÙÙÙÙ ØºÙØ± Ù
ØªØµÙØ§Ù ØšØ§ÙØ¥ÙØªØ±ÙØª, أ٠استعÙ
Ù ÙØ±Øµ Ù
Ø¶ØºÙØ· ÙÙ Tor Life , Ù
ث٠Tails.\n
+torbutton.popup.external.title = ÙÙ ØªØ±ÙØ¯ ØªÙØ²ÙÙ Ù
ÙÙ Ø®Ø§Ø±Ø¬ÙØ
+torbutton.popup.external.app = ÙØ§ ÙÙ
ÙÙ ÙÙ
تصÙÙØ ØªÙØ± عرض ÙØ°Ù اÙÙ
ÙÙØ ÙØ¬Øš عÙÙÙ Ø£Ù ØªÙØªØÙ ؚاستعÙ
ا٠تطؚÙ٠آخر.\n\n
+torbutton.popup.external.note = ؚعض Ø£ÙÙØ§Ø¹ Ù
٠اÙÙ
ÙÙØ§Øª ÙØ¯ تتسؚؚ ÙÙ Ø§ØªØµØ§Ù Ø§ÙØªØ·ØšÙÙØ§Øª ØšØ§ÙØ¥ÙØªØ±ÙØª دÙ٠استعÙ
Ø§Ù ØªÙØ±.\n\n
+torbutton.popup.external.suggest = ÙØ³ÙاÙ
تÙ, ÙØ¬Øš عÙÙÙ ÙØªØ اÙÙ
ÙÙØ§Øª اÙÙ
ÙØ²ÙÙØ© ÙØ£Ùت ØºÙØ± Ù
ØªØµÙ ØšØ§ÙØ¥ÙØªØ±ÙØªØ أ٠استعÙ
Ù ÙØ±Øµ ØªÙØ± ØÙ Ù
ث٠Tails.\n
torbutton.popup.launch = تØÙ
Ù٠اÙÙ
ÙÙ
torbutton.popup.cancel = Ø¥ÙØºØ§Ø¡
-torbutton.popup.dontask = Ø£ÙØ²Ù اÙÙ
ÙÙØ§Øª ؚ؎ÙÙÙ Ø£ÙØªÙÙ
اتÙÙÙÙ Ù
Ù Ø§ÙØ£Ù ÙØµØ§Ø¹Ø¯Ø§Ù
-torbutton.popup.prompted_language = ØØªÙ ÙÙ
ÙØÙ Ø²Ø± ØªÙØ± Ù
Ø²ÙØ¯Ø§Ù Ù
Ù Ø§ÙØ®ØµÙØµÙØ©Ø ÙØ³ØªØ·Ùع زر ØªÙØ± Ø·ÙØš Ø§ÙÙØ³Ø® Ø§ÙØ¥ÙجÙÙØ²ÙØ© Ù
Ù ØµÙØØ§Øª Ø§ÙØ§ÙØªØ±ÙØª. ÙÙØ¯ ÙÙØªØ¬ ع٠ذÙ٠عرض Ø§ÙØµÙØØ§Øª Ø§ÙØªÙ ØªÙØ¶Ù ÙØ±Ø§Ø¡ØªÙا ØšÙØºØªÙ Ø§ÙØ£Ù
ؚاÙÙØºØ© Ø§ÙØ¥ÙجÙÙØ²ÙØ©.\n\nÙÙ ØªØ±ÙØ¯ Ø·ÙØš ØµÙØØ§Øª اÙÙØš ØšØ§ÙÙØºØ© Ø§ÙØ¥ÙجÙÙØ²ÙØ© ÙØ®ØµÙØµÙØ© Ø§ÙØ¶ÙØ
-torbutton.popup.no_newnym = ÙØ§ ÙÙ
ÙÙ ÙØ²Ø± ØªÙØ± Ø£Ù ÙØ¹Ø·ÙÙ ÙÙÙØ© Ø¬Ø¯ÙØ¯Ø© ؚ؎Ù٠آÙ
ÙØ ÙÙØ°Ø§ ÙØ§Ù زر ØªÙØ± ÙØ§ ÙØ³ØªØ·Ùع اÙÙØµÙ٠إÙÙ Ù
ÙÙØ° Ø§ÙØªØÙÙ
Ø§ÙØ®Ø§Øµ ØšØªÙØ±.\n\nÙ٠تستخدÙ
ØØ²Ù
Ø© Ù
ØªØµÙØ ØªÙØ± ØØ§ÙÙØ§ÙØ
-torbutton.title.prompt_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© Ø¹Ù ØªÙØ±
-torbutton.popup.prompt_torbrowser = ÙÙØ¯ ØªØºÙØ±Øª طرÙÙØ© عÙ
٠زر ØªÙØ± Ø§ÙØ§Ù: ÙØ§ ÙÙ
ÙÙ٠إÙÙØ§ÙÙ Ø§ÙØ§Ù \n\nÙÙ
ÙØ§ ØšÙØ°Ø§ Ø§ÙØªØºÙÙØ± ÙØ§ÙÙ Ø§ØµØšØ Ù
Ù ØºÙØ± Ø§ÙØ¢Ù
٠استخداÙ
زر ØªÙØ± Ù٠اÙÙ
ØªØµÙØ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù
ÙÙ Ø§ÙØªØµÙØ Ø®Ø§Ø±Ø¬ ØªÙØ±. ÙØ§Ù ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ¹ÙÙ Ù Ø§ÙØªÙ ÙÙ
ÙÙ
ÙÙ Ù
٠اÙÙ
Ù
ÙÙ Ù
Ø¹Ø§ÙØ¬ØªÙا ؚا٠طرÙÙØ© اخرÙ.\n\nإذا اردت Ø§ÙØ§Ø³ØªÙ
رار Ù٠استخداÙ
ÙØ§ÙرÙÙÙØ³ تÙÙÙØ¯ÙØ§ÙØ ÙØªÙجؚ عÙÙÙ Ø¥Ø²Ø§ÙØ© زر ØªÙØ± ٠تØÙ
ÙÙ ØØ²Ù
Ø© Ù
ØªØµÙØ ØªÙØ±. ÙÙ
ا ا٠خصا؊ص Ø§ÙØ®ØµÙØµÙØ© ÙÙ
ØªØµÙØ ØªÙØ± تتÙÙ٠عÙ٠تÙÙ Ø§ÙØªÙ ÙÙ Ù
ØªØµÙØ ÙØ§ÙرÙÙÙØ³ Ø§ÙØªÙÙÙØ¯ÙØ ØØªÙ Ù٠تÙ
استخداÙ
Ù
ØªØµÙØ ÙØ§ÙرÙÙÙØ³ Ù
ع زر ØªÙØ±.\n\nÙØ¥Ø²Ø§ÙØ© زر ØªÙØ±Ø Ø§Ø°ÙØš Ø¥ÙÙ Ø£Ø¯ÙØ§Øª->Ø¥Ø¶Ø§ÙØ§Øª->Ù
ØÙÙØ§Øª Ø Ø«Ù
إضغط عÙ٠زر Ø¥Ø²Ø§ÙØ© Ø§ÙØ°Ù ØšØ¬Ø§ÙØš Ø
²Ø± ØªÙØ±.
-torbutton.popup.short_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© ع٠زر ØªÙØ± \n\nتÙ
تÙ
ÙÙ٠زر ØªÙØ± ÙÙØ¹Ù
٠ؚاستÙ
رار Ø§ÙØ§Ù\n\nاضغط عÙ٠زر ØªÙØ± ÙÙÙ
Ø²ÙØ¯ Ù
٠اÙÙ
عÙÙÙ
ات
+torbutton.popup.dontask = ÙØ²Ù٠اÙÙ
ÙÙØ§Øª تÙÙØ§ØŠÙا Ù
Ù Ø§ÙØ¢Ù ÙØµØ§Ø¹Ø¯Ùا
+torbutton.popup.prompted_language = ÙÙÙ
ÙØÙ Ø²Ø± ØªÙØ± Ù
Ø²ÙØ¯Ùا Ù
Ù Ø§ÙØ®ØµÙØµÙØ©Ø ÙÙ
ÙÙÙ Ø£Ù ÙØ·ÙØš اÙÙØ³Ø® Ø§ÙØ¥ÙجÙÙØ²ÙØ© Ù
Ù ØµÙØØ§Øª Ø§ÙØ¥ÙØªØ±ÙØª. ÙØ¯ ÙÙØªØ¬ ع٠ذÙ٠عرض Ø§ÙØµÙØØ§Øª Ø§ÙØªÙ ØªÙØ¶Ù ÙØ±Ø§Ø¡ØªÙا ØšÙØºØªÙ Ø§ÙØ£Ù
ؚاÙÙØºØ© Ø§ÙØ¥ÙجÙÙØ²ÙØ©.\n\nÙÙ ØªØ±ÙØ¯ Ø·ÙØš ØµÙØØ§Øª اÙÙØš ØšØ§ÙÙØºØ© Ø§ÙØ¥ÙجÙÙØ²ÙØ© ÙØ®ØµÙØµÙØ© Ø£ÙØ¶ÙØ
+torbutton.popup.no_newnym = ÙØ§ ÙÙ
ÙÙ ÙØ²Ø± ØªÙØ± Ø£Ù ÙØ¹Ø·ÙÙ ÙÙÙØ© Ø¬Ø¯ÙØ¯Ø© ؚ؎Ù٠آÙ
ÙØ ÙØ£ÙÙ ÙØ§ ÙØ³ØªØ·Ùع اÙÙØµÙ٠إÙÙ Ù
ÙÙØ° تØÙÙ
ØªÙØ±.\n\nÙ٠تستخدÙ
ØØ²Ù
Ø© Ù
ØªØµÙØ ØªÙØ± ØØ§ÙÙØ§ÙØ
+torbutton.title.prompt_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© ع٠زر ØªÙØ±
+torbutton.popup.prompt_torbrowser = ÙÙØ¯ ØªØºÙØ±Øª طرÙÙØ© عÙ
٠زر ØªÙØ±: ÙÙ
ÙØ¹Ø¯ ؚإÙ
ÙØ§Ù٠إÙÙØ§ÙÙ.\n\nأجرÙÙØ§ ÙØ°Ø§ Ø§ÙØªØºÙÙØ± ÙØ£ÙÙ Ù
Ù ØºÙØ± Ø§ÙØ¢Ù
٠استخداÙ
زر ØªÙØ± Ù٠اÙÙ
ØªØµÙØ Ø§ÙØ°Ù ÙØ³ØªØ®Ø¯Ù
ÙÙ Ø§ÙØªØµÙØ Ø®Ø§Ø±Ø¬ ØªÙØ±. ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ¹ÙÙ Ø§ÙØªÙ ÙØ§ ÙÙ
ÙÙ Ù
Ø¹Ø§ÙØ¬ØªÙا ؚأ٠طرÙÙØ© أخرÙ.\n\nإذا أردت Ø§ÙØ§Ø³ØªÙ
رار Ù٠استخداÙ
ÙÙÙÙØ±ÙÙÙØ³ Ø¹Ø§Ø¯ÙØ§Ø ÙØ¹ÙÙÙ Ø¥Ø²Ø§ÙØ© زر ØªÙØ± ÙØªÙزÙÙ ØØ²Ù
Ø© Ù
ØªØµÙØ ØªÙØ±. ÙÙ
ا أ٠خصا؊ص Ø§ÙØ®ØµÙØµÙØ© ÙÙ
ØªØµÙØ ØªÙØ± تتÙÙ٠عÙ٠تÙÙ Ø§ÙØªÙ ÙÙ Ù
ØªØµÙØ ÙÙÙÙØ±ÙÙÙØ³ Ø§ÙØ¹Ø§Ø¯ÙØ ØØªÙ Ø¹ÙØ¯ استخداÙ
Ù Ù
ع زر ØªÙØ±.\n\nÙØ¥Ø²Ø§ÙØ© زر ØªÙØ±Ø Ø§Ø°ÙØš Ø¥ÙÙ Ø£Ø¯ÙØ§Øª->Ø¥Ø¶Ø§ÙØ§Øª->Ù
ØÙÙØ§Øª Ø Ø«Ù
اضغط عÙ٠زر Ø¥Ø²Ø§ÙØ© Ø§ÙØ°Ù ØšØ¬Ø§ÙØš Ø²Ø± ØªÙØ±.
+torbutton.popup.short_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© ع٠زر ØªÙØ±.\n\nزر ØªÙØ± Ù
ÙØ¹Ù٠دا؊Ù
ا Ø§ÙØ¢Ù.\n\nاضغط عÙ٠زر ØªÙØ± ÙÙÙ
Ø²ÙØ¯ Ù
٠اÙÙ
عÙÙÙ
ات.
-torbutton.popup.confirm_plugins = Ø§ÙØšØ±Ø§Ù
ج Ø§ÙØ¥Ø¶Ø§ÙÙØ© Ù
ث٠ÙÙØ§ØŽ ØªØ³ØªØ·ÙØ¹ ا٠تضر ØšØ®ØµÙØµÙØªÙ Ù ØªÙØŽÙ ÙÙÙØªÙ.\n\nÙ ØªØ³ØªØ·ÙØ¹ Ø§ÙØ¶Ø§ Ø§Ù ØªØªØ¬ÙØš ØªÙØ± Ù ØªÙØŽÙ ع٠Ù
ÙØ§ÙÙ Ø§ÙØØ§Ù٠٠عÙÙØ§Ù Ø§ÙØ£Ù ØšÙ Ø§ÙØ®Ø§Øµ ØšÙ.\n\nÙÙ Ø£ÙØª Ù
ØªØ£ÙØ¯ Ø£ÙÙ ØªØ±ÙØ¯ ØªÙØ¹ÙÙ Ø§ÙØšØ±Ø§Ù
ج Ø§ÙØ¥Ø¶Ø§ÙÙØ©Ø\n\n
-torbutton.popup.never_ask_again = ÙØ§ تسأÙÙÙ Ù
رة اخرÙ
-torbutton.popup.confirm_newnym = Ù
ØªØµÙØ ØªÙØ±
+torbutton.popup.confirm_plugins = اÙÙ
ÙØÙØ§Øª Ù
ث٠ÙÙØ§ØŽ ÙÙ
Ù٠أ٠تضر ØšØ®ØµÙØµÙØªÙ ÙØªÙØŽÙ ÙÙÙØªÙ.\n\nÙÙ
ا ÙÙ
ÙÙÙØ§ Ø£Ù ØªØªØ¬ÙØš ØªÙØ± Ù ØªÙØŽÙ ع٠Ù
ÙØ§ÙÙ Ø§ÙØØ§Ù٠٠عÙÙØ§Ù Ø§ÙØ¥ÙØªØ±ÙØª (IP).\n\nÙÙ Ø£ÙØª Ù
ØªØ£ÙØ¯ Ø£ÙÙ ØªØ±ÙØ¯ ØªÙØ¹Ù٠اÙÙ
ÙØÙØ§ØªØ\n\n
+torbutton.popup.never_ask_again = ÙØ§ تسأÙÙÙ Ù
رة أخرÙ
+torbutton.popup.confirm_newnym = Ø³ÙØºÙÙ Ù
ØªØµÙØ ØªÙØ± Ù٠اÙÙÙØ§Ùذ ÙØ§ÙØ£ÙØ³ÙØ©Ø ÙÙ
ا ستÙ
Ø³Ø ÙÙ Ø¬ÙØ³Ø§Øª اÙÙ
ÙØ§Ùع.\n\nØ£ØªØ±ÙØ¯ إعادة ت؎غÙÙ Ù
ØªØµÙØ ØªÙØ± Ø§ÙØ¢Ù Ø£Ù
تغÙÙØ± ÙÙÙØªÙØ\n\n
-torbutton.slider_notification = ÙØ§ØŠÙ
Ø© Ø§ÙØšØµÙØ© Ø§ÙØ®Ø¶Ø±Ø§Ø¡ ÙØ¯ÙÙØ§ Ø§ÙØ¢Ù Ù
ÙØ²Ù٠أÙ
ÙÙ Ø§ÙØ°Ù ÙÙ
ÙÙÙ Ù
٠ضؚط Ù
ستÙ٠أÙ
اÙÙ. تØÙÙ Ù
٠ذÙÙ!
-torbutton.slider_notification_button = ÙØªØ إعدادات Ø§ÙØ£Ù
اÙ
+torbutton.slider_notification = ÙØ§ØŠÙ
Ø© Ø§ÙØšØµÙØ© Ø§ÙØ®Ø¶Ø±Ø§Ø¡ ØšÙØ§ Ø§ÙØ¢Ù ØŽØ±ÙØ· تÙ
Ø±ÙØ± Ø£Ù
ÙÙ ÙØªÙØ Ù٠ضؚط Ù
ستÙ٠أÙ
اÙÙ. تØÙÙ Ù
٠ذÙÙ!
+torbutton.slider_notification_button = Ø§ÙØªØ إعدادات Ø§ÙØ£Ù
اÙ
torbutton.maximize_warning = ØªÙØšÙر Ù
ØªØµÙØ ØªÙØ± ÙØ¯ ÙØ³Ù
Ø ÙØšØ¹Ø¶ اÙÙ
ÙØ§Ùع ØšØ§ÙØªØ¹Ø±Ù عÙÙ ØØ¬Ù
ØŽØ§ØŽØªÙØ ÙØ§Ø³ØªØ®Ø¯Ø§Ù
ÙØ°Ù اÙÙ
عÙÙÙ
ات ÙØªÙÙÙÙ. ÙÙØµÙ ØšØ§ØšÙØ§Ø¡ ÙØ§Ùذ٠Ù
ØªØµÙ ØªÙØ± عÙÙ ØØ¬Ù
ÙØ§ Ø§ÙØ§ÙتراضÙ.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=ÙØ°Ø§ اÙÙ
ÙÙØ¹ (Ùª S) ØØ§Ù٠استخراج ØšÙØ§Ùات Ø§ÙØµÙرة HTML5Ø ÙØ§Ùت٠ÙÙ
Ù٠استخداÙ
ÙØ§ ÙØªØØ¯Ùد Ù
ÙØ§ÙÙ ÙØªØØ¯Ùد اÙÙÙÙ
ØšÙÙØªØ±.\n\nÙÙ ØªØ±ÙØ¯ Ø£Ù ÙØ³Ù
Ø Ù
ØªØµÙØ Tor ÙÙØ°Ø§ اÙÙ
ÙÙØ¹ ÙØ§Ø³ØªØ®Ø±Ø§Ø¬ ØšÙØ§Ùات Ø§ÙØµÙرة Ø
canvas.notNow=ÙÙ ÙÙØª آخر
-canvas.notNowAccessKey=اÙÙÙÙ
-canvas.allow=Ø§ÙØ³Ù
Ø§Ø Ù٠اÙÙ
Ø³ØªÙØšÙ
-canvas.allowAccessKey=ا
-canvas.never=ÙÙØ³ ÙÙÙ
ÙÙØ¹ ÙØ°Ø§ اؚدا٠(Ù
Ø³ØªØØš)
-canvas.neverAccessKey=Ø·
+canvas.notNowAccessKey=Ù
+canvas.allow=اسÙ
Ø Ù٠اÙÙ
Ø³ØªÙØšÙ
+canvas.allowAccessKey=س
+canvas.never=ÙØ§ تسÙ
Ø ÙÙØ°Ø§ اÙÙ
ÙÙØ¹ Ø£ØšØ¯ÙØ§ (Ù
Ø³ØªØØ³Ù)
+canvas.neverAccessKey=د
# Profile/startup error messages. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S is the application name.
-profileProblemTitle=%SÙ
ØŽÙÙÙ ÙÙ Ù
Ù٠؎خصÙ
-profileReadOnly=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص ؚاÙÙØ±Ø§Ø¡Ø© ÙÙØ·. ÙØ±Ø¬Ù ÙØ³Ø® %S Ø¥ÙÙ Ù
ÙÙØ¹ آخر ÙØšÙ Ù
ØØ§ÙÙØ© استخداÙ
ÙØ§.
-profileReadOnlyMac=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص ؚاÙÙØ±Ø§Ø¡Ø© ÙÙØ·. ÙØ±Ø¬Ù ÙØ³Ø® %S Ø¥ÙÙ Ø³Ø·Ø Ø§ÙÙ
ÙØªØš Ø£Ù Ù
Ø¬ÙØ¯ Ø§ÙØªØ·ØšÙÙØ§Øª ÙØšÙ Ù
ØØ§ÙÙØ© استخداÙ
ÙØ§.
-profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
-profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
+profileProblemTitle=Ù
ØŽÙÙØ© ÙÙ Ù
Ù٠إعدادات %S
+profileReadOnly=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص ؚاÙÙØ±Ø§Ø¡Ø© ÙÙØ·. ÙØ±Ø¬Ù ÙØ³Ø® %S Ø¥ÙÙ Ù
ÙÙØ¹ آخر ÙØšÙ Ù
ØØ§ÙÙØ© استخداÙ
Ù.
+profileReadOnlyMac=ÙØ§ ÙÙ
ÙÙ٠ت؎غÙÙ %S Ù
Ù ÙØžØ§Ù
Ù
ÙÙØ§Øª خاص ؚاÙÙØ±Ø§Ø¡Ø© ÙÙØ·. ÙØ±Ø¬Ù ÙØ³Ø® %S Ø¥ÙÙ Ø³Ø·Ø Ø§ÙÙ
ÙØªØš Ø£Ù Ù
Ø¬ÙØ¯ Ø§ÙØªØ·ØšÙÙØ§Øª ÙØšÙ Ù
ØØ§ÙÙØ© استخداÙ
Ù.
+profileAccessDenied=ÙØ§ ÙÙ
تÙÙ %S Ø§ÙØµÙاØÙات اÙÙ
Ø·ÙÙØšØ© ÙÙ
Ù٠إعداداتÙ. ÙØ±Ø¬Ù ضؚط ØµÙØ§ØÙات ÙØžØ§Ù
اÙÙ
ÙÙØ§Øª Ø«Ù
إعادة اÙÙ
ØØ§ÙÙØ©.
+profileMigrationFailed=ÙØŽÙ ÙÙÙ Ù
Ù٠إعدادات %S اÙÙ
ÙØ¬Ùد Ø¥ÙÙ Ø§ÙØ¥ØµØ¯Ø§Ø±Ø© Ø§ÙØ¬Ø¯Ùدة.\nØ³ÙØ³ØªØ®Ø¯Ù
Ù
Ù٠إعدادات Ø¬Ø¯ÙØ¯.
diff --git a/src/chrome/locale/da/torbutton.dtd b/src/chrome/locale/da/torbutton.dtd
index 5a82f18..7936505 100644
--- a/src/chrome/locale/da/torbutton.dtd
+++ b/src/chrome/locale/da/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Nogle skrifttyper og matematiksymboler er deaktiverede.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Nogle skrifttyper, ikoner, matematiksymboler og billeder er deaktiveret.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Lyd og video (HTML5-medier) er klik-for-at-afspille.">
-<!ENTITY torbutton.circuit_display.title "Tor-kredslÞb for dette websted">
+<!ENTITY torbutton.circuit_display.title "Tor-kredslÞb">
+<!ENTITY torbutton.circuit_display.new_circuit "Nyt kredslÞb til dette sted">
diff --git a/src/chrome/locale/da/torbutton.properties b/src/chrome/locale/da/torbutton.properties
index 54df12c..d3be2cc 100644
--- a/src/chrome/locale/da/torbutton.properties
+++ b/src/chrome/locale/da/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = Ukendt IP-adresse
torbutton.circuit_display.onion_site = LÞg side
torbutton.circuit_display.this_browser = Denne browser
-torbutton.circuit_display.relay = relÊ
+torbutton.circuit_display.relay = RelÊ
torbutton.circuit_display.tor_bridge = Bro
torbutton.circuit_display.unknown_country = Ukendt land
+torbutton.circuit_display.guard = Vagt
+torbutton.circuit_display.guard_note = Dit [Vagt]-knudepunkt må ikke Êndres.
+torbutton.circuit_display.learn_more = LÊr mere
torbutton.content_sizer.margin_tooltip = Tor Browser tilfÞjer denne margin for at gÞre dit vindues hÞjde og bredde mindre genkendeligt, hvilket reducerer muligheden for at andre spore dig online.
torbutton.panel.tooltip.disabled = Klik for at aktivere Tor
torbutton.panel.tooltip.enabled = Klik for at deaktivere Tor
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index b4fb858..7fbb0f1 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -48,4 +48,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Einige Schriftarten und mathematische Symbole sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Einige Schriftarten, Symbole, mathematische Symbole und Bilder sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio und Video (HTML5-Medien) mÃŒssen zur Wiedergabe angeklickt werden.">
-<!ENTITY torbutton.circuit_display.title "Tor-Kanal fÃŒr diese Seite">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index 1e38c45..e3c33c7 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP ist unbekannt
torbutton.circuit_display.onion_site = Onion-Seite
torbutton.circuit_display.this_browser = Dieser Browser
-torbutton.circuit_display.relay = Relais
+torbutton.circuit_display.relay = Verteiler
torbutton.circuit_display.tor_bridge = BrÃŒcke
torbutton.circuit_display.unknown_country = Unbekanntes Land
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Erfahren Sie mehr
torbutton.content_sizer.margin_tooltip = Tor Browser fÌgt diese Begrenzung hinzu, um die Breite und Höhe Ihres Fensters weniger einzigartig zu machen. Dadurch wird es anderen erschwert, Sie im Internet zu verfolgen.
torbutton.panel.tooltip.disabled = Klicken, um Tor zu aktivieren
torbutton.panel.tooltip.enabled = Klicken, um Tor zu deaktivieren
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index 5408736..465fea8 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -32,7 +32,7 @@
<!ENTITY torbutton.prefs.resist_fingerprinting.accesskey "H">
<!ENTITY torbutton.prefs.resist_fingerprinting_tooltip "Mantenga esta casilla marcada para ocultar cosas a los sitios web que podrÃan ser únicas acerca de usted, incluyendo el rendimiento de su equipo, plano de teclado, localización, lista y ubicacion de complementos instalados, estado de su red, orientación de pantalla, tamaño de pantalla, niveles de zoom especÃfico del sitio, tipos de fichero soportados, colores del sistema, y capacidades WebGL. ">
<!ENTITY torbutton.prefs.sec_caption "Nivel de seguridad">
-<!ENTITY torbutton.prefs.sec_caption_tooltip "El control deslizante del nivel de seguridad le permite deshabilitar ciertas caracterÃsticas del navegador que pueden hacerlo más vulnerable a tentativas de hackeo.">
+<!ENTITY torbutton.prefs.sec_caption_tooltip "El control deslizante del nivel de seguridad te permite deshabilitar ciertas caracterÃsticas del navegador que pueden hacerlo más vulnerable a tentativas de hackeo.">
<!ENTITY torbutton.prefs.sec_standard_label "Estándar">
<!ENTITY torbutton.prefs.sec_standard_description "Están habilitadas todas las caracterÃsticas de Navegador Tor y sitio web.">
<!ENTITY torbutton.prefs.sec_safer_label "Más segura">
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Algunas fuentes y sÃmbolos matemáticos están deshabilitados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunas fuentes, iconos, sÃmbolos matemáticos, e imágenes están deshabilitados.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio y vÃdeo (medios HTML5) son de tipo pulsar-para-reproducir.">
-<!ENTITY torbutton.circuit_display.title "Circuito Tor para este sitio">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "Nuevo Circuito para este Sitio">
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index 35a796a..5463ea1 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP desconocida
torbutton.circuit_display.onion_site = Sitio onion
torbutton.circuit_display.this_browser = Este navegador
-torbutton.circuit_display.relay = repetidor
+torbutton.circuit_display.relay = Relay
torbutton.circuit_display.tor_bridge = Repetidor puente (bridge)
torbutton.circuit_display.unknown_country = PaÃs desconocido
+torbutton.circuit_display.guard = Protección
+torbutton.circuit_display.guard_note = Tu nodo [de protección] no puede cambiar.
+torbutton.circuit_display.learn_more = Conocer más
torbutton.content_sizer.margin_tooltip = El Navegador Tor añade este margen para hacer el ancho y el alto de tu ventana menos especial, y reducir de esta forma la posibilidad de rastrearte en lÃnea.
torbutton.panel.tooltip.disabled = Haga clic para habilitar Tor
torbutton.panel.tooltip.enabled = Haga clic para deshabilitar Tor
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 94062c1..fc95c71 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Gune honetako Tor zirkuitua">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index 0799da2..e77d04a 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP ezezaguna
torbutton.circuit_display.onion_site = Onion webgunea
torbutton.circuit_display.this_browser = Nagibatzaile hau
-torbutton.circuit_display.relay = errele
+torbutton.circuit_display.relay = Errele
torbutton.circuit_display.tor_bridge = Zubia
torbutton.circuit_display.unknown_country = Herrialde ezezaguna
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Learn more
torbutton.content_sizer.margin_tooltip = Tor nabigatzaileak marjin hau gehitzen du zure lehioaren zabalera eta altuera ez hain bereizgarria egiteko, horrela norbaitek zure jarraipena egiteko gaitasuna murriztuz.
torbutton.panel.tooltip.disabled = Sakatu Tor gaitzeko
torbutton.panel.tooltip.enabled = Sakatu Tor ezgaitzeko
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 9972010..61323e6 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Ù
دار ØªÙØ± ØšØ±Ø§Û Ø§ÛÙ Ø³Ø§ÛØª">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index e21d475..7b282da 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -5,6 +5,9 @@ torbutton.circuit_display.this_browser = اÛÙ Ù
Ø±ÙØ±Ú¯Ø±
torbutton.circuit_display.relay = ؚازٟخ؎
torbutton.circuit_display.tor_bridge = ÙŸÙ
torbutton.circuit_display.unknown_country = Ú©ØŽÙØ± ÙØ§ØŽÙاختÙ
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Ø§Ø·ÙØ§Ø¹Ø§Øª ØšÛØŽØªØ±
torbutton.content_sizer.margin_tooltip = Ù
Ø±ÙØ±Ú¯Ø± Tor اضاÙÙ Ù
Û Ú©ÙØ¯ اÛÙ ØØ§ØŽÛ٠را ؚ٠عرض Ù Ø§Ø±ØªÙØ§Ø¹ ÙŸÙØ¬Ø±Ù ØŽÙ
ا Ú©Ù Ú©Ù
تر Ù
؎خص ØŽÙØ¯Ø ٠در ÙØªÛج٠ؚاعث Ú©Ø§ÙØŽ ØªÙØ§ÙاÛÛ ØšÙ Ø±Ø¯ÛØ§ØšÛ Ø¢ÙÙØ§ÛÙ ØŽÙ
ا ØŽÙØ¯.
torbutton.panel.tooltip.disabled = ØšØ±Ø§Û ÙØ¹Ø§Ù Ú©Ø±Ø¯Ù ØªÙØ± Ú©ÙÙÚ© Ú©ÙÙØ¯
torbutton.panel.tooltip.enabled = ØšØ±Ø§Û ØºÙØ±ÙØ¹Ø§Ù Ú©Ø±Ø¯Ù ØªÙØ± Ú©ÙÙÚ© Ú©ÙÙØ¯
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index 895d922..052b0ad 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Certaines polices et certains symboles mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Certaines polices, icÎnes, images et certains symboles mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Le son et la vidéo (médias HTML5) sont « cliquer pour lire ».">
-<!ENTITY torbutton.circuit_display.title "Circuit Tor pour ce site">
+<!ENTITY torbutton.circuit_display.title "Circuit Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "Nouveau circuit pour ce site">
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index f293385..5b7b344 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP inconnue
torbutton.circuit_display.onion_site = Site Oignon
torbutton.circuit_display.this_browser = Ce navigateur
-torbutton.circuit_display.relay = relayer
+torbutton.circuit_display.relay = Relais
torbutton.circuit_display.tor_bridge = Pont
torbutton.circuit_display.unknown_country = Pays inconnu
+torbutton.circuit_display.guard = Garde
+torbutton.circuit_display.guard_note = Votre nÅud de [Guard] ne peut pas changer.
+torbutton.circuit_display.learn_more = En apprendre davantage
torbutton.content_sizer.margin_tooltip = Le Navigateur Tor ajoute cette marge pour rendre la largeur et la hauteur de votre fenêtre moins distinctives, et pour réduire par conséquent la possibilité que lâon vous suive à la trace en ligne.
torbutton.panel.tooltip.disabled = Cliquer pour activer Tor
torbutton.panel.tooltip.enabled = Cliquer pour désactiver Tor
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 746ead5..b1cc844 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Alcuni caratteri e simboli matematici sono disattivati.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Alcuni caratteri, icone, simboli matematici e immagini sono disattivati.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio e video (media HTML5) sono click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Circuito Tor per questo sito">
+<!ENTITY torbutton.circuit_display.title "Circuito Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "Nuovo circuito per questo sito">
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index d83c43a..37034ed 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP sconosciuto
torbutton.circuit_display.onion_site = sito Onion
torbutton.circuit_display.this_browser = Questo browser
-torbutton.circuit_display.relay = relay
+torbutton.circuit_display.relay = Ripetitore
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Paese sconosciuto
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Per saperne di più
torbutton.content_sizer.margin_tooltip = Il browser Tor aggiunge questo margine per rendere l'ampiezza e altezza della tua finestra meno distintiva, così si riduce la possibilità di che tu sia tracciato in linea.
torbutton.panel.tooltip.disabled = Fai clic per attivare Tor
torbutton.panel.tooltip.enabled = Fai clic per disattivare Tor
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 04549c0..359dcf4 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "ããã€ãã®ãã©ã³ããšæ°åŠèšå·ãç¡å¹åãããŸãã">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "ããã€ãã®ã¢ã€ã³ã³ãæ°åŠèšå·ããã³ç»åãç¡å¹åãããŸãã">
<!ENTITY torbutton.prefs.sec_click_to_play_media "ãªãŒãã£ãªãšãããª(HTML5ã¡ãã£ã¢)ã¯ã¯ãªãã¯ãããšåçãããŸãã">
-<!ENTITY torbutton.circuit_display.title "ãã®ãµã€ãçšã® Tor ãµãŒããã">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/ja/torbutton.properties b/src/chrome/locale/ja/torbutton.properties
index b8735d0..dec68bf 100644
--- a/src/chrome/locale/ja/torbutton.properties
+++ b/src/chrome/locale/ja/torbutton.properties
@@ -5,6 +5,9 @@ torbutton.circuit_display.this_browser = ãã®ãã©ãŠã¶ãŒ
torbutton.circuit_display.relay = ãªã¬ãŒ
torbutton.circuit_display.tor_bridge = ããªããž
torbutton.circuit_display.unknown_country = äžæãªåœ
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = ããã«ç¥ã
torbutton.content_sizer.margin_tooltip = Tor Browser ã¯ãŠã£ã³ããŠã®ãµã€ãºãå¹³å¡ã«ããããã«ãã®ããŒãžã³ã远å ããŸããããã«ãããããªãã®ããšããªã³ã©ã€ã³ã§è¿œè·¡ãã«ããããŸãã
torbutton.panel.tooltip.disabled = ã¯ãªãã¯ããŠTorãæå¹ã«ãã
torbutton.panel.tooltip.enabled = ã¯ãªãã¯ããŠTorãç¡å¹ã«ãã
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index f3f2093..835a7cc 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "ìŽ ì¬ìŽíž ìì ì Tor íë¡">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/ko/torbutton.properties b/src/chrome/locale/ko/torbutton.properties
index 1f1054a..7ec0238 100644
--- a/src/chrome/locale/ko/torbutton.properties
+++ b/src/chrome/locale/ko/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = ìží°ë·
torbutton.circuit_display.ip_unknown = 믞íìž IP
torbutton.circuit_display.onion_site = Onion ì¬ìŽíž
torbutton.circuit_display.this_browser = ìŽ ëžëŒì°ì
-torbutton.circuit_display.relay = ì€ê³
+torbutton.circuit_display.relay = ì€ê³ìë²
torbutton.circuit_display.tor_bridge = ëžëŠ¿ì§
torbutton.circuit_display.unknown_country = 믞íìž êµê°
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = ë ìì볎Ʞ
torbutton.content_sizer.margin_tooltip = Tor ëžëŒì°ì ë ìŽ ì¬ë°±ì ì¶ê°íì¬ ì°œì ëë¹ì ëìŽë¥Œ ìŒë°í ììŒ ìšëŒìžìì ì¬ì©ì륌 ì¶ì íë êž°ë¥ì ìœí ìíµëë€.
torbutton.panel.tooltip.disabled = Tor륌 íì±ííë €ë©Ž íŽëŠ
torbutton.panel.tooltip.enabled = Tor륌 ë¹íì±ííë €ë©Ž íŽëŠ
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index ce0e13a..7b7e6db 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Sommige lettertypen en wiskundige symbolen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sommige lettertypen, pictogrammen, wiskundige symbolen en afbeeldingen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio en video (HTML5-media) zijn klik-bij-afspelen.">
-<!ENTITY torbutton.circuit_display.title "Tor-circuit voor deze website">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/nl/torbutton.properties b/src/chrome/locale/nl/torbutton.properties
index 87595e2..ccdac33 100644
--- a/src/chrome/locale/nl/torbutton.properties
+++ b/src/chrome/locale/nl/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP-adres onbekend
torbutton.circuit_display.onion_site = Onion-site
torbutton.circuit_display.this_browser = Deze browser
-torbutton.circuit_display.relay = relay
+torbutton.circuit_display.relay = Relay
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Onbekend land
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Lees meer
torbutton.content_sizer.margin_tooltip = Tor Browser voegt deze rand toe om de afmetingen van het venster minder uit de toon te laten vallen. Dit maakt het moeilijker om u online te volgen.
torbutton.panel.tooltip.disabled = Hier klikken om Tor in te schakelen
torbutton.panel.tooltip.enabled = Hier klikken om Tor uit te schakelen
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 47e21ca..2ceab63 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Niektóre fonty i symbole sÄ
wyÅÄ
czone.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Niektóre fonty, ikony, symbole i obrazki sÄ
wyÅÄ
czone.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Obwód Tor dla tej strony">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/pl/torbutton.properties b/src/chrome/locale/pl/torbutton.properties
index 7164f69..aea4730 100644
--- a/src/chrome/locale/pl/torbutton.properties
+++ b/src/chrome/locale/pl/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP nieznany
torbutton.circuit_display.onion_site = strona Onion
torbutton.circuit_display.this_browser = Ta przeglÄ
darka
-torbutton.circuit_display.relay = przekaźnik
+torbutton.circuit_display.relay = Przekaźnik
torbutton.circuit_display.tor_bridge = Bridge
torbutton.circuit_display.unknown_country = Nieznane paÅstwo
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Dowiedz siÄ wiÄcej
torbutton.content_sizer.margin_tooltip = PrzeglÄ
darka Tor dodaje ten margines po to, aby szerokoÅÄ i wysokoÅÄ okna Twojej przeglÄ
darki byÅa mniej charakterystyczna, dziÄki temu zmniejszysz szanse Åledzenia Ciebie online.
torbutton.panel.tooltip.disabled = Kliknij tutaj, aby wÅÄ
czyÄ Tora
torbutton.panel.tooltip.enabled = Kliknij tutaj, aby wyÅÄ
czyÄ Tora
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index 2798ee0..64e87c2 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Algumas fontes e sÃmbolos matemáticos estão desativados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algumas fontes, Ãcones, sÃmbolos matemáticas e imagens estão desativadas.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Clicar para tocar ou ver áudio ou vÃdeo (mÃdia HTML5).">
-<!ENTITY torbutton.circuit_display.title "Circuito Tor para este site">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/pt-BR/torbutton.properties b/src/chrome/locale/pt-BR/torbutton.properties
index 6c61a97..df5f7fe 100644
--- a/src/chrome/locale/pt-BR/torbutton.properties
+++ b/src/chrome/locale/pt-BR/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP desconhecido
torbutton.circuit_display.onion_site = Site Onion
torbutton.circuit_display.this_browser = Este navegador
-torbutton.circuit_display.relay = retransmitir
+torbutton.circuit_display.relay = Relê
torbutton.circuit_display.tor_bridge = Ponte
torbutton.circuit_display.unknown_country = PaÃs desconhecido
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Aprenda mais
torbutton.content_sizer.margin_tooltip = O Navegador Tor inclui esta margem para que a altura e a largura da janela sejam menos distinguÃveis, o que reduz a possibilidade de que alguém rastreie a sua navegação .
torbutton.panel.tooltip.disabled = Clique para habilitar o Tor
torbutton.panel.tooltip.enabled = Clique para desabilitar o Tor
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 50063ce..7ca05b7 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "ÐекПÑПÑÑе ÑÑОÑÑÑ Ðž ЌаÑеЌаÑОÑеÑкОе ÑÐžÐŒÐ²ÐŸÐ»Ñ ÐŸÑклÑÑеМÑ.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "ÐекПÑПÑÑе ÑÑОÑÑÑ, зМаÑкО, ЌаÑеЌаÑОÑеÑкОе ÑÐžÐŒÐ²ÐŸÐ»Ñ Ðž ОзПбÑÐ°Ð¶ÐµÐœÐžÑ ÐŸÑклÑÑеМÑ.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "ÐÑЎОП О вОЎеП (HTML5 ЌеЎОа) пÑПОгÑÑваÑÑÑÑ ÑПлÑкП пПÑле клОка.">
-<!ENTITY torbutton.circuit_display.title "ЊепПÑка Tor ÐŽÐ»Ñ ÑÑПгП ÑайÑа">
+<!ENTITY torbutton.circuit_display.title "СÑ
еЌа Tor">
+<!ENTITY torbutton.circuit_display.new_circuit "ÐÐŸÐ²Ð°Ñ ÑÑ
еЌа ÐŽÐ»Ñ ÑÑПгП СайÑа">
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index 5f6f439..2194c84 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = ÐМÑеÑМеÑ
torbutton.circuit_display.ip_unknown = IP МеОзвеÑÑеМ
torbutton.circuit_display.onion_site = "ÐÑкПвÑй" ÑайÑ
torbutton.circuit_display.this_browser = ÐÑÐŸÑ Ð±ÑаÑзеÑ
-torbutton.circuit_display.relay = Ñзел
+torbutton.circuit_display.relay = РеÑÑаМÑлÑÑПÑ
torbutton.circuit_display.tor_bridge = РеÑÑаМÑлÑÑПÑ
torbutton.circuit_display.unknown_country = ÐеОзвеÑÑÐœÐ°Ñ ÑÑÑаМа
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = ÐÐ°Ñ [Guard] Ñзел Ме ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ ÐžÐ·ÐŒÐµÐœÐµÐœ.
+torbutton.circuit_display.learn_more = ÐПЎÑПбМее
torbutton.content_sizer.margin_tooltip = Tor Browser ЎПбавлÑÐµÑ ÑÑÐŸÑ ÐŸÑÑÑÑп, ÑÑÐŸÐ±Ñ ÑОÑОМа О вÑÑПÑа ПкМа бÑлО ЌеМее ÑзМаваеЌÑЌО, ÑÑП ÑÑлПжМÑÐµÑ Ð²ÐŸÐ·ÐŒÐŸÐ¶ÐœÐŸÑÑÑ ÐŸÑÑлеЎОÑÑ ÐÐ°Ñ Ð² ÑеÑО.
torbutton.panel.tooltip.disabled = ÐажЌОÑе, ÑÑÐŸÐ±Ñ Ð²ÐºÐ»ÑÑОÑÑ Tor
torbutton.panel.tooltip.enabled = ÐажЌОÑе, ÑÑÐŸÐ±Ñ ÐŸÑклÑÑОÑÑ Tor
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index aac0ea8..e61d393 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Vissa typsnitt och matte symboler Àr inaktiverade.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Vissa typsnitt, ikoner, matte symboler och bilder Àr inaktiverade.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Ljud och video (HTML5-media) Àr klicka-för-att-spel.">
-<!ENTITY torbutton.circuit_display.title "Tor-krets för den hÀr webbplatsen">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index 7f0765d..c78ff5c 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = OkÀnd IP-adress.
torbutton.circuit_display.onion_site = Onion webbplats
torbutton.circuit_display.this_browser = Denna webblÀsare
-torbutton.circuit_display.relay = relÀ
+torbutton.circuit_display.relay = Router
torbutton.circuit_display.tor_bridge = Brygga
torbutton.circuit_display.unknown_country = OkÀnt land
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = LÀs mer
torbutton.content_sizer.margin_tooltip = Tor Browser lÀgger till denna marginal för att göra bredden och höjden på ditt fönster mindre tydlig. DÀrmed minskas möjligheten att spåra dig.
torbutton.panel.tooltip.disabled = Klicka för att aktivera Tor
torbutton.panel.tooltip.enabled = Klicka för att inaktivera Tor
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index a696ebe..be0a563 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Bazı yazı tÃŒrleri ve matematik simgeleri devre dıÅı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Bazı yazı tÃŒrleri, simgeler, matematik simgeleri ve görseller devre dıÅı bırakılır.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Ses ve görÃŒntÃŒler (HTML5 ortamı) tıklayarak çalıÅtırılabilir.">
-<!ENTITY torbutton.circuit_display.title "Bu site için Tor devresi">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index ed7ee39..7b4b681 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = İnternet
torbutton.circuit_display.ip_unknown = Bilinmeyen IP
torbutton.circuit_display.onion_site = SoÄan sitesi
torbutton.circuit_display.this_browser = Bu tarayıcı
-torbutton.circuit_display.relay = aktarıcı
+torbutton.circuit_display.relay = Anahtarlama
torbutton.circuit_display.tor_bridge = KöprÌ
torbutton.circuit_display.unknown_country = Bilinmeyen Ãlke
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Ayrıntılı bilgi
torbutton.content_sizer.margin_tooltip = Tor Browser pencerenizin geniÅlik ve yÃŒksekliÄini daha az ayırt edilebilir duruma getirmek için kenar boÅlukları ekleyerek kiÅilerin sizi çevrim içi olarak izleme yeteneÄini azaltır.
torbutton.panel.tooltip.disabled = Tor yazılımını etkinleÅtirmek için tıklayın
torbutton.panel.tooltip.enabled = Tor yazılımını devre dıÅı bırakmak için tıklayın
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index d86b90c..6bbd492 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
-<!ENTITY torbutton.circuit_display.title "Äầu ná»i Tor dà nh cho trang nà y.">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index 34a800c..b7b8a51 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -2,9 +2,12 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = Äá»a chá» IP khÃŽng biết Äến
torbutton.circuit_display.onion_site = Trang củ hà nh
torbutton.circuit_display.this_browser = Trình duyá»t nà y
-torbutton.circuit_display.relay = tiếp sức
+torbutton.circuit_display.relay = Tiếp sức
torbutton.circuit_display.tor_bridge = Cầu ná»i
torbutton.circuit_display.unknown_country = Äất nưá»c khÃŽng ÄÆ°á»£c biết Äến
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = Biết thêm
torbutton.content_sizer.margin_tooltip = Trình duyá»t Tor thêm lá» nà y Äá» là m cho chiá»u rá»ng và chiá»u cao cá»§a mà n hình cá»§a bạn Ãt dá»
bá» phân biá»t hÆ¡n, và vì thế giảm khả nÄng cá»§a những ngưá»i theo dõi bạn trá»±c tuyến.
torbutton.panel.tooltip.disabled = Nhấn Äá» báºt Tor
torbutton.panel.tooltip.enabled = Nhấn Äá» tắt Tor
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index a43d991..d8ecba2 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -47,4 +47,5 @@
<!ENTITY torbutton.prefs.sec_limit_typography "äžäºåäœäžæ°åŠç¬Šå·è¢«çŠçšã">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "äžäºåäœïŒåŸæ ïŒæ°åŠç¬Šå·äžåŸç被çŠçšã">
<!ENTITY torbutton.prefs.sec_click_to_play_media "ç¹å»ææŸé³é¢æè§é¢ïŒHTML5 åªäœïŒã">
-<!ENTITY torbutton.circuit_display.title "䞺æ€ç«ç¹äœ¿çšç Tor 线路">
+<!ENTITY torbutton.circuit_display.title "Tor Circuit">
+<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
diff --git a/src/chrome/locale/zh-CN/torbutton.properties b/src/chrome/locale/zh-CN/torbutton.properties
index 398b639..b00744b 100644
--- a/src/chrome/locale/zh-CN/torbutton.properties
+++ b/src/chrome/locale/zh-CN/torbutton.properties
@@ -5,6 +5,9 @@ torbutton.circuit_display.this_browser = æ¬æµè§åš
torbutton.circuit_display.relay = äžç»§
torbutton.circuit_display.tor_bridge = çœæ¡¥
torbutton.circuit_display.unknown_country = æªç¥åœå®¶
+torbutton.circuit_display.guard = Guard
+torbutton.circuit_display.guard_note = Your [Guard] node may not change.
+torbutton.circuit_display.learn_more = 诊ç»äºè§£
torbutton.content_sizer.margin_tooltip = Tor æµè§åšæ·»å äºäžäºèŸ¹æ¡ïŒä»¥éäœçªå£å€§å°çç¬ç¹æ§ïŒä»€åšçº¿è·èžªçæ§ååŸæŽå å°éŸã
torbutton.panel.tooltip.disabled = ç¹å»å¯çš Tor
torbutton.panel.tooltip.enabled = ç¹å»çŠçš Tor
1
0

[torbutton/master] Bug 26235: Hide new unusable items from help menu (ESR60)
by gk@torproject.org 30 May '18
by gk@torproject.org 30 May '18
30 May '18
commit 66048f2ad3c2708aec11d7414ec189e868c0d487
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Tue May 29 16:34:13 2018 -0400
Bug 26235: Hide new unusable items from help menu (ESR60)
---
src/chrome/content/menu-overlay.xul | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/chrome/content/menu-overlay.xul b/src/chrome/content/menu-overlay.xul
index f6c6fbd..1e812cc 100644
--- a/src/chrome/content/menu-overlay.xul
+++ b/src/chrome/content/menu-overlay.xul
@@ -14,6 +14,8 @@
<menuitem id="menu_HelpPopup_reportPhishingtoolmenu" removeelement="true"/>
<menuitem id="menu_HelpPopup_reportPhishingErrortoolmenu" removeelement="true"/>
<!-- dummy elements to avoid 'getElementById' errors -->
+ <box id="feedbackPage"/>
+ <box id="helpSafeMode"/>
<box id="menu_HelpPopup_reportPhishingtoolmenu"/>
<box id="menu_HelpPopup_reportPhishingErrortoolmenu"/>
<!-- Add Tor Browser manual link -->
1
0

29 May '18
commit b24500f6880e2c461050e248c0f7e587b5201d51
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Wed Feb 14 13:31:29 2018 +0100
Bug 16472: update binutils to 2.26.1
---
keyring/binutils.gpg | Bin 25772 -> 1169 bytes
projects/binutils/64bit-fixups.patch | 31 +-
projects/binutils/binutils-224-gold.patch | 98 --
projects/binutils/build | 10 +-
projects/binutils/config | 11 +-
projects/binutils/enable-reloc-section-ld.patch | 83 +-
projects/binutils/fix-warning-bfd.patch | 186 ----
.../binutils/fix-windows-reproducibility.patch | 1034 ++++++++++++++++++++
projects/binutils/peXXigen.patch | 43 +-
projects/mingw-w64/build | 2 +-
projects/nsis/build | 9 +-
projects/nsis/config | 1 +
projects/nsis/no-insert-timestamp.patch | 27 +
projects/openssl/config | 2 +-
projects/selfrando/config | 2 +-
projects/zlib/build | 4 +-
rbm.conf | 2 +-
17 files changed, 1174 insertions(+), 371 deletions(-)
diff --git a/keyring/binutils.gpg b/keyring/binutils.gpg
index f24bb01..2de205d 100644
Binary files a/keyring/binutils.gpg and b/keyring/binutils.gpg differ
diff --git a/projects/binutils/64bit-fixups.patch b/projects/binutils/64bit-fixups.patch
index 33c0297..7dc1294 100644
--- a/projects/binutils/64bit-fixups.patch
+++ b/projects/binutils/64bit-fixups.patch
@@ -1,14 +1,19 @@
-From f3ba95e14437f10de8b8f296930ff2a8495d18c6 Mon Sep 17 00:00:00 2001
+From 05164a1162d5f6f696d7f7c4b1bc61ef06d1c288 Mon Sep 17 00:00:00 2001
From: Georg Koppen <gk(a)torproject.org>
Date: Tue, 12 Sep 2017 07:21:16 +0000
Subject: [PATCH] 64bit fixups
+---
+ ld/emultempl/pep.em | 4 ++--
+ ld/pep-dll.c | 1 +
+ ld/pep-dll.h | 1 +
+ 3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
-index b566903b14..27006bdf79 100644
+index fccbd63..f7c0a57 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
-@@ -730,7 +730,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
+@@ -742,7 +742,7 @@ gld${EMULATION_NAME}_handle_option (int optc)
pep_dll_exclude_all_symbols = 1;
break;
case OPTION_ENABLE_RELOC_SECTION:
@@ -17,17 +22,17 @@ index b566903b14..27006bdf79 100644
break;
case OPTION_EXCLUDE_LIBS:
pep_dll_add_excludes (optarg, EXCLUDELIBS);
-@@ -1623,7 +1623,7 @@ gld_${EMULATION_NAME}_finish (void)
-
+@@ -1862,7 +1862,7 @@ gld_${EMULATION_NAME}_finish (void)
#ifdef DLL_SUPPORT
- if (link_info.shared
-- || (!link_info.relocatable && pe_dll_enable_reloc_section)
-+ || (!link_info.relocatable && pep_dll_enable_reloc_section)
- || (!link_info.relocatable && pep_def_file->num_exports != 0))
+ if (bfd_link_pic (&link_info)
+ || (!bfd_link_relocatable (&link_info)
+- && pe_dll_enable_reloc_section)
++ && pep_dll_enable_reloc_section)
+ || (!bfd_link_relocatable (&link_info)
+ && pep_def_file->num_exports != 0))
{
- pep_dll_fill_sections (link_info.output_bfd, &link_info);
diff --git a/ld/pep-dll.c b/ld/pep-dll.c
-index 0e5e8b1523..b5f99b90e0 100644
+index b8c017f..5ad5733 100644
--- a/ld/pep-dll.c
+++ b/ld/pep-dll.c
@@ -31,6 +31,7 @@
@@ -39,7 +44,7 @@ index 0e5e8b1523..b5f99b90e0 100644
#define pe_dll_stdcall_aliases pep_dll_stdcall_aliases
#define pe_dll_warn_dup_exports pep_dll_warn_dup_exports
diff --git a/ld/pep-dll.h b/ld/pep-dll.h
-index 1e7e3d65d4..c31e69cc8e 100644
+index 0a27c1f..95d9c15 100644
--- a/ld/pep-dll.h
+++ b/ld/pep-dll.h
@@ -31,6 +31,7 @@ extern def_file * pep_def_file;
@@ -51,5 +56,5 @@ index 1e7e3d65d4..c31e69cc8e 100644
extern int pep_dll_stdcall_aliases;
extern int pep_dll_warn_dup_exports;
--
-2.14.1
+2.1.4
diff --git a/projects/binutils/binutils-224-gold.patch b/projects/binutils/binutils-224-gold.patch
deleted file mode 100644
index a45e49c..0000000
--- a/projects/binutils/binutils-224-gold.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From f984741df04cd68bb116073fdfa9405808810ab4 Mon Sep 17 00:00:00 2001
-From: Cary Coutant <ccoutant(a)google.com>
-Date: Wed, 5 Feb 2014 22:59:02 -0800
-Subject: [PATCH] Fix issues with gold undefined symbol diagnostics.
-
-PR binutils/15435 complains that gold issues a visibility error for an
-weak undefined symbol with hidden visibility. The message should be
-suppressed if the symbol is a weak undef.
-
-An earlier patch to add an extra note about key functions when a class's
-vtable symbol is undefined missed a case where the reference to the
-vtable came from a shared library. This patch moves the check to a
-lower-level routine that catches both cases.
-
-gold/
-
-2014-02-05 Cary Coutant <ccoutant(a)google.com>
-
- * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
- check to here.
- * target-reloc.h (is_strong_undefined): New function.
- (relocate_section): Move undef vtable symbol check from here.
- Check for is_strong_undefined.
-
-diff --git a/gold/ChangeLog b/gold/ChangeLog
-index dcf7ed41f8..dd7ef72980 100644
---- a/gold/ChangeLog
-+++ b/gold/ChangeLog
-@@ -1,3 +1,14 @@
-+2014-02-05 Cary Coutant <ccoutant(a)google.com>
-+
-+ Fix issues with gold undefined symbol diagnostics.
-+
-+ PR binutils/15435
-+ * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
-+ check to here.
-+ * target-reloc.h (is_strong_undefined): New function.
-+ (relocate_section): Move undef vtable symbol check from here.
-+ Check for is_strong_undefined.
-+
- 2013-11-22 Cary Coutant <ccoutant(a)google.com>
-
- * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
-diff --git a/gold/errors.cc b/gold/errors.cc
-index b79764bd1d..98db0fdd86 100644
---- a/gold/errors.cc
-+++ b/gold/errors.cc
-@@ -193,6 +193,11 @@ Errors::undefined_symbol(const Symbol* sym, const std::string& location)
- fprintf(stderr,
- _("%s: %s: undefined reference to '%s', version '%s'\n"),
- location.c_str(), zmsg, sym->demangled_name().c_str(), version);
-+
-+ if (sym->is_cxx_vtable())
-+ gold_info(_("%s: the vtable symbol may be undefined because "
-+ "the class is missing its key function"),
-+ program_name);
- }
-
- // Issue a debugging message.
-diff --git a/gold/target-reloc.h b/gold/target-reloc.h
-index b544c78f37..d609bcbaa8 100644
---- a/gold/target-reloc.h
-+++ b/gold/target-reloc.h
-@@ -144,6 +144,12 @@ class Default_comdat_behavior
- }
- };
-
-+inline bool
-+is_strong_undefined(const Symbol* sym)
-+{
-+ return sym->is_undefined() && sym->binding() != elfcpp::STB_WEAK;
-+}
-+
- // Give an error for a symbol with non-default visibility which is not
- // defined locally.
-
-@@ -411,16 +417,10 @@ relocate_section(
- }
-
- if (issue_undefined_symbol_error(sym))
-- {
-- gold_undefined_symbol_at_location(sym, relinfo, i, offset);
-- if (sym->is_cxx_vtable())
-- gold_info(_("%s: the vtable symbol may be undefined because "
-- "the class is missing its key function"),
-- program_name);
-- }
-+ gold_undefined_symbol_at_location(sym, relinfo, i, offset);
- else if (sym != NULL
- && sym->visibility() != elfcpp::STV_DEFAULT
-- && (sym->is_undefined() || sym->is_from_dynobj()))
-+ && (is_strong_undefined(sym) || sym->is_from_dynobj()))
- visibility_error(sym);
-
- if (sym != NULL && sym->has_warning())
---
-2.11.0
-
diff --git a/projects/binutils/build b/projects/binutils/build
index ee6db1a..0d1c062 100644
--- a/projects/binutils/build
+++ b/projects/binutils/build
@@ -25,17 +25,13 @@ cd [% project %]-[% c("version") %]
patch -p1 < ../peXXigen.patch
# Needed for the hardening...
patch -p1 < ../enable-reloc-section-ld.patch
- # fix "right-hand operand of comma expression has no effect" warning
- patch -p1 < ../fix-warning-bfd.patch
+ # fix build reproducibility of Windows builds by reverting commit 13e570f80c.
+ # See bug 16472.
+ patch -p1 < ../fix-windows-reproducibility.patch
[% END -%]
[% IF c('var/windows-x86_64') -%]
patch -p1 < ../64bit-fixups.patch
[% END -%]
-[% IF c("var/linux") && ! c("var/release") -%]
- # We need to work around a gold linker bug in 2.24 to get selfrando working,
- # see bug 20683.
- patch -p1 < $rootdir/binutils-224-gold.patch
-[% END -%]
./configure --prefix=$distdir [% c('var/configure_opt') %]
make -j[% c("buildconf/num_procs") %]
make install
diff --git a/projects/binutils/config b/projects/binutils/config
index 5c35588..1f992a2 100644
--- a/projects/binutils/config
+++ b/projects/binutils/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 2.24
+version: 2.26.1
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
configure_opt: '--disable-multilib --enable-gold --enable-deterministic-archives --enable-plugins'
@@ -10,6 +10,9 @@ targets:
windows:
var:
configure_opt: '--target=[% c("arch") %]-w64-mingw32 --disable-multilib --enable-deterministic-archives'
+ arch_deps:
+ # texinfo required for fix-windows-reproducibility.patch
+ - texinfo
input_files:
- URL: https://ftp.gnu.org/gnu/binutils/binutils-[% c("version") %].tar.bz2
@@ -19,11 +22,9 @@ input_files:
- project: container-image
- filename: enable-reloc-section-ld.patch
enable: '[% c("var/windows") %]'
- - filename: fix-warning-bfd.patch
- enable: '[% c("var/windows") %]'
- filename: 64bit-fixups.patch
enable: '[% c("var/windows-x86_64") %]'
- filename: peXXigen.patch
enable: '[% c("var/windows") %]'
- - filename: binutils-224-gold.patch
- enable: '[% c("var/linux") %]'
+ - filename: fix-windows-reproducibility.patch
+ enable: '[% c("var/windows") %]'
diff --git a/projects/binutils/enable-reloc-section-ld.patch b/projects/binutils/enable-reloc-section-ld.patch
index f393f51..a6600c3 100644
--- a/projects/binutils/enable-reloc-section-ld.patch
+++ b/projects/binutils/enable-reloc-section-ld.patch
@@ -1,30 +1,29 @@
-From 093b08a9e7af23a258306b710ebc4556d12f94f7 Mon Sep 17 00:00:00 2001
+From fba503a78c50d6134943245d55e820f53e8f19cd Mon Sep 17 00:00:00 2001
From: Erinn Clark <erinn(a)torproject.org>
Date: Fri, 8 Aug 2014 14:23:44 -0400
Subject: [PATCH] add relocation section so Windows bundles can have ASLR
Patch by skruffy.
-
---
- ld/emultempl/pe.em | 6 +++++
- ld/emultempl/pep.em | 8 ++++++-
+ ld/emultempl/pe.em | 7 ++++++
+ ld/emultempl/pep.em | 11 ++++++++--
ld/pe-dll.c | 63 ++++++++++++++++++++++++++++++-----------------------
ld/pe-dll.h | 1 +
- 4 files changed, 50 insertions(+), 28 deletions(-)
+ 4 files changed, 53 insertions(+), 29 deletions(-)
diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em
-index 5d6da9e..14c07f7 100644
+index 339b7c5..3958b81 100644
--- a/ld/emultempl/pe.em
+++ b/ld/emultempl/pe.em
-@@ -268,6 +268,7 @@ fragment <<EOF
- #define OPTION_TERMINAL_SERVER_AWARE (OPTION_WDM_DRIVER + 1)
- /* Determinism. */
+@@ -272,6 +272,7 @@ fragment <<EOF
#define OPTION_INSERT_TIMESTAMP (OPTION_TERMINAL_SERVER_AWARE + 1)
-+#define OPTION_ENABLE_RELOC_SECTION (OPTION_INSERT_TIMESTAMP + 1)
+ #define OPTION_NO_INSERT_TIMESTAMP (OPTION_INSERT_TIMESTAMP + 1)
+ #define OPTION_BUILD_ID (OPTION_NO_INSERT_TIMESTAMP + 1)
++#define OPTION_ENABLE_RELOC_SECTION (OPTION_BUILD_ID + 1)
static void
gld${EMULATION_NAME}_add_options
-@@ -310,6 +311,7 @@ gld${EMULATION_NAME}_add_options
+@@ -315,6 +316,7 @@ gld${EMULATION_NAME}_add_options
{"export-all-symbols", no_argument, NULL, OPTION_EXPORT_ALL},
{"exclude-symbols", required_argument, NULL, OPTION_EXCLUDE_SYMBOLS},
{"exclude-all-symbols", no_argument, NULL, OPTION_EXCLUDE_ALL_SYMBOLS},
@@ -32,7 +31,7 @@ index 5d6da9e..14c07f7 100644
{"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
{"exclude-modules-for-implib", required_argument, NULL, OPTION_EXCLUDE_MODULES_FOR_IMPLIB},
{"kill-at", no_argument, NULL, OPTION_KILL_ATS},
-@@ -773,6 +775,9 @@ gld${EMULATION_NAME}_handle_option (int optc)
+@@ -782,6 +784,9 @@ gld${EMULATION_NAME}_handle_option (int optc)
case OPTION_EXCLUDE_ALL_SYMBOLS:
pe_dll_exclude_all_symbols = 1;
break;
@@ -42,29 +41,30 @@ index 5d6da9e..14c07f7 100644
case OPTION_EXCLUDE_LIBS:
pe_dll_add_excludes (optarg, EXCLUDELIBS);
break;
-@@ -1839,6 +1844,7 @@ gld_${EMULATION_NAME}_finish (void)
- if (link_info.shared
+@@ -2076,6 +2081,8 @@ gld_${EMULATION_NAME}_finish (void)
#if !defined(TARGET_IS_shpe)
- || (!link_info.relocatable && pe_def_file->num_exports != 0)
-+ || (!link_info.relocatable && pe_dll_enable_reloc_section)
+ || (!bfd_link_relocatable (&link_info)
+ && pe_def_file->num_exports != 0)
++ || (!bfd_link_relocatable (&link_info)
++ && pe_dll_enable_reloc_section)
#endif
)
{
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
-index b738800..b566903 100644
+index c253d2f..fccbd63 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
-@@ -242,7 +242,8 @@ enum options
- OPTION_NO_BIND,
- OPTION_WDM_DRIVER,
+@@ -246,7 +246,8 @@ enum options
OPTION_INSERT_TIMESTAMP,
-- OPTION_TERMINAL_SERVER_AWARE
-+ OPTION_TERMINAL_SERVER_AWARE,
+ OPTION_NO_INSERT_TIMESTAMP,
+ OPTION_TERMINAL_SERVER_AWARE,
+- OPTION_BUILD_ID
++ OPTION_BUILD_ID,
+ OPTION_ENABLE_RELOC_SECTION
};
static void
-@@ -284,6 +285,7 @@ gld${EMULATION_NAME}_add_options
+@@ -288,6 +289,7 @@ gld${EMULATION_NAME}_add_options
{"export-all-symbols", no_argument, NULL, OPTION_EXPORT_ALL},
{"exclude-symbols", required_argument, NULL, OPTION_EXCLUDE_SYMBOLS},
{"exclude-all-symbols", no_argument, NULL, OPTION_EXCLUDE_ALL_SYMBOLS},
@@ -72,7 +72,7 @@ index b738800..b566903 100644
{"exclude-libs", required_argument, NULL, OPTION_EXCLUDE_LIBS},
{"exclude-modules-for-implib", required_argument, NULL, OPTION_EXCLUDE_MODULES_FOR_IMPLIB},
{"kill-at", no_argument, NULL, OPTION_KILL_ATS},
-@@ -727,6 +729,9 @@ gld${EMULATION_NAME}_handle_option (int optc)
+@@ -739,6 +741,9 @@ gld${EMULATION_NAME}_handle_option (int optc)
case OPTION_EXCLUDE_ALL_SYMBOLS:
pep_dll_exclude_all_symbols = 1;
break;
@@ -82,19 +82,22 @@ index b738800..b566903 100644
case OPTION_EXCLUDE_LIBS:
pep_dll_add_excludes (optarg, EXCLUDELIBS);
break;
-@@ -1618,6 +1623,7 @@ gld_${EMULATION_NAME}_finish (void)
-
+@@ -1857,7 +1862,9 @@ gld_${EMULATION_NAME}_finish (void)
#ifdef DLL_SUPPORT
- if (link_info.shared
-+ || (!link_info.relocatable && pe_dll_enable_reloc_section)
- || (!link_info.relocatable && pep_def_file->num_exports != 0))
+ if (bfd_link_pic (&link_info)
+ || (!bfd_link_relocatable (&link_info)
+- && pep_def_file->num_exports != 0))
++ && pe_dll_enable_reloc_section)
++ || (!bfd_link_relocatable (&link_info)
++ && pep_def_file->num_exports != 0))
{
pep_dll_fill_sections (link_info.output_bfd, &link_info);
+ if (command_line.out_implib_filename)
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
-index e9e133b..4230dc3 100644
+index c398f23..3797f1a 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
-@@ -152,6 +152,7 @@ def_file * pe_def_file = 0;
+@@ -151,6 +151,7 @@ def_file * pe_def_file = 0;
int pe_dll_export_everything = 0;
int pe_dll_exclude_all_symbols = 0;
int pe_dll_do_default_excludes = 1;
@@ -102,10 +105,10 @@ index e9e133b..4230dc3 100644
int pe_dll_kill_ats = 0;
int pe_dll_stdcall_aliases = 0;
int pe_dll_warn_dup_exports = 0;
-@@ -3370,8 +3371,15 @@ pe_dll_build_sections (bfd *abfd, struct bfd_link_info *info)
+@@ -3430,8 +3431,15 @@ pe_dll_build_sections (bfd *abfd, struct bfd_link_info *info)
process_def_file_and_drectve (abfd, info);
- if (pe_def_file->num_exports == 0 && !info->shared)
+ if (pe_def_file->num_exports == 0 && !bfd_link_pic (info))
- return;
-
+ {
@@ -120,7 +123,7 @@ index e9e133b..4230dc3 100644
generate_edata (abfd, info);
build_filler_bfd (1);
pe_output_file_set_long_section_names (filler_bfd);
-@@ -3386,13 +3394,9 @@ pe_exe_build_sections (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
+@@ -3446,13 +3454,9 @@ pe_exe_build_sections (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
pe_output_file_set_long_section_names (filler_bfd);
}
@@ -136,13 +139,13 @@ index e9e133b..4230dc3 100644
generate_reloc (abfd, info);
if (reloc_sz > 0)
{
-@@ -3409,38 +3413,43 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_link_info *info)
+@@ -3469,38 +3473,43 @@ pe_dll_fill_sections (bfd *abfd, struct bfd_link_info *info)
lang_do_assignments (lang_final_phase_enum);
}
- fill_edata (abfd, info);
-
-- if (info->shared && !info->pie)
+- if (bfd_link_dll (info))
- pe_data (abfd)->dll = 1;
-
- edata_s->contents = edata_d;
@@ -174,7 +177,7 @@ index e9e133b..4230dc3 100644
- /* Resize the sections. */
- lang_reset_memory_regions ();
- lang_size_sections (NULL, TRUE);
-+ if (info->shared && !info->pie)
++ if (bfd_link_pic (info) && !bfd_link_pie (info))
+ pe_data (abfd)->dll = 1;
- /* Redo special stuff. */
@@ -200,10 +203,10 @@ index e9e133b..4230dc3 100644
bfd_boolean
diff --git a/ld/pe-dll.h b/ld/pe-dll.h
-index 4697390..2bf71d9 100644
+index 48d169b..05ff72b 100644
--- a/ld/pe-dll.h
+++ b/ld/pe-dll.h
-@@ -31,6 +31,7 @@ extern def_file *pe_def_file;
+@@ -30,6 +30,7 @@ extern def_file *pe_def_file;
extern int pe_dll_export_everything;
extern int pe_dll_exclude_all_symbols;
extern int pe_dll_do_default_excludes;
@@ -212,5 +215,5 @@ index 4697390..2bf71d9 100644
extern int pe_dll_stdcall_aliases;
extern int pe_dll_warn_dup_exports;
--
-2.0.1
+2.1.4
diff --git a/projects/binutils/fix-warning-bfd.patch b/projects/binutils/fix-warning-bfd.patch
deleted file mode 100644
index fa04405..0000000
--- a/projects/binutils/fix-warning-bfd.patch
+++ /dev/null
@@ -1,186 +0,0 @@
-From 27b829ee701e29804216b3803fbaeb629be27491 Mon Sep 17 00:00:00 2001
-From: Nick Clifton <nickc(a)redhat.com>
-Date: Wed, 29 Jan 2014 13:46:39 +0000
-Subject: [PATCH] Following up on Tom's suggestion I am checking in a patch to
- replace the various bfd_xxx_set macros with static inline functions, so that
- we can avoid compile time warnings about comma expressions with unused
- values.
-
- * bfd-in.h (bfd_set_section_vma): Delete.
- (bfd_set_section_alignment): Delete.
- (bfd_set_section_userdata): Delete.
- (bfd_set_cacheable): Delete.
- * bfd.c (bfd_set_cacheable): New static inline function.
- * section.c (bfd_set_section_userdata): Likewise.
- (bfd_set_section_vma): Likewise.
- (bfd_set_section_alignment): Likewise.
- * bfd-in2.h: Regenerate.
----
- bfd/bfd-in.h | 5 -----
- bfd/bfd-in2.h | 41 +++++++++++++++++++++++++++++++++++------
- bfd/bfd.c | 8 ++++++++
- bfd/section.c | 26 ++++++++++++++++++++++++++
- 5 files changed, 81 insertions(+), 11 deletions(-)
-
-diff --git a/bfd/bfd-in.h b/bfd/bfd-in.h
-index 3afd71b..c7c5a7d 100644
---- a/bfd/bfd-in.h
-+++ b/bfd/bfd-in.h
-@@ -292,9 +292,6 @@ typedef struct bfd_section *sec_ptr;
-
- #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
-
--#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
--#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
--#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
- /* Find the address one past the end of SEC. */
- #define bfd_get_section_limit(bfd, sec) \
- (((bfd)->direction != write_direction && (sec)->rawsize != 0 \
-@@ -517,8 +514,6 @@ extern void warn_deprecated (const char *, const char *, int, const char *);
-
- #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
--#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
--
- extern bfd_boolean bfd_cache_close
- (bfd *abfd);
- /* NB: This declaration should match the autogenerated one in libbfd.h. */
-diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
-index 71996db..b5aeb40 100644
---- a/bfd/bfd-in2.h
-+++ b/bfd/bfd-in2.h
-@@ -299,9 +299,6 @@ typedef struct bfd_section *sec_ptr;
-
- #define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
-
--#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
--#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
--#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
- /* Find the address one past the end of SEC. */
- #define bfd_get_section_limit(bfd, sec) \
- (((bfd)->direction != write_direction && (sec)->rawsize != 0 \
-@@ -524,8 +521,6 @@ extern void warn_deprecated (const char *, const char *, int, const char *);
-
- #define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
-
--#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
--
- extern bfd_boolean bfd_cache_close
- (bfd *abfd);
- /* NB: This declaration should match the autogenerated one in libbfd.h. */
-@@ -1029,7 +1024,7 @@ bfd *bfd_openr (const char *filename, const char *target);
-
- bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-
--bfd *bfd_openstreamr (const char *, const char *, void *);
-+bfd *bfd_openstreamr (const char * filename, const char * target, void * stream);
-
- bfd *bfd_openr_iovec (const char *filename, const char *target,
- void *(*open_func) (struct bfd *nbfd,
-@@ -1596,6 +1591,32 @@ struct relax_table {
- int size;
- };
-
-+/* Note: the following are provided as inline functions rather than macros
-+ because not all callers use the return value. A macro implementation
-+ would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
-+ compilers will complain about comma expressions that have no effect. */
-+static inline bfd_boolean
-+bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
-+{
-+ ptr->userdata = val;
-+ return TRUE;
-+}
-+
-+static inline bfd_boolean
-+bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
-+{
-+ ptr->vma = ptr->lma = val;
-+ ptr->user_set_vma = TRUE;
-+ return TRUE;
-+}
-+
-+static inline bfd_boolean
-+bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
-+{
-+ ptr->alignment_power = val;
-+ return TRUE;
-+}
-+
- /* These sections are global, and are managed by BFD. The application
- and target back end are not permitted to change the values in
- these sections. */
-@@ -6415,6 +6436,14 @@ struct bfd
- unsigned int selective_search : 1;
- };
-
-+/* See note beside bfd_set_section_userdata. */
-+static inline bfd_boolean
-+bfd_set_cacheable (bfd * abfd, bfd_boolean val)
-+{
-+ abfd->cacheable = val;
-+ return TRUE;
-+}
-+
- typedef enum bfd_error
- {
- bfd_error_no_error = 0,
-diff --git a/bfd/bfd.c b/bfd/bfd.c
-index 8d0580c..2d174f3 100644
---- a/bfd/bfd.c
-+++ b/bfd/bfd.c
-@@ -311,6 +311,14 @@ CODE_FRAGMENT
- . unsigned int selective_search : 1;
- .};
- .
-+.{* See note beside bfd_set_section_userdata. *}
-+.static inline bfd_boolean
-+.bfd_set_cacheable (bfd * abfd, bfd_boolean val)
-+.{
-+. abfd->cacheable = val;
-+. return TRUE;
-+.}
-+.
- */
-
- #include "sysdep.h"
-diff --git a/bfd/section.c b/bfd/section.c
-index fb19d8c..a661228 100644
---- a/bfd/section.c
-+++ b/bfd/section.c
-@@ -542,6 +542,32 @@ CODE_FRAGMENT
- . int size;
- .};
- .
-+.{* Note: the following are provided as inline functions rather than macros
-+. because not all callers use the return value. A macro implementation
-+. would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
-+. compilers will complain about comma expressions that have no effect. *}
-+.static inline bfd_boolean
-+.bfd_set_section_userdata (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, void * val)
-+.{
-+. ptr->userdata = val;
-+. return TRUE;
-+.}
-+.
-+.static inline bfd_boolean
-+.bfd_set_section_vma (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, bfd_vma val)
-+.{
-+. ptr->vma = ptr->lma = val;
-+. ptr->user_set_vma = TRUE;
-+. return TRUE;
-+.}
-+.
-+.static inline bfd_boolean
-+.bfd_set_section_alignment (bfd * abfd ATTRIBUTE_UNUSED, asection * ptr, unsigned int val)
-+.{
-+. ptr->alignment_power = val;
-+. return TRUE;
-+.}
-+.
- .{* These sections are global, and are managed by BFD. The application
- . and target back end are not permitted to change the values in
- . these sections. *}
---
-2.1.4
-
diff --git a/projects/binutils/fix-windows-reproducibility.patch b/projects/binutils/fix-windows-reproducibility.patch
new file mode 100644
index 0000000..1fc5987
--- /dev/null
+++ b/projects/binutils/fix-windows-reproducibility.patch
@@ -0,0 +1,1034 @@
+From c6df45304e92aa2d7e9f2d8311ae5a0b1543daa8 Mon Sep 17 00:00:00 2001
+From: Nicolas Vigier <boklm(a)torproject.org>
+Date: Wed, 16 May 2018 11:07:52 +0200
+Subject: [PATCH] Revert "Fix LTO vs. COFF archives"
+
+This reverts commit 13e570f80cbfb299a8858ce6830e91a6cb40ab7b.
+---
+ bfd/aoutx.h | 2 -
+ bfd/cofflink.c | 116 +++++++++++++++---
+ bfd/ecoff.c | 164 +++++++++++++++++++++++--
+ bfd/elflink.c | 53 ++++++--
+ bfd/libbfd-in.h | 4 +-
+ bfd/libbfd.h | 4 +-
+ bfd/linker.c | 366 ++++++++++++++++++++++++++++++++++++++++----------------
+ bfd/pdp11.c | 4 +-
+ bfd/xcofflink.c | 4 +-
+ 9 files changed, 560 insertions(+), 157 deletions(-)
+
+diff --git a/bfd/aoutx.h b/bfd/aoutx.h
+index 9385a98..6ca9c58 100644
+--- a/bfd/aoutx.h
++++ b/bfd/aoutx.h
+@@ -3405,8 +3405,6 @@ aout_link_check_ar_symbols (bfd *abfd,
+ static bfd_boolean
+ aout_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
+- const char *name ATTRIBUTE_UNUSED,
+ bfd_boolean *pneeded)
+ {
+ bfd *oldbfd;
+diff --git a/bfd/cofflink.c b/bfd/cofflink.c
+index 2782795..3a82640 100644
+--- a/bfd/cofflink.c
++++ b/bfd/cofflink.c
+@@ -29,11 +29,9 @@
+ #include "libcoff.h"
+ #include "safe-ctype.h"
+
+-static bfd_boolean coff_link_add_object_symbols (bfd *, struct bfd_link_info *);
+-static bfd_boolean coff_link_check_archive_element
+- (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *);
+-static bfd_boolean coff_link_add_symbols (bfd *, struct bfd_link_info *);
++static bfd_boolean coff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info);
++static bfd_boolean coff_link_check_archive_element (bfd *abfd, struct bfd_link_info *info, bfd_boolean *pneeded);
++static bfd_boolean coff_link_add_symbols (bfd *abfd, struct bfd_link_info *info);
+
+ /* Return TRUE if SYM is a weak, external symbol. */
+ #define IS_WEAK_EXTERNAL(abfd, sym) \
+@@ -192,6 +190,74 @@ coff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
+ return TRUE;
+ }
+
++/* Look through the symbols to see if this object file should be
++ included in the link. */
++
++static bfd_boolean
++coff_link_check_ar_symbols (bfd *abfd,
++ struct bfd_link_info *info,
++ bfd_boolean *pneeded,
++ bfd **subsbfd)
++{
++ bfd_size_type symesz;
++ bfd_byte *esym;
++ bfd_byte *esym_end;
++
++ *pneeded = FALSE;
++
++ symesz = bfd_coff_symesz (abfd);
++ esym = (bfd_byte *) obj_coff_external_syms (abfd);
++ esym_end = esym + obj_raw_syment_count (abfd) * symesz;
++ while (esym < esym_end)
++ {
++ struct internal_syment sym;
++ enum coff_symbol_classification classification;
++
++ bfd_coff_swap_sym_in (abfd, esym, &sym);
++
++ classification = bfd_coff_classify_symbol (abfd, &sym);
++ if (classification == COFF_SYMBOL_GLOBAL
++ || classification == COFF_SYMBOL_COMMON)
++ {
++ const char *name;
++ char buf[SYMNMLEN + 1];
++ struct bfd_link_hash_entry *h;
++
++ /* This symbol is externally visible, and is defined by this
++ object file. */
++ name = _bfd_coff_internal_syment_name (abfd, &sym, buf);
++ if (name == NULL)
++ return FALSE;
++ h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
++
++ /* Auto import. */
++ if (!h
++ && info->pei386_auto_import
++ && CONST_STRNEQ (name, "__imp_"))
++ h = bfd_link_hash_lookup (info->hash, name + 6, FALSE, FALSE, TRUE);
++
++ /* We are only interested in symbols that are currently
++ undefined. If a symbol is currently known to be common,
++ COFF linkers do not bring in an object file which defines
++ it. */
++ if (h != (struct bfd_link_hash_entry *) NULL
++ && h->type == bfd_link_hash_undefined)
++ {
++ if (!(*info->callbacks
++ ->add_archive_element) (info, abfd, name, subsbfd))
++ return FALSE;
++ *pneeded = TRUE;
++ return TRUE;
++ }
++ }
++
++ esym += (sym.n_numaux + 1) * symesz;
++ }
++
++ /* We do not need this object file. */
++ return TRUE;
++}
++
+ /* Check a single archive element to see if we need to include it in
+ the link. *PNEEDED is set according to whether this element is
+ needed in the link or not. This is called via
+@@ -200,23 +266,41 @@ coff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
+ static bfd_boolean
+ coff_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h,
+- const char *name,
+ bfd_boolean *pneeded)
+ {
+- *pneeded = FALSE;
++ bfd *oldbfd;
++ bfd_boolean needed;
+
+- /* We are only interested in symbols that are currently undefined.
+- If a symbol is currently known to be common, COFF linkers do not
+- bring in an object file which defines it. */
+- if (h->type != bfd_link_hash_undefined)
+- return TRUE;
++ if (!_bfd_coff_get_external_symbols (abfd))
++ return FALSE;
+
+- if (!(*info->callbacks->add_archive_element) (info, abfd, name, &abfd))
++ oldbfd = abfd;
++ if (!coff_link_check_ar_symbols (abfd, info, pneeded, &abfd))
+ return FALSE;
+- *pneeded = TRUE;
+
+- return coff_link_add_object_symbols (abfd, info);
++ needed = *pneeded;
++ if (needed)
++ {
++ /* Potentially, the add_archive_element hook may have set a
++ substitute BFD for us. */
++ if (abfd != oldbfd)
++ {
++ if (!info->keep_memory
++ && !_bfd_coff_free_symbols (oldbfd))
++ return FALSE;
++ if (!_bfd_coff_get_external_symbols (abfd))
++ return FALSE;
++ }
++ if (!coff_link_add_symbols (abfd, info))
++ return FALSE;
++ }
++
++ if (!info->keep_memory || !needed)
++ {
++ if (!_bfd_coff_free_symbols (abfd))
++ return FALSE;
++ }
++ return TRUE;
+ }
+
+ /* Add all the symbols from an object file to the hash table. */
+diff --git a/bfd/ecoff.c b/bfd/ecoff.c
+index 01f51e6..2c915f0 100644
+--- a/bfd/ecoff.c
++++ b/bfd/ecoff.c
+@@ -3500,29 +3500,171 @@ ecoff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
+ return FALSE;
+ }
+
++/* Factored out from ecoff_link_check_archive_element. */
++
++static bfd_boolean
++read_ext_syms_and_strs (HDRR **symhdr, bfd_size_type *external_ext_size,
++ bfd_size_type *esize, void **external_ext, char **ssext, bfd *abfd,
++ const struct ecoff_backend_data * const backend)
++{
++ if (! ecoff_slurp_symbolic_header (abfd))
++ return FALSE;
++
++ /* If there are no symbols, we don't want it. */
++ if (bfd_get_symcount (abfd) == 0)
++ return TRUE;
++
++ *symhdr = &ecoff_data (abfd)->debug_info.symbolic_header;
++
++ *external_ext_size = backend->debug_swap.external_ext_size;
++ *esize = (*symhdr)->iextMax * *external_ext_size;
++ *external_ext = bfd_malloc (*esize);
++ if (*external_ext == NULL && *esize != 0)
++ return FALSE;
++
++ if (bfd_seek (abfd, (file_ptr) (*symhdr)->cbExtOffset, SEEK_SET) != 0
++ || bfd_bread (*external_ext, *esize, abfd) != *esize)
++ return FALSE;
++
++ *ssext = (char *) bfd_malloc ((bfd_size_type) (*symhdr)->issExtMax);
++ if (*ssext == NULL && (*symhdr)->issExtMax != 0)
++ return FALSE;
++
++ if (bfd_seek (abfd, (file_ptr) (*symhdr)->cbSsExtOffset, SEEK_SET) != 0
++ || (bfd_bread (*ssext, (bfd_size_type) (*symhdr)->issExtMax, abfd)
++ != (bfd_size_type) (*symhdr)->issExtMax))
++ return FALSE;
++ return TRUE;
++}
++
++static bfd_boolean
++reread_ext_syms_and_strs (HDRR **symhdr, bfd_size_type *external_ext_size,
++ bfd_size_type *esize, void **external_ext, char **ssext, bfd *abfd,
++ const struct ecoff_backend_data * const backend)
++{
++ if (*external_ext != NULL)
++ free (*external_ext);
++ *external_ext = NULL;
++ if (*ssext != NULL)
++ free (*ssext);
++ *ssext = NULL;
++ return read_ext_syms_and_strs (symhdr, external_ext_size, esize,
++ external_ext, ssext, abfd, backend);
++}
++
+ /* This is called if we used _bfd_generic_link_add_archive_symbols
+ because we were not dealing with an ECOFF archive. */
+
+ static bfd_boolean
+ ecoff_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h,
+- const char *name,
+ bfd_boolean *pneeded)
+ {
++ const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
++ void (* const swap_ext_in) (bfd *, void *, EXTR *)
++ = backend->debug_swap.swap_ext_in;
++ HDRR *symhdr;
++ bfd_size_type external_ext_size = 0;
++ void * external_ext = NULL;
++ bfd_size_type esize = 0;
++ char *ssext = NULL;
++ char *ext_ptr;
++ char *ext_end;
++
+ *pneeded = FALSE;
+
+- /* Unlike the generic linker, we do not pull in elements because
+- of common symbols. */
+- if (h->type != bfd_link_hash_undefined)
+- return TRUE;
++ /* Read in the external symbols and external strings. */
++ if (!read_ext_syms_and_strs (&symhdr, &external_ext_size, &esize,
++ &external_ext, &ssext, abfd, backend))
++ goto error_return;
+
+- /* Include this element. */
+- if (!(*info->callbacks->add_archive_element) (info, abfd, name, &abfd))
+- return FALSE;
+- *pneeded = TRUE;
++ /* If there are no symbols, we don't want it. */
++ if (bfd_get_symcount (abfd) == 0)
++ goto successful_return;
+
+- return ecoff_link_add_object_symbols (abfd, info);
++ /* Look through the external symbols to see if they define some
++ symbol that is currently undefined. */
++ ext_ptr = (char *) external_ext;
++ ext_end = ext_ptr + esize;
++ for (; ext_ptr < ext_end; ext_ptr += external_ext_size)
++ {
++ EXTR esym;
++ bfd_boolean def;
++ const char *name;
++ bfd *oldbfd;
++ struct bfd_link_hash_entry *h;
++
++ (*swap_ext_in) (abfd, (void *) ext_ptr, &esym);
++
++ /* See if this symbol defines something. */
++ if (esym.asym.st != stGlobal
++ && esym.asym.st != stLabel
++ && esym.asym.st != stProc)
++ continue;
++
++ switch (esym.asym.sc)
++ {
++ case scText:
++ case scData:
++ case scBss:
++ case scAbs:
++ case scSData:
++ case scSBss:
++ case scRData:
++ case scCommon:
++ case scSCommon:
++ case scInit:
++ case scFini:
++ case scRConst:
++ def = TRUE;
++ break;
++ default:
++ def = FALSE;
++ break;
++ }
++
++ if (! def)
++ continue;
++
++ name = ssext + esym.asym.iss;
++ h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
++
++ /* Unlike the generic linker, we do not pull in elements because
++ of common symbols. */
++ if (h == NULL
++ || h->type != bfd_link_hash_undefined)
++ continue;
++
++ /* Include this element. */
++ oldbfd = abfd;
++ if (!(*info->callbacks
++ ->add_archive_element) (info, abfd, name, &abfd))
++ goto error_return;
++ /* Potentially, the add_archive_element hook may have set a
++ substitute BFD for us. */
++ if (abfd != oldbfd
++ && !reread_ext_syms_and_strs (&symhdr, &external_ext_size, &esize,
++ &external_ext, &ssext, abfd, backend))
++ goto error_return;
++ if (! ecoff_link_add_externals (abfd, info, external_ext, ssext))
++ goto error_return;
++
++ *pneeded = TRUE;
++ goto successful_return;
++ }
++
++ successful_return:
++ if (external_ext != NULL)
++ free (external_ext);
++ if (ssext != NULL)
++ free (ssext);
++ return TRUE;
++ error_return:
++ if (external_ext != NULL)
++ free (external_ext);
++ if (ssext != NULL)
++ free (ssext);
++ return FALSE;
+ }
+
+ /* Add the symbols from an archive file to the global hash table.
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index 94ab762..164df6b 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -2933,6 +2933,13 @@ elf_link_is_defined_archive_symbol (bfd * abfd, carsym * symdef)
+ if (! bfd_check_format (abfd, bfd_object))
+ return FALSE;
+
++ /* If we have already included the element containing this symbol in the
++ link then we do not need to include it again. Just claim that any symbol
++ it contains is not a definition, so that our caller will not decide to
++ (re)include this element. */
++ if (abfd->archive_pass)
++ return FALSE;
++
+ /* Select the appropriate symbol table. */
+ if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0)
+ hdr = &elf_tdata (abfd)->symtab_hdr;
+@@ -4929,8 +4936,20 @@ _bfd_elf_archive_symbol_lookup (bfd *abfd,
+ }
+
+ /* Add symbols from an ELF archive file to the linker hash table. We
+- don't use _bfd_generic_link_add_archive_symbols because we need to
+- handle versioned symbols.
++ don't use _bfd_generic_link_add_archive_symbols because of a
++ problem which arises on UnixWare. The UnixWare libc.so is an
++ archive which includes an entry libc.so.1 which defines a bunch of
++ symbols. The libc.so archive also includes a number of other
++ object files, which also define symbols, some of which are the same
++ as those defined in libc.so.1. Correct linking requires that we
++ consider each object file in turn, and include it if it defines any
++ symbols we need. _bfd_generic_link_add_archive_symbols does not do
++ this; it looks through the list of undefined symbols, and includes
++ any object file which defines them. When this algorithm is used on
++ UnixWare, it winds up pulling in libc.so.1 early and defining a
++ bunch of symbols. This means that some of the other objects in the
++ archive are not included in the link, which is incorrect since they
++ precede libc.so.1 in the archive.
+
+ Fortunately, ELF archive handling is simpler than that done by
+ _bfd_generic_link_add_archive_symbols, which has to allow for a.out
+@@ -4945,7 +4964,8 @@ static bfd_boolean
+ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ {
+ symindex c;
+- unsigned char *included = NULL;
++ bfd_boolean *defined = NULL;
++ bfd_boolean *included = NULL;
+ carsym *symdefs;
+ bfd_boolean loop;
+ bfd_size_type amt;
+@@ -4969,10 +4989,11 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ if (c == 0)
+ return TRUE;
+ amt = c;
+- amt *= sizeof (*included);
+- included = (unsigned char *) bfd_zmalloc (amt);
+- if (included == NULL)
+- return FALSE;
++ amt *= sizeof (bfd_boolean);
++ defined = (bfd_boolean *) bfd_zmalloc (amt);
++ included = (bfd_boolean *) bfd_zmalloc (amt);
++ if (defined == NULL || included == NULL)
++ goto error_return;
+
+ symdefs = bfd_ardata (abfd)->symdefs;
+ bed = get_elf_backend_data (abfd);
+@@ -4997,7 +5018,7 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ struct bfd_link_hash_entry *undefs_tail;
+ symindex mark;
+
+- if (included[i])
++ if (defined[i] || included[i])
+ continue;
+ if (symdef->file_offset == last)
+ {
+@@ -5032,8 +5053,7 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ else if (h->root.type != bfd_link_hash_undefined)
+ {
+ if (h->root.type != bfd_link_hash_undefweak)
+- /* Symbol must be defined. Don't check it again. */
+- included[i] = TRUE;
++ defined[i] = TRUE;
+ continue;
+ }
+
+@@ -5045,6 +5065,16 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ if (! bfd_check_format (element, bfd_object))
+ goto error_return;
+
++ /* Doublecheck that we have not included this object
++ already--it should be impossible, but there may be
++ something wrong with the archive. */
++ if (element->archive_pass != 0)
++ {
++ bfd_set_error (bfd_error_bad_value);
++ goto error_return;
++ }
++ element->archive_pass = 1;
++
+ undefs_tail = info->hash->undefs_tail;
+
+ if (!(*info->callbacks
+@@ -5082,11 +5112,14 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
+ }
+ while (loop);
+
++ free (defined);
+ free (included);
+
+ return TRUE;
+
+ error_return:
++ if (defined != NULL)
++ free (defined);
+ if (included != NULL)
+ free (included);
+ return FALSE;
+diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h
+index 50a46ac..90c6018 100644
+--- a/bfd/libbfd-in.h
++++ b/bfd/libbfd-in.h
+@@ -596,9 +596,7 @@ extern bfd_boolean _bfd_generic_link_add_symbols_collect
+ /* Generic archive add symbol routine. */
+ extern bfd_boolean _bfd_generic_link_add_archive_symbols
+ (bfd *, struct bfd_link_info *,
+- bfd_boolean (*) (bfd *, struct bfd_link_info *,
+- struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *));
++ bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
+
+ /* Forward declaration to avoid prototype errors. */
+ typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
+diff --git a/bfd/libbfd.h b/bfd/libbfd.h
+index 6c48f82..ffb6ea4 100644
+--- a/bfd/libbfd.h
++++ b/bfd/libbfd.h
+@@ -601,9 +601,7 @@ extern bfd_boolean _bfd_generic_link_add_symbols_collect
+ /* Generic archive add symbol routine. */
+ extern bfd_boolean _bfd_generic_link_add_archive_symbols
+ (bfd *, struct bfd_link_info *,
+- bfd_boolean (*) (bfd *, struct bfd_link_info *,
+- struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *));
++ bfd_boolean (*) (bfd *, struct bfd_link_info *, bfd_boolean *));
+
+ /* Forward declaration to avoid prototype errors. */
+ typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
+diff --git a/bfd/linker.c b/bfd/linker.c
+index abdf5b0..4cff1e7 100644
+--- a/bfd/linker.c
++++ b/bfd/linker.c
+@@ -229,16 +229,28 @@ SUBSUBSECTION
+ @findex _bfd_generic_link_add_archive_symbols
+ In most cases the work of looking through the symbols in the
+ archive should be done by the
+- <<_bfd_generic_link_add_archive_symbols>> function.
++ <<_bfd_generic_link_add_archive_symbols>> function. This
++ function builds a hash table from the archive symbol table and
++ looks through the list of undefined symbols to see which
++ elements should be included.
+ <<_bfd_generic_link_add_archive_symbols>> is passed a function
+ to call to make the final decision about adding an archive
+ element to the link and to do the actual work of adding the
+- symbols to the linker hash table. If the element is to
++ symbols to the linker hash table.
++
++ The function passed to
++ <<_bfd_generic_link_add_archive_symbols>> must read the
++ symbols of the archive element and decide whether the archive
++ element should be included in the link. If the element is to
+ be included, the <<add_archive_element>> linker callback
+ routine must be called with the element as an argument, and
+ the element's symbols must be added to the linker hash table
+ just as though the element had itself been passed to the
+- <<_bfd_link_add_symbols>> function.
++ <<_bfd_link_add_symbols>> function. The <<add_archive_element>>
++ callback has the option to indicate that it would like to
++ replace the element archive with a substitute BFD, in which
++ case it is the symbols of that substitute BFD that must be
++ added to the linker hash table instead.
+
+ When the a.out <<_bfd_link_add_symbols>> function receives an
+ archive, it calls <<_bfd_generic_link_add_archive_symbols>>
+@@ -407,14 +419,11 @@ static bfd_boolean generic_link_add_object_symbols
+ static bfd_boolean generic_link_add_symbols
+ (bfd *, struct bfd_link_info *, bfd_boolean);
+ static bfd_boolean generic_link_check_archive_element_no_collect
+- (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *);
++ (bfd *, struct bfd_link_info *, bfd_boolean *);
+ static bfd_boolean generic_link_check_archive_element_collect
+- (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *);
++ (bfd *, struct bfd_link_info *, bfd_boolean *);
+ static bfd_boolean generic_link_check_archive_element
+- (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *, bfd_boolean);
++ (bfd *, struct bfd_link_info *, bfd_boolean *, bfd_boolean);
+ static bfd_boolean generic_link_add_symbol_list
+ (bfd *, struct bfd_link_info *, bfd_size_type count, asymbol **,
+ bfd_boolean);
+@@ -908,32 +917,138 @@ generic_link_add_object_symbols (bfd *abfd,
+ return generic_link_add_symbol_list (abfd, info, symcount, outsyms, collect);
+ }
+
++/* We build a hash table of all symbols defined in an archive. */
++
++/* An archive symbol may be defined by multiple archive elements.
++ This linked list is used to hold the elements. */
++
++struct archive_list
++{
++ struct archive_list *next;
++ unsigned int indx;
++};
++
++/* An entry in an archive hash table. */
++
++struct archive_hash_entry
++{
++ struct bfd_hash_entry root;
++ /* Where the symbol is defined. */
++ struct archive_list *defs;
++};
++
++/* An archive hash table itself. */
++
++struct archive_hash_table
++{
++ struct bfd_hash_table table;
++};
++
++/* Create a new entry for an archive hash table. */
++
++static struct bfd_hash_entry *
++archive_hash_newfunc (struct bfd_hash_entry *entry,
++ struct bfd_hash_table *table,
++ const char *string)
++{
++ struct archive_hash_entry *ret = (struct archive_hash_entry *) entry;
++
++ /* Allocate the structure if it has not already been allocated by a
++ subclass. */
++ if (ret == NULL)
++ ret = (struct archive_hash_entry *)
++ bfd_hash_allocate (table, sizeof (struct archive_hash_entry));
++ if (ret == NULL)
++ return NULL;
++
++ /* Call the allocation method of the superclass. */
++ ret = ((struct archive_hash_entry *)
++ bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table, string));
++
++ if (ret)
++ {
++ /* Initialize the local fields. */
++ ret->defs = NULL;
++ }
++
++ return &ret->root;
++}
++
++/* Initialize an archive hash table. */
++
++static bfd_boolean
++archive_hash_table_init
++ (struct archive_hash_table *table,
++ struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
++ struct bfd_hash_table *,
++ const char *),
++ unsigned int entsize)
++{
++ return bfd_hash_table_init (&table->table, newfunc, entsize);
++}
++
++/* Look up an entry in an archive hash table. */
++
++#define archive_hash_lookup(t, string, create, copy) \
++ ((struct archive_hash_entry *) \
++ bfd_hash_lookup (&(t)->table, (string), (create), (copy)))
++
++/* Allocate space in an archive hash table. */
++
++#define archive_hash_allocate(t, size) bfd_hash_allocate (&(t)->table, (size))
++
++/* Free an archive hash table. */
++
++#define archive_hash_table_free(t) bfd_hash_table_free (&(t)->table)
++
+ /* Generic function to add symbols from an archive file to the global
+ hash file. This function presumes that the archive symbol table
+ has already been read in (this is normally done by the
+- bfd_check_format entry point). It looks through the archive symbol
+- table for symbols that are undefined or common in the linker global
+- symbol hash table. When one is found, the CHECKFN argument is used
+- to see if an object file should be included. This allows targets
+- to customize common symbol behaviour. CHECKFN should set *PNEEDED
+- to TRUE if the object file should be included, and must also call
+- the bfd_link_info add_archive_element callback function and handle
+- adding the symbols to the global hash table. CHECKFN must notice
+- if the callback indicates a substitute BFD, and arrange to add
+- those symbols instead if it does so. CHECKFN should only return
+- FALSE if some sort of error occurs. */
++ bfd_check_format entry point). It looks through the undefined and
++ common symbols and searches the archive symbol table for them. If
++ it finds an entry, it includes the associated object file in the
++ link.
++
++ The old linker looked through the archive symbol table for
++ undefined symbols. We do it the other way around, looking through
++ undefined symbols for symbols defined in the archive. The
++ advantage of the newer scheme is that we only have to look through
++ the list of undefined symbols once, whereas the old method had to
++ re-search the symbol table each time a new object file was added.
++
++ The CHECKFN argument is used to see if an object file should be
++ included. CHECKFN should set *PNEEDED to TRUE if the object file
++ should be included, and must also call the bfd_link_info
++ add_archive_element callback function and handle adding the symbols
++ to the global hash table. CHECKFN must notice if the callback
++ indicates a substitute BFD, and arrange to add those symbols instead
++ if it does so. CHECKFN should only return FALSE if some sort of
++ error occurs.
++
++ For some formats, such as a.out, it is possible to look through an
++ object file but not actually include it in the link. The
++ archive_pass field in a BFD is used to avoid checking the symbols
++ of an object files too many times. When an object is included in
++ the link, archive_pass is set to -1. If an object is scanned but
++ not included, archive_pass is set to the pass number. The pass
++ number is incremented each time a new object file is included. The
++ pass number is used because when a new object file is included it
++ may create new undefined symbols which cause a previously examined
++ object file to be included. */
+
+ bfd_boolean
+ _bfd_generic_link_add_archive_symbols
+ (bfd *abfd,
+ struct bfd_link_info *info,
+- bfd_boolean (*checkfn) (bfd *, struct bfd_link_info *,
+- struct bfd_link_hash_entry *, const char *,
+- bfd_boolean *))
++ bfd_boolean (*checkfn) (bfd *, struct bfd_link_info *, bfd_boolean *))
+ {
+- bfd_boolean loop;
+- bfd_size_type amt;
+- unsigned char *included;
++ carsym *arsyms;
++ carsym *arsym_end;
++ register carsym *arsym;
++ int pass;
++ struct archive_hash_table arsym_hash;
++ unsigned int indx;
++ struct bfd_link_hash_entry **pundef;
+
+ if (! bfd_has_map (abfd))
+ {
+@@ -944,103 +1059,148 @@ _bfd_generic_link_add_archive_symbols
+ return FALSE;
+ }
+
+- amt = bfd_ardata (abfd)->symdef_count;
+- if (amt == 0)
+- return TRUE;
+- amt *= sizeof (*included);
+- included = (unsigned char *) bfd_zmalloc (amt);
+- if (included == NULL)
++ arsyms = bfd_ardata (abfd)->symdefs;
++ arsym_end = arsyms + bfd_ardata (abfd)->symdef_count;
++
++ /* In order to quickly determine whether an symbol is defined in
++ this archive, we build a hash table of the symbols. */
++ if (! archive_hash_table_init (&arsym_hash, archive_hash_newfunc,
++ sizeof (struct archive_hash_entry)))
+ return FALSE;
++ for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
++ {
++ struct archive_hash_entry *arh;
++ struct archive_list *l, **pp;
+
+- do
++ arh = archive_hash_lookup (&arsym_hash, arsym->name, TRUE, FALSE);
++ if (arh == NULL)
++ goto error_return;
++ l = ((struct archive_list *)
++ archive_hash_allocate (&arsym_hash, sizeof (struct archive_list)));
++ if (l == NULL)
++ goto error_return;
++ l->indx = indx;
++ for (pp = &arh->defs; *pp != NULL; pp = &(*pp)->next)
++ ;
++ *pp = l;
++ l->next = NULL;
++ }
++
++ /* The archive_pass field in the archive itself is used to
++ initialize PASS, sine we may search the same archive multiple
++ times. */
++ pass = abfd->archive_pass + 1;
++
++ /* New undefined symbols are added to the end of the list, so we
++ only need to look through it once. */
++ pundef = &info->hash->undefs;
++ while (*pundef != NULL)
+ {
+- carsym *arsyms;
+- carsym *arsym_end;
+- carsym *arsym;
+- unsigned int indx;
+- file_ptr last_ar_offset = -1;
+- bfd_boolean needed = FALSE;
+- bfd *element = NULL;
+-
+- loop = FALSE;
+- arsyms = bfd_ardata (abfd)->symdefs;
+- arsym_end = arsyms + bfd_ardata (abfd)->symdef_count;
+- for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
++ struct bfd_link_hash_entry *h;
++ struct archive_hash_entry *arh;
++ struct archive_list *l;
++
++ h = *pundef;
++
++ /* When a symbol is defined, it is not necessarily removed from
++ the list. */
++ if (h->type != bfd_link_hash_undefined
++ && h->type != bfd_link_hash_common)
+ {
+- struct bfd_link_hash_entry *h;
+- struct bfd_link_hash_entry *undefs_tail;
++ /* Remove this entry from the list, for general cleanliness
++ and because we are going to look through the list again
++ if we search any more libraries. We can't remove the
++ entry if it is the tail, because that would lose any
++ entries we add to the list later on (it would also cause
++ us to lose track of whether the symbol has been
++ referenced). */
++ if (*pundef != info->hash->undefs_tail)
++ *pundef = (*pundef)->u.undef.next;
++ else
++ pundef = &(*pundef)->u.undef.next;
++ continue;
++ }
+
+- if (included[indx])
+- continue;
+- if (needed && arsym->file_offset == last_ar_offset)
++ /* Look for this symbol in the archive symbol map. */
++ arh = archive_hash_lookup (&arsym_hash, h->root.string, FALSE, FALSE);
++ if (arh == NULL)
++ {
++ /* If we haven't found the exact symbol we're looking for,
++ let's look for its import thunk */
++ if (info->pei386_auto_import)
++ {
++ bfd_size_type amt = strlen (h->root.string) + 10;
++ char *buf = (char *) bfd_malloc (amt);
++ if (buf == NULL)
++ return FALSE;
++
++ sprintf (buf, "__imp_%s", h->root.string);
++ arh = archive_hash_lookup (&arsym_hash, buf, FALSE, FALSE);
++ free(buf);
++ }
++ if (arh == NULL)
+ {
+- included[indx] = 1;
++ pundef = &(*pundef)->u.undef.next;
+ continue;
+ }
++ }
++ /* Look at all the objects which define this symbol. */
++ for (l = arh->defs; l != NULL; l = l->next)
++ {
++ bfd *element;
++ bfd_boolean needed;
++
++ /* If the symbol has gotten defined along the way, quit. */
++ if (h->type != bfd_link_hash_undefined
++ && h->type != bfd_link_hash_common)
++ break;
+
+- h = bfd_link_hash_lookup (info->hash, arsym->name,
+- FALSE, FALSE, TRUE);
++ element = bfd_get_elt_at_index (abfd, l->indx);
++ if (element == NULL)
++ goto error_return;
+
+- if (h == NULL
+- && info->pei386_auto_import
+- && CONST_STRNEQ (arsym->name, "__imp_"))
+- h = bfd_link_hash_lookup (info->hash, arsym->name + 6,
+- FALSE, FALSE, TRUE);
+- if (h == NULL)
++ /* If we've already included this element, or if we've
++ already checked it on this pass, continue. */
++ if (element->archive_pass == -1
++ || element->archive_pass == pass)
+ continue;
+
+- if (h->type != bfd_link_hash_undefined
+- && h->type != bfd_link_hash_common)
++ /* If we can't figure this element out, just ignore it. */
++ if (! bfd_check_format (element, bfd_object))
+ {
+- if (h->type != bfd_link_hash_undefweak)
+- /* Symbol must be defined. Don't check it again. */
+- included[indx] = 1;
++ element->archive_pass = -1;
+ continue;
+ }
+
+- if (last_ar_offset != arsym->file_offset)
+- {
+- last_ar_offset = arsym->file_offset;
+- element = _bfd_get_elt_at_filepos (abfd, last_ar_offset);
+- if (element == NULL
+- || !bfd_check_format (element, bfd_object))
+- goto error_return;
+- }
+-
+- undefs_tail = info->hash->undefs_tail;
+-
+ /* CHECKFN will see if this element should be included, and
+ go ahead and include it if appropriate. */
+- if (! (*checkfn) (element, info, h, arsym->name, &needed))
++ if (! (*checkfn) (element, info, &needed))
+ goto error_return;
+
+- if (needed)
++ if (! needed)
++ element->archive_pass = pass;
++ else
+ {
+- unsigned int mark;
++ element->archive_pass = -1;
+
+- /* Look backward to mark all symbols from this object file
+- which we have already seen in this pass. */
+- mark = indx;
+- do
+- {
+- included[mark] = 1;
+- if (mark == 0)
+- break;
+- --mark;
+- }
+- while (arsyms[mark].file_offset == last_ar_offset);
+-
+- if (undefs_tail != info->hash->undefs_tail)
+- loop = TRUE;
++ /* Increment the pass count to show that we may need to
++ recheck object files which were already checked. */
++ ++pass;
+ }
+ }
+- } while (loop);
+
+- free (included);
++ pundef = &(*pundef)->u.undef.next;
++ }
++
++ archive_hash_table_free (&arsym_hash);
++
++ /* Save PASS in case we are called again. */
++ abfd->archive_pass = pass;
++
+ return TRUE;
+
+ error_return:
+- free (included);
++ archive_hash_table_free (&arsym_hash);
+ return FALSE;
+ }
+
+@@ -1050,14 +1210,12 @@ _bfd_generic_link_add_archive_symbols
+ for finding them. */
+
+ static bfd_boolean
+-generic_link_check_archive_element_no_collect (bfd *abfd,
++generic_link_check_archive_element_no_collect (
++ bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h,
+- const char *name,
+ bfd_boolean *pneeded)
+ {
+- return generic_link_check_archive_element (abfd, info, h, name, pneeded,
+- FALSE);
++ return generic_link_check_archive_element (abfd, info, pneeded, FALSE);
+ }
+
+ /* See if we should include an archive element. This version is used
+@@ -1067,12 +1225,9 @@ generic_link_check_archive_element_no_collect (bfd *abfd,
+ static bfd_boolean
+ generic_link_check_archive_element_collect (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h,
+- const char *name,
+ bfd_boolean *pneeded)
+ {
+- return generic_link_check_archive_element (abfd, info, h, name, pneeded,
+- TRUE);
++ return generic_link_check_archive_element (abfd, info, pneeded, TRUE);
+ }
+
+ /* See if we should include an archive element. Optionally collect
+@@ -1081,8 +1236,6 @@ generic_link_check_archive_element_collect (bfd *abfd,
+ static bfd_boolean
+ generic_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h,
+- const char *name ATTRIBUTE_UNUSED,
+ bfd_boolean *pneeded,
+ bfd_boolean collect)
+ {
+@@ -1098,6 +1251,7 @@ generic_link_check_archive_element (bfd *abfd,
+ for (; pp < ppend; pp++)
+ {
+ asymbol *p;
++ struct bfd_link_hash_entry *h;
+
+ p = *pp;
+
+diff --git a/bfd/pdp11.c b/bfd/pdp11.c
+index 593c5ca..5111a51 100644
+--- a/bfd/pdp11.c
++++ b/bfd/pdp11.c
+@@ -251,7 +251,7 @@ HOWTO( 1, 0, 1, 16, TRUE, 0, complain_overflow_signed,0,"DISP16", TRU
+ #define TABLE_SIZE(TABLE) (sizeof(TABLE)/sizeof(TABLE[0]))
+
+
+-static bfd_boolean aout_link_check_archive_element (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, bfd_boolean *);
++static bfd_boolean aout_link_check_archive_element (bfd *, struct bfd_link_info *, bfd_boolean *);
+ static bfd_boolean aout_link_add_object_symbols (bfd *, struct bfd_link_info *);
+ static bfd_boolean aout_link_add_symbols (bfd *, struct bfd_link_info *);
+ static bfd_boolean aout_link_write_symbols (struct aout_final_link_info *, bfd *);
+@@ -2682,8 +2682,6 @@ aout_link_check_ar_symbols (bfd *abfd,
+ static bfd_boolean
+ aout_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
+- const char *name ATTRIBUTE_UNUSED,
+ bfd_boolean *pneeded)
+ {
+ bfd *oldbfd;
+diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
+index 9522974..dcfd58f 100644
+--- a/bfd/xcofflink.c
++++ b/bfd/xcofflink.c
+@@ -2384,8 +2384,6 @@ xcoff_link_check_ar_symbols (bfd *abfd,
+ static bfd_boolean
+ xcoff_link_check_archive_element (bfd *abfd,
+ struct bfd_link_info *info,
+- struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
+- const char *name ATTRIBUTE_UNUSED,
+ bfd_boolean *pneeded)
+ {
+ bfd_boolean keep_syms_p;
+@@ -2465,7 +2463,7 @@ _bfd_xcoff_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
+ bfd_boolean needed;
+
+ if (! xcoff_link_check_archive_element (member, info,
+- NULL, NULL, &needed))
++ &needed))
+ return FALSE;
+ if (needed)
+ member->archive_pass = -1;
diff --git a/projects/binutils/peXXigen.patch b/projects/binutils/peXXigen.patch
index 785aa02..c2a689a 100644
--- a/projects/binutils/peXXigen.patch
+++ b/projects/binutils/peXXigen.patch
@@ -1,14 +1,29 @@
-diff -crB binutils-2.24/bfd/peXXigen.c binutils-2.24/bfd/peXXigen.c
-*** binutils-2.24/bfd/peXXigen.c Tue Nov 26 11:37:33 2013
---- binutils-2.24/bfd/peXXigen.c Mon Aug 4 07:10:15 2014
-***************
-*** 795,800 ****
---- 795,802 ----
- /* Only use a real timestamp if the option was chosen. */
- if ((pe_data (abfd)->insert_timestamp))
- H_PUT_32 (abfd, time(0), filehdr_out->f_timdat);
-+ else
-+ H_PUT_32 (abfd, 0, filehdr_out->f_timdat);
-
- PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr,
- filehdr_out->f_symptr);
+From f8e8f1daf12e30d3197b25d6bd10c03d1f932e20 Mon Sep 17 00:00:00 2001
+From: Nick Clifton <nickc(a)redhat.com>
+Date: Tue, 27 Sep 2016 12:08:19 +0100
+Subject: [PATCH] Ensure that the timestamp in PE/COFF headers is always
+ initialised.
+
+ PR ld/20634
+ * peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Put 0 in the
+ timestamp field if real time values are not being stored.
+---
+ bfd/peXXigen.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c
+index c92c1ea..d713d96 100644
+--- a/bfd/peXXigen.c
++++ b/bfd/peXXigen.c
+@@ -879,6 +879,8 @@ _bfd_XXi_only_swap_filehdr_out (bfd * abfd, void * in, void * out)
+ /* Only use a real timestamp if the option was chosen. */
+ if ((pe_data (abfd)->insert_timestamp))
+ H_PUT_32 (abfd, time (0), filehdr_out->f_timdat);
++ else
++ H_PUT_32 (abfd, 0, filehdr_out->f_timdat);
+
+ PUT_FILEHDR_SYMPTR (abfd, filehdr_in->f_symptr,
+ filehdr_out->f_symptr);
+--
+2.1.4
+
diff --git a/projects/mingw-w64/build b/projects/mingw-w64/build
index a142c38..b0ce69d 100644
--- a/projects/mingw-w64/build
+++ b/projects/mingw-w64/build
@@ -29,7 +29,7 @@ sed 's/msvcrt/msvcr100/' -i $distdir/msvcr100.spec
sed 's/msvcrt/msvcr100/' -i gcc-[% c("var/gcc_version") %]/gcc/config/i386/t-mingw-w32
# LDFLAGS_FOR_TARGET does not work for some reason. Thus, we take
# CFLAGS_FOR_TARGET.
-export CFLAGS_FOR_TARGET="-specs=$distdir/msvcr100.spec -Wl,--nxcompat -Wl,--dynamicbase"
+export CFLAGS_FOR_TARGET="-specs=$distdir/msvcr100.spec -Wl,--nxcompat -Wl,--dynamicbase -Wl,--no-insert-timestamp"
gcc-[% c("var/gcc_version") %]/configure --prefix=$distdir --target=[% c("arch") %]-w64-mingw32 --disable-multilib --enable-languages=c,c++
make -j[% c("buildconf/num_procs") %] all-gcc
make install-gcc
diff --git a/projects/nsis/build b/projects/nsis/build
index 81ed4d4..5a7b59f 100755
--- a/projects/nsis/build
+++ b/projects/nsis/build
@@ -1,7 +1,6 @@
#!/bin/bash
[% c("var/set_default_env") -%]
[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
-mkdir -p /var/tmp/dist
mkdir -p /var/tmp/build
tar -C /var/tmp/build -xf nsis-[% c('version') %].tar.bz2
cd /var/tmp/build/nsis-[% c('version') %]-src
@@ -13,7 +12,13 @@ for patch in $(grep '\.patch$' debian/patches/series)
do
[ -f debian/patches/$patch ] && patch -p1 < debian/patches/$patch
done
-[% SET scons_args = 'APPEND_CCFLAGS="-fgnu89-inline" VERSION=' _ c("version")
+# Adding --no-insert-timestamp to APPEND_LINKFLAGS is not working as it
+# is used for both the host and cross-compiled parts, but this option is
+# only valid for the Windows linker. Therefore we add it using a patch
+# to the cross-compilation part only.
+patch -p1 < $rootdir/no-insert-timestamp.patch
+[% SET scons_args = 'VERSION=' _ c("version")
+ _ ' APPEND_CCFLAGS="-fgnu89-inline"'
_ " SKIPUTILS='NSIS Menu' XGCC_W32_PREFIX=i686-w64-mingw32-"
_ ' PREFIX=/var/tmp/dist/nsis' -%]
scons [% scons_args %]
diff --git a/projects/nsis/config b/projects/nsis/config
index 7db7b60..24adc36 100644
--- a/projects/nsis/config
+++ b/projects/nsis/config
@@ -21,5 +21,6 @@ input_files:
URL: 'http://http.debian.net/debian/pool/main/n/nsis/nsis_2.51-1.debian.tar.xz'
sha256sum: 1dee6957b4a4b8dfe69bcf28bc7f301a13b96b3fa5a394e36c8926ae781e774a
- filename: nsis-missing-unistd-include.patch
+ - filename: no-insert-timestamp.patch
- name: '[% c("var/compiler") %]'
project: '[% c("var/compiler") %]'
diff --git a/projects/nsis/no-insert-timestamp.patch b/projects/nsis/no-insert-timestamp.patch
new file mode 100644
index 0000000..e71af21
--- /dev/null
+++ b/projects/nsis/no-insert-timestamp.patch
@@ -0,0 +1,27 @@
+diff -ur nsis-2.51-src/SCons/Config/gnu nsis-2.51-src.n/SCons/Config/gnu
+--- nsis-2.51-src/SCons/Config/gnu 2018-05-24 20:40:06.508000000 +0200
++++ nsis-2.51-src.n/SCons/Config/gnu 2018-05-24 21:04:16.501000000 +0200
+@@ -89,6 +89,7 @@
+ stub_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
+ stub_env.Append(LINKFLAGS = ['-Wl,-e,_WinMain@16']) # entry point
+ stub_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
++stub_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
+
+ ### makensis environment
+
+@@ -125,6 +126,7 @@
+ plugin_env.Append(LINKFLAGS = ['$MAP_FLAG']) # generate map file
+ plugin_env.Append(LINKFLAGS = ['-static-libgcc']) # Make sure libgcc is statically linked in, for the plugins to work.
+ plugin_env.Append(LINKFLAGS = ['-static-libstdc++']) # Make sure libstdc++ is statically linked in, for the plugins to work.
++plugin_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
+
+ ### cross-platform util environment
+
+@@ -148,6 +150,7 @@
+
+ util_env.Append(LINKFLAGS = ['-mwindows']) # build windows executables
+ util_env.Append(LINKFLAGS = ['$ALIGN_FLAG']) # 512 bytes align
++util_env.Append(LINKFLAGS = ['-Wl,--no-insert-timestamp']) # remove timestamps for reproducible builds
+
+ conf = FlagsConfigure(util_env)
+ if not defenv['DEBUG'] and defenv['STRIP'] and defenv['STRIP_W32']:
diff --git a/projects/openssl/config b/projects/openssl/config
index 9ab54c6..9c191fa 100644
--- a/projects/openssl/config
+++ b/projects/openssl/config
@@ -15,7 +15,7 @@ targets:
configure_opts: -shared linux-generic32
windows:
var:
- configure_opts: '-shared --cross-compile-prefix=[% c("arch") %]-w64-mingw32- mingw[% IF c("var/windows-x86_64") %]64[% END %] "-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -lssp -L$gcclibs"'
+ configure_opts: '-shared --cross-compile-prefix=[% c("arch") %]-w64-mingw32- mingw[% IF c("var/windows-x86_64") %]64[% END %] "-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -Wl,--no-insert-timestamp -lssp -L$gcclibs"'
osx-x86_64:
var:
configure_opts: --cross-compile-prefix=x86_64-apple-darwin10- darwin64-x86_64-cc enable-ec_nistp_64_gcc_128
diff --git a/projects/selfrando/config b/projects/selfrando/config
index f8afa5d..07195f7 100644
--- a/projects/selfrando/config
+++ b/projects/selfrando/config
@@ -1,6 +1,6 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
-version: 0.3.3
+version: 0.4.1
git_hash: 'tb-v[% c("version") %]'
git_url: https://github.com/immunant/selfrando.git
gpg_keyring: selfrando.gpg
diff --git a/projects/zlib/build b/projects/zlib/build
index 4cb384b..ef26882 100644
--- a/projects/zlib/build
+++ b/projects/zlib/build
@@ -7,8 +7,8 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
export CFLAGS="[% c("var/CFLAGS") %]"
export LDFLAGS="[% c("var/LDFLAGS") %]"
-make BINARY_PATH=$distdir/lib INCLUDE_PATH=$distdir/include LIBRARY_PATH=$distdir/lib -f win32/Makefile.gcc PREFIX=[% c("arch") %]-w64-mingw32- -j4 SHARED_MODE=1 LOC="-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -lssp -L$gcclibs"
-make BINARY_PATH=$distdir/lib INCLUDE_PATH=$distdir/include LIBRARY_PATH=$distdir/lib -f win32/Makefile.gcc PREFIX=[% c("arch") %]-w64-mingw32- -j4 SHARED_MODE=1 LOC="-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -lssp -L$gcclibs" install
+make BINARY_PATH=$distdir/lib INCLUDE_PATH=$distdir/include LIBRARY_PATH=$distdir/lib -f win32/Makefile.gcc PREFIX=[% c("arch") %]-w64-mingw32- -j4 SHARED_MODE=1 LOC="-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -Wl,--no-insert-timestamp -lssp -L$gcclibs"
+make BINARY_PATH=$distdir/lib INCLUDE_PATH=$distdir/include LIBRARY_PATH=$distdir/lib -f win32/Makefile.gcc PREFIX=[% c("arch") %]-w64-mingw32- -j4 SHARED_MODE=1 LOC="-fstack-protector-all -Wstack-protector --param ssp-buffer-size=4 -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -Wl,--no-insert-timestamp -lssp -L$gcclibs" install
cd /var/tmp/dist
[% c('tar', {
diff --git a/rbm.conf b/rbm.conf
index 6adcd6f..0d6de69 100644
--- a/rbm.conf
+++ b/rbm.conf
@@ -217,7 +217,7 @@ targets:
suite: jessie
configure_opt: '--host=[% c("arch") %]-w64-mingw32 CFLAGS="[% c("var/CFLAGS") %]" LDFLAGS="[% c("var/LDFLAGS") %]"'
CFLAGS: '[% c("var/flag_mwindows") %] -fstack-protector-strong -fno-strict-overflow -Wno-missing-field-initializers -Wformat -Wformat-security'
- LDFLAGS: '[% c("var/flag_mwindows") %] -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -lssp -L$gcclibs'
+ LDFLAGS: '[% c("var/flag_mwindows") %] -Wl,--dynamicbase -Wl,--nxcompat -Wl,--enable-reloc-section -Wl,--no-insert-timestamp -lssp -L$gcclibs'
flag_mwindows: '-mwindows'
compiler: mingw-w64
deps:
1
0

[tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_16472_v16'
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit 6b4cb8b83c0a52e596db45b64551162ff2fce947
Merge: 473342e b24500f
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue May 29 19:51:30 2018 +0000
Merge remote-tracking branch 'boklm/bug_16472_v16'
keyring/binutils.gpg | Bin 25772 -> 1169 bytes
projects/binutils/64bit-fixups.patch | 31 +-
projects/binutils/binutils-224-gold.patch | 98 --
projects/binutils/build | 10 +-
projects/binutils/config | 11 +-
projects/binutils/enable-reloc-section-ld.patch | 83 +-
projects/binutils/fix-warning-bfd.patch | 186 ----
.../binutils/fix-windows-reproducibility.patch | 1034 ++++++++++++++++++++
projects/binutils/peXXigen.patch | 43 +-
projects/mingw-w64/build | 2 +-
projects/nsis/build | 9 +-
projects/nsis/config | 1 +
projects/nsis/no-insert-timestamp.patch | 27 +
projects/openssl/config | 2 +-
projects/selfrando/config | 2 +-
projects/zlib/build | 4 +-
rbm.conf | 2 +-
17 files changed, 1174 insertions(+), 371 deletions(-)
1
0

[tor-browser/tor-browser-60.0.1esr-8.0-1] fixup! TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit 30544586f8a98e985e0038b2e905bfddb14e999e
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue May 29 19:40:31 2018 +0000
fixup! TB4: Tor Browser's Firefox preference overrides.
A fix for our bug 26127.
---
browser/app/profile/000-tor-browser.js | 3 +++
1 file changed, 3 insertions(+)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 8a187a8cefad..4289b7bcc5f9 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -297,6 +297,9 @@ pref("xpinstall.whitelist.add.36", "");
// don't want to have some random Google Analytics script running either on the
// about:addons page, see bug 22073 and 22900.
pref("extensions.getAddons.showPane", false);
+// Show our legacy extensions directly on about:addons and get rid of the
+// warning for the default theme.
+pref("extensions.legacy.exceptions", "{972ce4c6-7e08-4474-a285-3208198ce6fd},torbutton@torproject.org,tor-launcher@torproject.org");
// Toolbar layout
pref("browser.uiCustomization.state", "{\"placements\":{\"PanelUI-contents\":[\"edit-controls\",\"zoom-controls\",\"new-window-button\",\"save-page-button\",\"print-button\",\"bookmarks-menu-button\",\"history-panelmenu\",\"find-button\",\"preferences-button\",\"add-ons-button\",\"developer-button\",\"https-everywhere-button\",\"downloads-button\"],\"addon-bar\":[\"addonbar-closebutton\",\"status-bar\"],\"PersonalToolbar\":[\"personal-bookmarks\"],\"nav-bar\":[\"noscript-tbb\",\"torbutton-button\",\"urlbar-container\",\"search-container\",\"webrtc-status-button\",\"loop-button\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"toolbar-menubar\":[\"menubar-items\"]},\"seen\":[],\"dirtyAreaCache\":[\"PersonalToolbar\",\"nav-bar\",\"TabsToolbar\",\"toolbar-menubar\",\"PanelUI-contents\",\"addon-bar\"],\"currentVersion\":4,\"newElementCount\":0}");
1
0

[tor-browser-build/master] Update Firefox to 60.0.1esr (tor-browser-60.0.1esr-8.0-1)
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit a4ed53bb203f03b76853f42efc0564a75cc7e562
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Mon May 28 09:44:02 2018 -0400
Update Firefox to 60.0.1esr (tor-browser-60.0.1esr-8.0-1)
---
projects/firefox/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index 4458d48..c53ea7e 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -7,7 +7,7 @@ git_url: https://git.torproject.org/tor-browser.git
gpg_keyring: torbutton.gpg
var:
- firefox_platform_version: 52.8.0
+ firefox_platform_version: 60.0.1
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 8.0
torbrowser_update_channel: alpha
1
0

[tor-browser-build/master] Use mach configure to pass build configuration arguments
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit 74e8c6a9803cc778b73dfa08c23ab7c75bb40718
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Mon May 28 11:05:32 2018 -0400
Use mach configure to pass build configuration arguments
---
projects/firefox/build | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index cfef91d..7f74c9c 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -111,10 +111,10 @@ fi
rm -f configure
rm -f js/src/configure
-make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts"
-make -j[% c("buildconf/num_procs") %] -f client.mk build
-make -C obj-* package INNER_MAKE_PACKAGE=true
+./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts
+./mach build
+./mach package
[% IF c("var/osx") %]
cp -a obj-macos/dist/firefox/* $distdir
1
0

[tor-browser-build/master] Disable checking the hashes of the language packs for Firefox 60 ESR
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit a80e0d5b49e827b613b624c5516b087b3c402f73
Author: Sukhbir Singh <sukhbir(a)torproject.org>
Date: Mon May 28 10:59:06 2018 -0400
Disable checking the hashes of the language packs for Firefox 60 ESR
... pending https://bugzilla.mozilla.org/show_bug.cgi?id=1463749 is fixed.
---
projects/firefox-langpacks/build | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/firefox-langpacks/build b/projects/firefox-langpacks/build
index 6bc1810..cbbc9ca 100644
--- a/projects/firefox-langpacks/build
+++ b/projects/firefox-langpacks/build
@@ -4,8 +4,8 @@
[% FOREACH lang = c('var/locales') %]
[% SET lang = tmpl(lang) %]
[% SET filename = c("var/input_filename") _ '/' _ lang _ '.xpi'; %]
- shasum=$(grep '[% c("var/ff_arch") %]/xpi/[% lang %].xpi$' SHA512SUMS-[% c("version") %] | sed 's| [% c("var/ff_arch") %]/xpi/[% lang %].xpi$||')
- echo "$shasum [% filename %]" | sha512sum -c
+ #shasum=$(grep '[% c("var/ff_arch") %]/xpi/[% lang %].xpi$' SHA512SUMS-[% c("version") %] | sed 's| [% c("var/ff_arch") %]/xpi/[% lang %].xpi$||')
+ #echo "$shasum [% filename %]" | sha512sum -c
[% END %]
mkdir -p [% dest_dir %]/[% c("filename") %]
1
0

[tor-browser-build/master] Use cairgo-gtk3 and provide libgtk-3-dev for Firefox 60 ESR
by gk@torproject.org 29 May '18
by gk@torproject.org 29 May '18
29 May '18
commit ed1e40688ca502e1adc1819024c430c24aebebb0
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Mon May 28 09:48:35 2018 -0400
Use cairgo-gtk3 and provide libgtk-3-dev for Firefox 60 ESR
---
projects/firefox/config | 1 +
projects/firefox/mozconfig-linux-i686 | 4 ++--
projects/firefox/mozconfig-linux-x86_64 | 4 ++--
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/projects/firefox/config b/projects/firefox/config
index c53ea7e..77ae405 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -37,6 +37,7 @@ targets:
var:
arch_deps:
- libgtk2.0-dev
+ - libgtk-3-dev
- libdbus-glib-1-dev
- libxt-dev
- hardening-wrapper
diff --git a/projects/firefox/mozconfig-linux-i686 b/projects/firefox/mozconfig-linux-i686
index a7d75fa..b677df3 100755
--- a/projects/firefox/mozconfig-linux-i686
+++ b/projects/firefox/mozconfig-linux-i686
@@ -17,8 +17,8 @@ ac_add_options --enable-optimize
#ac_add_options --disable-optimize
ac_add_options --enable-official-branding
-# Let's support GTK2 for ESR52
-ac_add_options --enable-default-toolkit=cairo-gtk2
+# Let's support GTK3 for ESR60
+ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
diff --git a/projects/firefox/mozconfig-linux-x86_64 b/projects/firefox/mozconfig-linux-x86_64
index 7d9ab1c..2e8e2fa 100755
--- a/projects/firefox/mozconfig-linux-x86_64
+++ b/projects/firefox/mozconfig-linux-x86_64
@@ -9,8 +9,8 @@ ac_add_options --enable-optimize
#ac_add_options --disable-optimize
ac_add_options --enable-official-branding
-# Let's support GTK2 for ESR52
-ac_add_options --enable-default-toolkit=cairo-gtk2
+# Let's support GTK3 for ESR60
+ac_add_options --enable-default-toolkit=cairo-gtk3
ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
1
0
commit d3339fe091e96daa6fb1918880a3eef82c068cad
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Thu May 3 22:51:38 2018 -0700
disable selfrando
---
projects/firefox/build | 14 +++++++-------
projects/firefox/config | 6 +++---
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index 7f74c9c..88bffc2 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -40,13 +40,13 @@ EOF
export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
-[% IF c("var/linux") && ! c("var/release") -%]
- tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/selfrando') %]
- # Selfrando wrapper
- export PATH="/var/tmp/dist/selfrando/Tools/TorBrowser/tc-wrapper/:$PATH"
- # We need to avoid the shuffling while building as this breaks compilation
- export SELFRANDO_skip_shuffle=
-[% END -%]
+#[% IF c("var/linux") && ! c("var/release") -%]
+# tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/selfrando') %]
+# # Selfrando wrapper
+# export PATH="/var/tmp/dist/selfrando/Tools/TorBrowser/tc-wrapper/:$PATH"
+# # We need to avoid the shuffling while building as this breaks compilation
+# export SELFRANDO_skip_shuffle=
+#[% END -%]
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
diff --git a/projects/firefox/config b/projects/firefox/config
index 77ae405..0692ead 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -81,9 +81,9 @@ input_files:
- project: binutils
name: binutils
enable: '[% c("var/linux") %]'
- - project: selfrando
- name: selfrando
- enable: '[% c("var/linux") && ! c("var/release") %]'
+# - project: selfrando
+# name: selfrando
+# enable: '[% c("var/linux") && ! c("var/release") %]'
- filename: fix-info-plist.py
enable: '[% c("var/osx") %]'
- URL: https://people.torproject.org/~gk/mirrors/sources/msvcr100.dll
1
0