[PATCH 12/13] libstdc++, libgfortran gthr workaround for musl
Kyrill Tkachov
kyrylo.tkachov@arm.com
Wed Apr 22 14:35:00 GMT 2015
On 22/04/15 14:17, Jeff Law wrote:
> On 04/20/2015 12:59 PM, Szabolcs Nagy wrote:
>> libgcc/gthr-posix.h uses weak reference logic to determine if libpthread
>> is linked into the application or not. This is broken unless there is
>> special workaround with libc internal knowledge and even then static
>> linking needs further manual link time workaround, so this was disabled
>> for os/generic in libstdc++v3 and for musl in libgfortran.
>>
>> The change minimizes the impact on other setups, but I think the weak
>> ref logic should be disabled by default, it is never entirely correct.
>> Conforming code can crash on a glibc setup too:
>>
>> $ cat a.cpp
>> #include <pthread.h>
>> void(*f)(void) = (void(*)(void))pthread_key_create;
>> int main(){}
>> $ g++ -static a.cpp -lpthread
>> $ ./a.out
>> Segmentation fault
>>
>> I reported this previously at
>> https://gcc.gnu.org/ml/gcc/2014-11/msg00246.html
>>
>>
>> libgfortran/Changelog:
>>
>> 2015-04-16 Szabolcs Nagy <szabolcs.nagy@arm.com>
>>
>> * acinclude.m4 (GTHREAD_USE_WEAK): Define as 0 for *-*-musl*.
>> * configure: Regenerate.
>>
>> libstdc++v3/Changelog:
>>
>> 2015-04-16 Szabolcs Nagy <szabolcs.nagy@arm.com>
>>
>> * config/os/generic/os_defines.h (_GLIBCXX_GTHREAD_USE_WEAK): Define.
>> * configure.host (os_include_dir): Set to "os/generic" for linux-musl*.
> OK. Please install on the trunk.
I've committed this on Szabolcs' behalf with r222329.
Kyrill
>
> jeff
>
More information about the Gcc-patches
mailing list