Hello!

The ssp check (gcc_cv_libc_provides_ssp) is glibc centric and the 
ssp implementation itself assumes that if ssp is provided by libc/ld 
combo, then the guard is for sure set up in TLS.

What would be an acceptable way to provide support for non-glibc/non-TLS?

1. provide 2 configure options, one that omits the above mentioned check 
and the other that disables ssp in TLS 
(GUARD_IS_NOT_IN_TLS) the latter being a guard in linux*.h, like
-#ifdef TARGET_LIBC_PROVIDES_SSP
+#if defined TARGET_LIBC_PROVIDES_SSP && !defined GUARD_IS_NOT_IN_TLS
 #define TARGET_THREAD_SSP_OFFSET blah
 #endif
2. replace the features.h grep w/ (or similar) with compiling a dummy test 
file, get the used ld.so and libc.so from there and do something like 
(works only for non-cross builds)
(nm -D --defined-only ld.so | grep __stack_chk_guard) && (nm -D 
--defined-only libc.so.x | grep __stack_chk_fail)
This would cover the non-glibc version.
I have no idea how to check in TLS if __stack_chk_guard is there.

Thanks, Peter

PS: please CC to me.

-- 
Peter S. Mazinger <ps dot m at gmx dot net>           ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08  BB6E C389 975E A5F0 59F2

Reply via email to