Bug 64898 - [5 Regression] qtgui-4.8.6 build error
Summary: [5 Regression] qtgui-4.8.6 build error
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 5.0
: P1 normal
Target Milestone: 5.0
Assignee: Jason Merrill
URL:
Keywords: ABI, wrong-code
: 65062 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-02-02 10:08 UTC by Markus Trippelsdorf
Modified: 2015-02-14 02:48 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2015-02-02 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Trippelsdorf 2015-02-02 10:08:02 UTC
qtgui-4.8.6 fails to build. During final libQtGui.so.4.8.6 link I get: 

.obj/release-shared/qdrawhelper_sse2.o: In function `_Z33qt_fetch_radial_gradient_templateI16QRadialFetchSimdI9QSimdSse2EEPKjPjPK8OperatorPK9QSpanDataiii':
qdrawhelper_sse2.cpp:(.text._Z33qt_fetch_radial_gradient_templateI16QRadialFetchSimdI9QSimdSse2EEPKjPjPK8OperatorPK9QSpanDataiii[_Z33qt_fetch_radial_gradient_templateI16QRadialFetchSimdI9QSimdSse2EEPKjPjPK8OperatorPK9QSpanDataiii]+0x273): undefined reference to `_Z12qt_memfill32'

markus@x4 test % cat qdrawhelper_sse2.ii
template <class>
void
qt_fetch_radial_gradient_template (int)
{
  extern void (*qt_memfill32)(int, int, int);
  qt_memfill32 (0, 0, 0);
}

void
qt_fetch_radial_gradient_sse2 ()
{
  qt_fetch_radial_gradient_template<int> (0);
}

gcc-5 mangles the extern function to _Z12qt_memfill32.
All other compilers mangle it to qt_memfill32.

markus@x4 test % g++ -O2 -c qdrawhelper_sse2.ii
markus@x4 test % nm qdrawhelper_sse2.o | grep qt_memfill32
                 U _Z12qt_memfill32
markus@x4 test % clang++ -O2 -c qdrawhelper_sse2.ii
markus@x4 test % nm qdrawhelper_sse2.o | grep qt_memfill32
                 U qt_memfill32
markus@x4 test % icpc -O2 -c qdrawhelper_sse2.ii
markus@x4 test % nm qdrawhelper_sse2.o | grep qt_memfill32
                 U qt_memfill32
markus@x4 test % /usr/x86_64-pc-linux-gnu/gcc-bin/4.9.2/g++ -O2 -c qdrawhelper_sse2.ii
markus@x4 test % nm qdrawhelper_sse2.o | grep qt_memfill32
                 U qt_memfill32
Comment 1 Andrew Pinski 2015-02-02 10:12:53 UTC
s/extern function/extern function pointer/

This is a variable of a function pointer type.
Comment 2 Jakub Jelinek 2015-02-02 11:00:26 UTC
Started with r214396.
Comment 3 Jason Merrill 2015-02-12 22:45:10 UTC
Author: jason
Date: Thu Feb 12 22:44:38 2015
New Revision: 220666

URL: https://gcc.gnu.org/viewcvs?rev=220666&root=gcc&view=rev
Log:
	PR c++/64898
	* mangle.c (write_mangled_name): Fix test for variable template
	instantiation.

Added:
    trunk/gcc/testsuite/g++.dg/abi/mangle65.C
Modified:
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/mangle.c
Comment 4 Jakub Jelinek 2015-02-12 23:00:06 UTC
Fixed, thanks.
Comment 5 Andrew Pinski 2015-02-14 02:48:59 UTC
*** Bug 65062 has been marked as a duplicate of this bug. ***