#41
|
|||
|
|||
flow-tools
Victor Sudakov написал(а) к Eugene Grosbein в Jan 17 13:48:50 по местному времени:
Dear Eugene, 22 Jan 17 05:51, you wrote to me: EG>>> Проблема, конечно, есть, но патч в таком виде вряд ли примут. VS>> Разобраться глубже мне знаний не хватит. Не примут так не примут. EG> В https://clang.llvm.org/get_started.html читаем: EG> The 'clang' driver is designed to work as closely to GCC as possible EG> to maximize portability. The only major difference between the two is EG> that Clang defaults to gnu99 mode while GCC defaults to gnu89 mode. If EG> you see weird link-time errors relating to inline functions, try EG> passing -std=gnu89 to clang. EG> И таки да, это помогает. Однострочный патч и всё собирается: EG> - --- net-mgmt/flow-tools/files/patch-configure.orig 2017-01-22 EG> 06:49:30.552992000 +0700 EG> +++ net-mgmt/flow-tools/filespatch-configure 2017-01-22 EG> 06:49:35.656530000 +0700 @@ -5,7 +5,7 @@ EG> -CFLAGS="-g -Wall" EG> -+CFLAGS="-fPIC" EG> ++CFLAGS="-fPIC -std=gnu89" Подтверждаю, так собирается. EG> Запули его в свой PR, не забудь поставить галку obsoletes А ты сам его не запулишь в мой PR, тебе честь будет? Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#42
|
|||
|
|||
Re: flow-tools
Eugene Grosbein написал(а) к Victor Sudakov в Jan 17 14:10:46 по местному времени:
22 янв 2017, воскресенье, в 14:48 NOVT, Victor Sudakov написал(а): VS> Подтверждаю, так собирается. EG>> Запули его в свой PR, не забудь поставить галку obsoletes VS> А ты сам его не запулишь в мой PR, тебе честь будет? У меня этой "чести" уже over 333 PR-а... Добавил, хотя я не могу обсолетить чужие патчи. Плюс надо было с самого начала в CC List этого PR добавить маинтейнера порта, чтобы к нему все комментарии приходили. Eugene -- Поэты - страшные люди. У них все святое. --- slrn/1.0.2 (FreeBSD) |
#43
|
|||
|
|||
flow-tools
Victor Sudakov написал(а) к Eugene Grosbein в Jan 17 15:49:26 по местному времени:
Dear Eugene, 22 Jan 17 14:10, you wrote to me: VS>> Подтверждаю, так собирается. EG>>> Запули его в свой PR, не забудь поставить галку obsoletes VS>> А ты сам его не запулишь в мой PR, тебе честь будет? EG> У меня этой "чести" уже over 333 PR-а... Добавил, хотя я не могу EG> обсолетить чужие патчи. Я сделал. EG> Плюс надо было с самого начала в CC List EG> этого PR добавить маинтейнера порта, чтобы к нему все комментарии EG> приходили. Черт, я полагал, что если в описании порта поставить "origin/portname:", то оно само маинтейнера оповещает. Victor Sudakov, VAS4-RIPE, VAS47-RIPN --- GoldED+/BSD 1.1.5-b20160322-b20160322 |
#44
|
|||
|
|||
Re: flow-tools
Alex Korchmar написал(а) к Eugene Grosbein в Jan 17 11:58:04 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: EG> to maximize portability. The only major difference between the two is that EG> Clang defaults to gnu99 mode while GCC defaults to gnu89 mode. еще бы кто осилил прочитать оба и разобраться, правильное ли это поведение. EG> И таки да, это помогает. Однострочный патч и всё собирается: просто он точно так же не лечит проблему, а загоняет мусор под коврик. Но идею надо взять на заметку, вероятно, это не единственное чем они различаются. > Alex --- ifmail v.2.15dev5.4 |
#45
|
|||
|
|||
Re: flow-tools
Konstantin Stefanov написал(а) к Alex Korchmar в Jan 17 13:29:12 по местному времени:
From: Konstantin Stefanov <cstef@mail.ru> On 21.01.2017 18:36, Alex Korchmar wrote: > Eugene Grosbein <Eugene.Grosbein@f1.n5006.z2.fidonet.org> wrote: > > VS>>> Помогло, спасибо. > VS>>> https://bugs.freebsd.org/bugzilla/sh....cgi?id=216317 > AK>> учти, что скорее всего это неправильное решение > EG> +1 > EG> Проблема, конечно, есть, но патч в таком виде вряд ли примут. > он ничего не портит - в смысле, это проблема в руках автора, просто gcc > такие "инлайны" автоматически игнорирует, все для удобства пользователей с > кривыми руками. > Репортить надо в llvm, что у них компилятор недостаточно изогнут. > Завтра я объявлю переменную register, а он посчитает что регистров не хватило, > и выведет мне стопиццот неверных сообщений о том что переменная вообще не > определена? inline - точно такой же хинт для компилятора. Не совсем хинт. inline по стандарту (С99 и выше) говорит, что для такой функции не надо выдавать внешний символ. clang тут себя ведет по стандарту, отчего и ошибка. Чтобы внешний символ появился, нужно написать extern inline. Но поскольку в стандарте inline появился поздно, в gnu успели придумать свое, что не пошло в стандарт один в один. http://stackoverflow.com/questions/216510/extern-inline Единственный переносимый способ - писать в .h-файле static inline. А с точки зрения того, инлайнить функцию или нет - inline действительно хинт. Да и не всякую функцию можно заинлайнить. -- Константин Стефанов Flying isn't dangerous. Crashing is what's dangerous. --- ifmail v.2.15dev5.4 |
#46
|
|||
|
|||
Re: flow-tools
Alex Korchmar написал(а) к Konstantin Stefanov в Jan 17 15:20:17 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Konstantin Stefanov <cstef@mail.ru> wrote: KS> Не совсем хинт. inline по стандарту (С99 и выше) говорит, что для такой KS> функции не надо выдавать внешний символ. clang тут себя ведет по а, то есть кто-то его все же читал, йасно. Довольно неожиданный побочный эффект. KS> А с точки зрения того, инлайнить функцию или нет - inline действительно KS> хинт. Да и не всякую функцию можно заинлайнить. ну просто это стандартно-привычное поведение си-компилятора, совет послушать и сделать наоборот...э...как получится, в общем. У gcc, как обычно, есть дополнительный флаг, без которого он все инлайны дублирует неинлайновыми копиями чисто вот на всякий случай, вдруг откуда-то позовут. > Alex --- ifmail v.2.15dev5.4 |
#47
|
|||
|
|||
Re: flow-tools
Konstantin Stefanov написал(а) к Alex Korchmar в Jan 17 16:21:49 по местному времени:
From: Konstantin Stefanov <cstef@mail.ru> On 23.01.2017 15:20, Alex Korchmar wrote: > KS> А с точки зрения того, инлайнить функцию или нет - inline действительно > KS> хинт. Да и не всякую функцию можно заинлайнить. > ну просто это стандартно-привычное поведение си-компилятора, совет послушать > и сделать наоборот...э...как получится, в общем. У gcc, как обычно, есть > дополнительный флаг, без которого он все инлайны дублирует неинлайновыми > копиями чисто вот на всякий случай, вдруг откуда-то позовут. Гнушники, когда делали свой inline (за 10 лет до стандарта) подумали: а давайте мы сделаем inline чисто хинтом. Т.е. его присутствие подскажет компилятору, что можно заинлайнить, но само по себе ничего не сломает. Никаких флагов, по умолчанию. В принципе разумно в отсутствие стандарта. А для вариант "чисто инлайн" оставили static inline. А те, кто делал стандарт, решили, что нефиг, инлайн так инлайн, и нефиг такую функцию вообще экспортировать. А уж если хочешь еще и копию на экспорт, добавь extern, что типа ты согласен, что будет версия для экспорта в любом случае. Это вроде примерно то же, что ты сказал, только я про флаг не понял, вроде в этом месте у gcc никаких доп флагов нет, разве только переключить стандарт. -- Константин Стефанов Беря интеграл, помни: он не твой, а Римана. --- ifmail v.2.15dev5.4 |
#48
|
|||
|
|||
Re: flow-tools
Alex Korchmar написал(а) к Konstantin Stefanov в Jan 17 13:46:50 по местному времени:
From: Alex Korchmar <noreply@linux.e-moe.ru> Konstantin Stefanov <cstef@mail.ru> wrote: KS> Это вроде примерно то же, что ты сказал, только я про флаг не понял, у gcc стандартное поведение - наткнувшись на inline и осилив его инлайновость, все равно рядом положить обычную функцию - в том числе и для того, чтобы было что потом отложить в .a Есть флаг, делающий инлайны строго инлайновыми (если осилили) - соответственно, линковать становится просто нечего. > Alex --- ifmail v.2.15dev5.4 |