Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Ошибка компиляции firefox-52.4 c PGO +GCC-6.4,profile 17 PIE
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Russian
View previous topic :: View next topic  
Author Message
edyatl
n00b
n00b


Joined: 13 Dec 2017
Posts: 8

PostPosted: Wed Dec 13, 2017 10:40 am    Post subject: Ошибка компиляции firefox-52.4 c PGO +GCC-6.4,profile 17 PIE Reply with quote

Добрый день!
При обновлении системы обновил GCC до 6.4, затем в соответсвие с новостью перешел с 13-го профиля на 17-й с PIE, пересобрал GCC и тулчейн, поставил на полную пересборку
Code:
emerge -ae @world

Вся система собралась нормально кроме firefox-52.4 с флагом PGO, на предыдущем 5-ом компиляторе эта версия собиралась без проблем.
Под конец компиляции возникает ошибка:
Code:
  ERROR: www-client/firefox-52.4.0::gentoo failed (compile phase):
    Failed to run 'emake -f client.mk profiledbuild'
 
  Call stack:
      ebuild.sh, line  124:  Called src_compile
    environment, line 5138:  Called virtx 'emake' '-f' 'client.mk' 'profiledbuild'
    environment, line 6218:  Called die
  The specific snippet of code:
        [[ ${retval} -ne 0 ]] && die "Failed to run '$@'";

Поиском ничего похожего не нашел.
Как это победить?
Заранее спасибо за помощь!

