Компиляция с использованием профилировщика.

GCC поддерживает двухпроходную компиляцию с использованием профилировщика для более точной оптимизации выходного кода. Для этого имеется группа опций -fprofile-*.
Я сделал небольшой патч для emake, для поддержки двухпроходной компиляции: первый раз компилируется с ключем -fprofile-generate, а во второй раз - -fprofile-use. Но при втором проходе сборка вываливается с ошибкой о несоответствии символов. И хотелось бы получить помощь в решении данной проблемы у сообщества.

Собственно, патч для /usr/lib/portage/bin/emake:

25c25,53
< exec ${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
---
> # Backup of old make string
> #exec ${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
>
> PORTAGE_BIN_PATH="${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"
> PORTAGE_PYM_PATH="${PORTAGE_PYM_PATH:-/usr/lib/portage/pym}"
> source "${PORTAGE_BIN_PATH}/isolated-functions.sh" &>/dev/null
>
> # New implementation with profiling on compilation support
> if [[ $WANT_PROFILING != 0 ]] ; then
> CFLAGS_TMP=${CFLAGS}
> ${MAKE:-make} CFLAGS="${CFLAGS_TMP} -fprofile-generate" ${MAKEOPTS} ${EXTRA_EMAKE} "$@" &&
> ${MAKE:-make} CFLAGS="${CFLAGS_TMP} -fprofile-use -Wcoverage-mismatch" ${MAKEOPTS} ${EXTRA_EMAKE} "$@" || ERR_TMP_VAR=1
> CFLAGS=${CFLAGS_TMP}
> unset -v CFLAGS_TMP
> if [[ $ERR_TMP_VAR == 1 ]] ; then
> unset -v ERR_TMP_VAR
> if [[ $WANT_PROFILING == 2 ]] ; then
> exit 1
> elif [[ $WANT_PROFILING == 1 ]] ; then
> ewarn "Failed compiling with profiling data support."
> ewarn "Falling back to compilation w/o of this feature."
> ${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
> else
> die "Wrong argument of variable WANT_PROFILING. Check your make.conf file."
> fi
> fi
> else
> exec ${MAKE:-make} ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
> fi

Изображение пользователя Gremlin.

дяденька, да вы

дяденька, да вы маньяк)
__________________________________________________________________________________
IRC:#glug, /query Gremlin

По таким вопросам нужно

По таким вопросам нужно консультироваться на http://forums.gentoo.org