Решено: Насколько болезненно? (-fomit-frame-pointer)

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Аватара пользователя
SpeedHack
Сообщения: 116

Решено: Насколько болезненно?

Сообщение SpeedHack »

В общем... Не знаю почему, но у меня в make.conf написано:

Код: Выделить всё

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k8 -O2 -pipe -fomit-frame-pointer"


Здесь http://gentoo-wiki.com/Safe_Cflags не рекомендуют использовать -fomit-frame-pointer для x64 профиля. Насколько это болезненно, на что влияет и что делать? Уже успел сделать emerge mc, emerge vim :)
Спасибо сказали:
Аватара пользователя
Sandle_X
Сообщения: 117
ОС: Gentoo Base System

Re: Решено: Насколько болезненно?

Сообщение Sandle_X »

Врятли это будет болезненно...
/The information should be free.../ <Gentoo Base System version 1.12.10>
Конференция форума в Jabber: linuxforum@conference.jabber.ru
Спасибо сказали:
Аватара пользователя
Juliette
Сообщения: 5058
Статус: ROSA Lab
ОС: Ubuntu LTS, Mandriva 2011

Re: Решено: Насколько болезненно?

Сообщение Juliette »

Sandle_X писал(а): ↑
03.11.2007 00:23
Врятли это будет болезненно...

....чик - и всё!
(сорри, не удержалась)
Спасибо сказали:
Mellon
Сообщения: 655
Статус: Powered by Gentoo
ОС: Gentoo

Re: Решено: Насколько болезненно?

Сообщение Mellon »

Некоторые пакеты могут не компилироваться, или работать нестабильно.
Вы всегда можете убрать этот флаг для таких пакетов прописав CFLAGS в /etc/portage/env/category/name
Некоммерческий файлообмен не может сравниваться с кражей, так как кража лишает кого-то возможности использовать украденный объект. ©
--------------------
Переворачиватель пингвинов
Спасибо сказали:
Аватара пользователя
SpeedHack
Сообщения: 116

Re: Решено: Насколько болезненно?

Сообщение SpeedHack »

Тупо убрал этот -fomit-frame-pointer и перекомпилил mc и vim :)
Спасибо сказали:
Аватара пользователя
nadge
Сообщения: 1519
ОС: ArchLinux, Ubuntu 10.10

Re: Решено: Насколько болезненно?

Сообщение nadge »

А я вот наоборот добавил эксперимента ради. Вчера полчаса читал статьи и т.п. и так и не понял, надо оно или нет. При случае погляжу в дизассемблере.
Спасибо сказали:
Аватара пользователя
SpeedHack
Сообщения: 116

Re: Решено: Насколько болезненно?

Сообщение SpeedHack »

Ну, в wiki рекомендуют использовать эту опцию только на x86 Gentoo. А у меня x64 Gentoo. И нет никаких оснований для экспериментов, ибо пока что я зеленый в Gentoo и вообще в Linux :) Лишние проблемы пока что не нужны :)
Спасибо сказали:
Civil
Сообщения: 199
ОС: Gentoo Current

Re: Решено: Насколько болезненно?

Сообщение Civil »

http://gentoo-wiki.com/CFLAGS_matrix - там вроде есть краткое описание данного цфлага. В принципе, они могли не указать его, т.к. не на всех архитектурах от него вообще есть толк - если есть желание понять - поищи на сайте АМД рекомендуемые цфлаги. В одной из ПДФок было.
"Кто управляет прошлым, тот управляет будущим; кто управляет настоящим, тот управляет прошлым" (Д. Оруэлл "1984")
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: Насколько болезненно?

Сообщение serzh-z »

SpeedHack писал(а): ↑
02.11.2007 19:43
Здесь http://gentoo-wiki.com/Safe_Cflags не рекомендуют использовать -fomit-frame-pointer для x64 профиля
Не увидел - где же это там *не рекомендуют* не использовать -fomit-frame-pointer для AMD64...

Хотел бы немного пояснить ситуацию с OFP.

Удаление ассемблерного кода (в некоторых, но не во всех, функциях) для создания кадра стека (того самого, что учебники называют прологом и эпилогом функции, и выглядит "push %ebp" и "mov %esp,%ebp" с последующим возвратом стековых регистров на место, или же "enter" и "leave") создаст трудности при отладке (и при посылке багрепортов) программ на некоторых платформах. Например x86 (отладчик просто будет не в состоянии развернуть стек из-за отсутствия этих самых стековых кадров). О чём честно и сказано по вышеприведённой ссылке. К сожалению не знаю деталей, но, подозреваю, что на AMD64 (и, наверное, других архитектурах, навроде PPC и т.д.) используется несколько другой механизм при вызове функций, благодаря приятному наличию дополнительных регистров, - потому указание OFP на этой платформе никак не сказывается на отладке программ. И именно по этой причине любой из параметров оптимизации -O автоматически включает OFP при march=k8 и т.д..

Итак, отсутствие кода, создающего, кадры может незначительно (несколько байтов,.. может быть даже килобайтов в очень больших программах) уменьшить размер приложения (и, в большинстве случаев, увеличить её скорость работы) на x86, отнять возможность посылать полезные багрепорты разработчикам (чтобы послать репорт - нужно будет убедиться, что падение приложения стабильно воспроизводится, пересобрать его без влага OFP, воспроизвести падение и тлько затем послать багрепорт с дампом стека). Из чего следует, что для непрограммистов (да и для многих программистов) и людей, которые, не озабочены тестированием и посылкой разработчикам сообщений об ошибках, наличие -fomit-frame-pointer будет лишь на руку. И уж тем более это никак не скажется на стабильности и сборке программы.
Спасибо сказали:
Аватара пользователя
SpeedHack
Сообщения: 116

Re: Решено: Насколько болезненно?

Сообщение SpeedHack »

Не увидел - где же это там *не рекомендуют* не использовать -fomit-frame-pointer для AMD64...


Читай между строк © моя учительница истории :D Тут получается, все запрещено, что не разрешено :) А в секции x86_64 для Atlon 64 я не наблюдаю -ffp, поэтому сделал такие выводы :)

Спасибо за содержательный ответ, но на всякий случай избавил свой make.conf от этой строчки :)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Решено: Насколько болезненно?

Сообщение serzh-z »

SpeedHack писал(а): ↑
04.11.2007 15:44
избавил свой make.conf от этой строчки
Ну-ну. Правильно. Только оно там осталось.
Спасибо сказали:
Аватара пользователя
SpeedHack
Сообщения: 116

Re: Решено: Насколько болезненно?

Сообщение SpeedHack »

Ну-ну. Правильно. Только оно там осталось.


Ну, я то тогда этого не знал :)
Спасибо сказали: