ipa-visibility TLC 2/n
Yufeng Zhang
Yufeng.Zhang@arm.com
Thu May 29 14:17:00 GMT 2014
Hi Honza,
I can confirm that with your commit r211045 the
arm-none-linux-gnueabi{hf} builds are OK now. Thanks for the fix.
Yufeng
On 05/28/14 22:56, Jan Hubicka wrote:
>> Any update?
>>
>> I've managed to generate a simple test case from
>> libstdc++-v3/src/c++98/strstream.cc which reproduces the issue on
>> ARM that Ramana has reported previously:
>>
>>
>> template<class _CharT> struct char_traits;
>>
>> template<typename _CharT, typename _Traits>
>> class basic_ios
>> {
>> };
>>
>> template<typename _CharT, typename _Traits = char_traits<_CharT> >
>> class basic_istream : virtual public basic_ios<_CharT, _Traits>
>> {
>> protected:
>> int _M_gcount;
>> virtual ~basic_istream()
>> { }
>> };
>>
>> class istrstream : public basic_istream<char>
>> {
>> virtual ~istrstream();
>> };
>>
>> istrstream::~istrstream()
>> {
>> }
>>
>> ------------------ CUT ------------------
>>
>> With an arm-none-linux-gnueabi gcc configured as:
>>
>> ./gcc/configure --target=arm-none-linux-gnueabi
>> --enable-gnu-indirect-function --enable-shared --with-arch=armv7-a
>> --with-fpu=vfpv3-d16 --with-float=softfp --with-arch=armv7-a
>> (irrelevant parts omitted)
>>
>> With the following command line options:
>>
>> -fdata-sections -O2 -fPIC -S ./test.cpp
>>
>> We'll see
>>
>> ./test.cpp:17:7: error: istrstream::_ZTV10istrstream.localalias.0
>> causes a section type conflict with istrstream::_ZTV10istrstream
>> class istrstream : public basic_istream<char>
>> ^
>> ./test.cpp:17:7: note: 'istrstream::_ZTV10istrstream' was declared here
>
> This seems to be same cause as on AIX - we do section for decl rather than
> original. The following patch seems to fix it. Does it allows bootstrap
> for you? (it doesn't for AIX. but that seems bug in output machinery)
>
> Index: varasm.c
> ===================================================================
> --- varasm.c (revision 210914)
> +++ varasm.c (working copy)
> @@ -1083,6 +1083,9 @@
> {
> addr_space_t as = ADDR_SPACE_GENERIC;
> int reloc;
> + symtab_node *snode = symtab_get_node (decl);
> + if (snode)
> + decl = symtab_alias_ultimate_target (snode)->decl;
>
> if (TREE_TYPE (decl) != error_mark_node)
> as = TYPE_ADDR_SPACE (TREE_TYPE (decl));
>>
>>
>> Yufeng
>
More information about the Gcc-patches
mailing list