Code:
emerge --info '=www-client/firefox-52.4.0::gentoo'
Portage 2.3.13 (python 2.7.14-final-0, default/linux/amd64/17.0/desktop, gcc-6.4.0, glibc-2.25-r9, 4.9.49-gentoo-r1 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-4.9.49-gentoo-r1-x86_64-AMD_Athlon-tm-_64_Processor_3200+-with-gentoo-2.4.1
KiB Mem:     1981324 total,     64300 free
KiB Swap:    3905532 total,   3604520 free
Timestamp of repository gentoo: Tue, 12 Dec 2017 10:00:01 +0000
Head commit of repository gentoo: 255b2e41ec1ec7d874ced2977b153cb4e341536e
sh bash 4.3_p48-r1
ld GNU ld (Gentoo 2.29.1 p3) 2.29.1
app-shells/bash:          4.3_p48-r1::gentoo
dev-java/java-config:     2.2.0-r3::gentoo
dev-lang/perl:            5.24.3::gentoo
dev-lang/python:          2.7.14-r1::gentoo, 3.5.4-r1::gentoo, 3.6.3-r1::gentoo
dev-util/cmake:           3.8.2::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.4.1-r2::gentoo
sys-apps/openrc:          0.34.11::gentoo
sys-apps/sandbox:         2.10-r4::gentoo
sys-devel/autoconf:       2.13::gentoo, 2.69::gentoo
sys-devel/automake:       1.15.1-r1::gentoo
sys-devel/binutils:       2.29.1-r1::gentoo
sys-devel/gcc:            6.4.0::gentoo
sys-devel/gcc-config:     1.8-r1::gentoo
sys-devel/libtool:        2.4.6-r3::gentoo
sys-devel/make:           4.2.1::gentoo
sys-kernel/linux-headers: 4.4::gentoo (virtual/os-headers)
sys-libs/glibc:           2.25-r9::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-extra-opts:

sk-overlay
    location: /var/lib/layman/sk-overlay
    masters: gentoo
    priority: 50

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=athlon64-sse3 -O2 -pipe"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/lib64/libreoffice/program/sofficerc /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-march=athlon64-sse3 -O2 -pipe"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs protect-owned sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
LANG="ru_RU.utf8"
LC_ALL=""
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j2"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
USE="X a52 aac acl acpi alsa amd64 berkdb bindist bluetooth branding bzip2 cairo cdda cdr cli consolekit cracklib crypt cups cxx dbus dri dts dvd dvdr emboss encode exif fam firefox flac fortran gdbm gif glamor gpm gtk iconv icu ipv6 jpeg lcms ldap libnotify lock mad mng modules mp3 mp4 mpeg multilib ncurses nls nptl nvidia ogg opengl openmp pam pango pcre pdf png policykit ppds qt3support qt5 readline samba sdl seccomp session spell ssl startup-notification svg tcpd thunar tiff truetype udev udisks unicode upower usb vorbis wxwidgets x264 xattr xcb xml xv xvid xvmc zlib" ABI_X86="64" ALSA_CARDS="hda-intel" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="3dnow 3dnowext mmx mmxext sse sse2 sse3" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="efi-64 pc" INPUT_DEVICES="evdev" KERNEL="linux" L10N="ru" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-6 php7-0" POSTGRES_TARGETS="postgres9_5" PYTHON_SINGLE_TARGET="python3_5" PYTHON_TARGETS="python2_7 python3_5" RUBY_TARGETS="ruby22" USERLAND="GNU" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS

=================================================================
                        Package Settings
=================================================================

www-client/firefox-52.4.0::gentoo was built with the following:
USE="bindist dbus gmp-autoupdate jemalloc pgo startup-notification -custom-cflags -custom-optimization -debug -eme-free -gtk2 -hardened -hwaccel -jack (-neon) -pulseaudio (-rust) (-selinux) (-system-cairo) -system-harfbuzz -system-icu -system-jpeg -system-libevent -system-libvpx -system-sqlite -test -wifi" ABI_X86="(64)" L10N="ru -ach -af -an -ar -as -ast -az -bg -bn-BD -bn-IN -br -bs -ca -cak -cs -cy -da -de -dsb -el -en-GB -en-ZA -eo -es-AR -es-CL -es-ES -es-MX -et -eu -fa -ff -fi -fr -fy -ga -gd -gl -gn -gu -he -hi -hr -hsb -hu -hy -id -is -it -ja -ka -kab -kk -km -kn -ko -lij -lt -lv -mai -mk -ml -mr -ms -nb -nl -nn -or -pa -pl -pt-BR -pt-PT -rm -ro -si -sk -sl -son -sq -sr -sv -ta -te -th -tr -uk -uz -vi -xh -zh-CN -zh-TW"
CFLAGS="-march=athlon64-sse3 -pipe"
CXXFLAGS="-march=athlon64-sse3 -pipe"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags"

The complete build log is located at '/var/tmp/portage/www-client/firefox-52.4.0/temp/build.log'.
https://gist.github.com/anonymous/db0a8fd334ecd0ef6468a412304f14d4
Back to top
View user's profile Send private message
edyatl
n00b
n00b


Joined: 13 Dec 2017
Posts: 8

PostPosted: Fri Dec 15, 2017 8:41 am    Post subject: Reply with quote

Решение проблемы предложили в англоязычной ветке форума: https://forums.gentoo.org/viewtopic-p-8156022.html#8156022
Эта проблема проходит как баг https://bugs.gentoo.org/617690
Я применил патч предложенный fedeliallalinea и firefox собрался без ошибок.
Если вы столкнулись с такой же проблемой, то попробуйте применить патч:
Code:
# mkdir -p /etc/portage/patches/www-client/firefox
# curl https://617690.bugs.gentoo.org/attachment.cgi?id=483002 > /etc/portage/patches/www-client/firefox/UserPatch.patch
# cd $(portageq get_repo_path / gentoo)/www-client/firefox/
# ebuild firefox-52.4.0.ebuild  clean prepare
# emerge -a1 www-client/firefox


Однако я до конца не понял почему firefox-52.4 нормально собирался на 13-ом профиле с GCC-5 и почему на 17-м с GCC-6 появилась ошибка компиляции и что делает патч.
Если кто-то может прокомментировать и объяснить простым языком будет супер.
Заранее большое спасибо!
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 540

PostPosted: Wed Dec 27, 2017 1:34 pm    Post subject: Reply with quote

а зачем вам понадобилось обновлять GCC до 6.4, ведь вы не используете функции новых компиляторов.

сами ищете себе геморой?

Code:
gcc-config -l

Какой компилятор по-умолчанию используется?
_________________
Do not use gentoo, it die
Back to top
View user's profile Send private message
puleglot
n00b
n00b


Joined: 29 Jul 2014
Posts: 7

PostPosted: Thu Dec 28, 2017 6:53 am    Post subject: Reply with quote

TigerJr wrote:
а зачем вам понадобилось обновлять GCC до 6.4, ведь вы не используете функции новых компиляторов.

сами ищете себе геморой?

Более старые версии gcc замаскированы в профилях 17+.
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 540

PostPosted: Thu Dec 28, 2017 7:44 am    Post subject: Reply with quote

Переход на новый компилятор как правило обусловленно отсутствием поддержки инструкций новых процессоров, например эти опции были недоступны в GCC 5.x
Quote:
CFLAGS="march=skylake -mclzero -mpku -mno-fma4"


Также расширили инструкции AVX512 и были добавленные дополнительные параметры компиляции:
Quote:
-mavx512vl -mavx512bw -mavx512dq -mavx512ifma -mavx512vbmi


у семейства AMD появилось march=znver1

А ничего подобного я у вас не увидел, вот и не могу понять стоило ли вам менять profile на новый и к томуже обновлять компилятор!?
_________________
Do not use gentoo, it die
Back to top
View user's profile Send private message
edyatl
n00b
n00b


Joined: 13 Dec 2017
Posts: 8

PostPosted: Thu Jan 11, 2018 11:20 pm    Post subject: Reply with quote

TigerJr wrote:
а зачем вам понадобилось обновлять GCC до 6.4, ведь вы не используете функции новых компиляторов.

сами ищете себе геморой?

Code:
gcc-config -l

Какой компилятор по-умолчанию используется?

Вышла новость: 2017-11-30-new-17-profiles
Где написано:
Code:
...Please migrate away from the 13.0 profiles within the six weeks after
GCC 6.4.0 has been stabilized on your architecture. The 13.0 profiles
will be deprecated then and removed in half a year...

При обновлении системы GCC обновился до 6.4. и в соответствие с новостью перешел на 17-й профиль.
Code:
# gcc-config -l
 [1] x86_64-pc-linux-gnu-6.4.0 *

Непонятно влияет ли как-то профилирование с PGO флагом на работу FF при сборке новым компилятором. Если раньше с GCC 4.5 разница была заметна сильно, профилированный FF работал заметно шустрее и стабильнее, то сейчас застабилизировали FF 52.5.2, попробовал собрать его без PGO и разницу в работе с предыдущей профилированной сборкой сейчас не вижу. Есть ли смысл в этом профилировании, тем более, что вроде в следующем ESRе флаг PGO грозятся убрать?
Back to top
View user's profile Send private message
TigerJr
Guru
Guru


Joined: 19 Jun 2007
Posts: 540

PostPosted: Mon Jan 15, 2018 9:10 am    Post subject: Reply with quote

профили устанавливают минимальные версии системных пакетов - для совместимого функционирования (python sandbox bash gcc glibc portage etc.) плюс минимальный набор package USE

К оптимизации компилятора profiles не имеет отношения.

Quote:
gcc-config -l
[1] x86_64-pc-linux-gnu-5.4.0
[2] x86_64-pc-linux-gnu-6.4.0 *


у меня два компилятора стоят, друг-другу не мешают, второй как раз понадобился из-за -march=skylake

P/S

а вообще если интересна более тонкая оптимизация лучше сначала почитать про CFLAGS="-O1" CFLAGS="-O2" CFLAGS="-O3"

я например стараюсь использовать оптимизацияю O2 с ключами -mmmx msse3 -mavx -maes -fomit-frame-pointer -ftracer -ftree-vectorize -floop-parallelize-all -pipe,
но неверные параметры такой оптимизации могут привезти к нерабочим бинарникам (например если задействовать -maes на архитектуре не поддерживающей эту инструкцию).

а более подробнее про используемые опции можно узнать из вывода:

Используемые инструкции архитектуры (можно и gcc -Q --help=target -march=athlon64-sse3 -msse3 -mmmx )
Quote:
gcc -Q --help=target


И разнообразные ключи компиляции находятся тут, хотя большая часть из них переключается флагами -O2 -O3, но и можно поиграть
Quote:
gcc -Q --help=optimizers

Оптимизаторы могут приводить работу программ к непонятным ошибкам, поэтому -O3 используется редко


PS/2
Quote:
/usr/portage/profiles/use.local.desc:www-client/firefox:pgo - Add support for profile-guided optimization using gcc-4.5, for faster binaries. This option will double the compile time.


-fprofile-generate и -fprofile-use задействуются при сборке с USE=pgo

Описание в мануале по GCC


патч добавил темплейт для функции, скорее всего тело функции существовало а прототипа функции обьявленно не было, ну и более новый компилятор при использовании стандарта g++11 отказался собирать обьектный файл без прототипа функции, а предыдущая версия компилятора могла собирать функции без их обьявления.

Не уверен, но скорее всего прототипы функций как раз и нужны для того чтобы компилятор оптимизировал их адреса и расположение в памяти относительно стека и правильно выделял для них память.
_________________
Do not use gentoo, it die
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Russian All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum