Build wine with gcc-4.3 and ssp

Stefan Reimer me at stefanreimer.de
Sat Jan 3 11:44:44 CST 2009


> On Fri, Jan 02, 2009 at 11:14:52PM +0100, Stefan Reimer wrote:
>> Hi,
>> to build wine using gcc 4.3 with enabled ssp (stack-smashing-protector)
>> the following patch must be applied to loader/preloader.c
>>
>> see gcc source ./gcc/config/i386/i386.c around line 24391
>>
>> /* For 32-bit code we can save PIC register setup by using
>>    __stack_chk_fail_local hidden function instead of calling
>>    __stack_chk_fail directly.  64-bit code doesn't need to setup any PIC
>> register, so it is better to call __stack_chk_fail directly.  */
>>
>> Patch:
>>
>> diff --git a/loader/preloader.c b/loader/preloader.c
>> index 5fcb974..1143972 100644
>> --- a/loader/preloader.c
>> +++ b/loader/preloader.c
>> @@ -163,6 +163,7 @@ void __bb_init_func(void) { return; }
>>
>>  /* similar to the above but for -fstack-protector */
>>  void *__stack_chk_guard = 0;
>> +void __stack_chk_fail_local(void) { return; }
>>  void __stack_chk_fail(void) { return; }
>>
>>  /* data for setting up the glibc-style thread-local storage in %gs */
>
> Hmm,
>
> why does this work for me on openSUSE then?
>
> The line:
> gcc -c -I. -I. -I../include -I../include    -Wall -pipe
> -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -W
> type-limits -Wpointer-arith  -march=i586 -mtune=i686 -fmessage-length=0
> -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funw
> ind-tables -fasynchronous-unwind-tables -g  -o preloader.o preloader.c
>
> works fine here. Are you passing in -fPIC?
>
> Ciao, marcus
>
>
>
Hi,
I am using gentoo hardened:

gcc (Gentoo Hardened 4.3.2-r7 p1.5, ssp, fortify, pie-10.2.0) 4.3.2
glibc 2.8

Using gcc -v gives:

 /usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.2/cc1 -quiet -v -I. -I.
-I../include -I../include -imultilib 32 preloader.c -D_FORTIFY_SOURCE=2
-fPIE -fstack-protector -fstack-protector-all -fno-strict-overflow -quiet
-dumpbase preloader.c -m32 -march=athlon64 -auxbase-strip preloader.o -O2
-Wall -Wdeclaration-after-statement -Wwrite-strings -Wtype-limits
-Wpointer-arith -version -fno-strict-aliasing -o - |
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.2/../../../../x86_64-pc-linux-gnu/bin/as
-V -Qy --32 -o preloader.o -

The hardened gcc specs brings in -fPIE, which is similiar to -fPIC.

So YES I do ;-)

Is this a problem ?

Cyas
Stefan






More information about the wine-patches mailing list