Bug 27461

Summary: Неотключаемый _FORTIFY_SOURCE
Product: Sisyphus Reporter: Michael Shigorin <mike>
Component: gcc4.6Assignee: Sergey Bolshakov <sbolshakov>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P3 CC: glebfm, lav, led, sbolshakov
Version: unstable   
Hardware: all   
OS: Linux   
URL: http://lists.altlinux.org/pipermail/devel/2012-June/194600.html
Attachments:
Description Flags
binutils-build-as-needed.diff none

Description Michael Shigorin 2012-06-18 17:30:49 MSK
Created attachment 5497 [details]
binutils-build-as-needed.diff

На gcc 4.6 (например, gcc4.6-4.6.3-alt2) воспроизводится следующее:

$ touch a.h
$ gcc -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -v -E -dM a.h 2>/dev/null |
grep FORTIFY
#define _FORTIFY_SOURCE 2

Хотя ожидалось бы получить 0, как на

Как это было на gcc4.5-4.5.3-alt3
$ gcc -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -v -E -dM a.h 2>/dev/null |
grep FORTIFY
#define _FORTIFY_SOURCE 0   

Таким образом получается, что отключить его невозможно.

"Это blocker для сборки glibc любой версии. :(" -- ldv@

Предлагается следующая комбинация:
- в gcc ожидается и обрабатывается дополнительная переменная окружения,
- которая штатно выставляется в rpm и может быть перекрыта в спеке.

Аналогично и применительно к binutils про --as-needed (пример прилагается).
Comment 1 Dmitry V. Levin 2012-06-18 17:33:51 MSK
$ rpmquery --lastchange gcc4.6
* Fri Jun 15 2012 Sergey Bolshakov <sbolshakov@altlinux> 4.6.3-alt3
- fixed enforced FORTIFY_SOURCE with no opt-out