GCC: -march=(native,barcelona,amdfam10) [РЕШЕНО]

Всем доброго времени суток! =)

Занялся тут разбором оптимизаций gcc и обнаружил такую штуку, которой не могу найти объяснения.

делаю так:

export CFLAGS="-march=native -mtune=native -O2 pipe"
make clean && make -j4
md5sum ./arch/x86_64/boot/bzImage 
13e62e7909a8dd93735da95840020ab7  ./arch/x86_64/boot/bzImage

делаю так:

export CFLAGS="-march=amdfam10 -mtune=amdfam10 -O2 pipe"
make clean && make -j4
md5sum ./arch/x86_64/boot/bzImage 
22f87fc01573f42f2f1a06c48b681076  ./arch/x86_64/boot/bzImage

делаю так:

export CFLAGS="-march=barcelona -mtune=barcelona -O2 pipe"
make clean && make -j4
md5sum ./arch/x86_64/boot/bzImage 
653da1907be03e792588632e712a958e  ./arch/x86_64/boot/bzImage

команды вызваны подряд, т.е. конфиг не менял...
мне было интересно узнать какой профиль выбирает gcc при указании native, а получил...

в общем вопросы такие:
1. чем отличаются barcelona от amdfam10? (судя по документации это синонимы)
2. что всё-таки делает native? выбирает наиболее подходящий профиль оптимизации или генерит свой?
3. может это глюк и об этом стоит отписаться в багзилле?

Параноя :)

Ядро вкладывает в себя дату и время сборки и другие данные.

Поэтому мд5 хеш никогда не будет одинаковым

Working on Gentoo Linux for Asus P535 and Qtopia :-)

эта информация вкладывается в

эта информация вкладывается в любой бинарник?

А ещё я не уверен что

А ещё я не уверен что переменная CFLAGS для ядра имеет значение. AFAIK под како поцессор оптимизируется выбирается в самом конфиге ядра, а не опциями компилятора. Хотя тут я могу ошибаться.

перепровел эксепримент. взял

перепровел эксепримент. взял те же флаги + Athlon64, но брал контрольную сумму не самого ядра а пары модулей... контрольная сумма для каждого модуля с разными флагами полностью совпала...

гы =)

поискал Makefile, в котором выставляется архитектура проца... нашёл... поменял архитектуру с k8 на native... контрольная сумма модулей изменилась... приду домой буду тестить ядрышко с новой оптимизацией =)

Система сборки ядра

Система сборки ядра игнорирует CFLAGS. Вместо этого есть CFLAGS_KERNEL, использовать с осторожностью.

CFLAGS_KERNEL? оно тупо

CFLAGS_KERNEL?

оно тупо добавляет мои флаги в командную строку и в одной команде получается -march=k8 -march=native... интересно с каким из флагов соберется )))

К стати, ядро собранное с native на моём феноме заработало без всяких ошибок и загрузилось на секунду быстрее... теперь я вообще ничего прочитать не успеваю - пшик и всё, уже openrc трудится =) думаю, что для 2.6.30 это хороший результат =)

а ведь всё делается

а ведь всё делается просто:
согласно http://en.gentoo-wiki.com/wiki/CFLAGS
#gcc -c -Q -march=native --help=target

\\ вдруг кто наткнётся поиском

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".