#8093: Haiku build system using system libstdc++.so on Haiku ----------------------------+---------------------------- Reporter: leavengood | Owner: bonefish Type: bug | Status: new Priority: normal | Milestone: R1 Component: Build System | Version: R1/Development Resolution: | Keywords: libstdc++ Blocked By: | Blocking: Has a Patch: 0 | Platform: x86 ----------------------------+---------------------------- Description changed by leavengood: Old description: > I'm on a pure GCC4 Haiku. I'm not sure if that affects this issue though. > The revision is r41768. > > My Haiku source is completely up-to-date though, at r43193. > > I compiled and installed the latest GCC4 (4.5.3), where I had previously > had 4.4.4. I set 4.5.3 as the current GCC. I reconfigured my Haiku source > directory to make sure it was using the latest GCC. > > When building the notification_server, I received this error: > > {{{ > Link /Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/notification_server > /Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/NotificationView.o: > In function `NotificationView::SetText(float)': > NotificationView.cpp:(.text+0x114a): undefined reference to > `std::_List_node_base::_M_hook(std::_List_node_base*)' > NotificationView.cpp:(.text+0x135d): undefined reference to > `std::_List_node_base::_M_hook(std::_List_node_base*)' > collect2: ld returned 1 exit status > > rm -f "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/notification_server" > gcc -fno-strict-aliasing -fno-tree-vrp -Xlinker --no-undefined -Xlinker > -soname=_APP_ -nostdlib -Xlinker --no-undefined -o > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/notification_server" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/system/glue/arch/x86/crti.o" > "/boot/develop/abi/x86/gcc4/tools/gcc-4.5.3-haiku-111101/lib/gcc/i586-pc- > haiku/4.5.3/crtbegin.o" "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/system/glue/start_dyn.o" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/system/glue/init_term_dyn.o" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/AppGroupView.o" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/NotificationServer.o" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/NotificationView.o" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/NotificationWindow.o" > \ > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/kits/libbe.so" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/debug_1/kits/translation/libtranslation.so" > "/boot/system/lib/libstdc++.so" "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/libnotification.a" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/kits/locale/liblocale.so" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/kits/locale/liblocalestub.a" > "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/system/libroot/libroot.so" > "/boot/develop/abi/x86/gcc4/tools/gcc-4.5.3-haiku-111101/lib/gcc/i586-pc- > haiku/4.5.3/crtend.o" "/Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/system/glue/arch/x86/crtn.o" \ > > ...failed Link /Data/develop/haiku_svn/trunk/generated- > gcc4/objects/haiku/x86/release/servers/notification/notification_server > ... > > BUILD FAILURE: > ...failed updating 1 target(s)... > ...updated 4 target(s)... > > }}} > > Searching Google showed me someone else had run into this issue with GCC > 4.5 (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43882), and in his case > it was due to compiling with GCC 4.5 but linking against a system > libstdc++.so. If you look at the link line above, you can see it is using > /boot/system/lib/libstdc++.so. > > So it seems we have the same problem. When I updated my system > libstdc++.so with the one from GCC 4.5.3, the code linked fine. > > Now maybe my situation is unusual bit it seems like the build system > should make use of the libstdc++.so from the GCC it is building with, not > from the system. Even if the system is Haiku. New description: I'm on a pure GCC4 Haiku. I'm not sure if that affects this issue though. The revision is r41768. My Haiku source is completely up-to-date though, at r43193. I compiled and installed the latest GCC4 (4.5.3), where I had previously had 4.4.4. I set 4.5.3 as the current GCC. I reconfigured my Haiku source directory to make sure it was using the latest GCC. When building the notification_server, I received this error: {{{ Link /Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/notification_server /Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/NotificationView.o: In function `NotificationView::SetText(float)': NotificationView.cpp:(.text+0x114a): undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)' NotificationView.cpp:(.text+0x135d): undefined reference to `std::_List_node_base::_M_hook(std::_List_node_base*)' collect2: ld returned 1 exit status rm -f "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/notification_server" gcc -fno-strict-aliasing -fno-tree-vrp -Xlinker --no-undefined -Xlinker -soname=_APP_ -nostdlib -Xlinker --no-undefined -o "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/notification_server" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/system/glue/arch/x86/crti.o" "/boot/develop/abi/x86/gcc4/tools/gcc-4.5.3-haiku-111101/lib/gcc/i586-pc- haiku/4.5.3/crtbegin.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/system/glue/start_dyn.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/system/glue/init_term_dyn.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/AppGroupView.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/NotificationServer.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/NotificationView.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/NotificationWindow.o" \ "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/kits/libbe.so" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/debug_1/kits/translation/libtranslation.so" "/boot/system/lib/libstdc++.so" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/libnotification.a" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/kits/locale/liblocale.so" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/kits/locale/liblocalestub.a" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/system/libroot/libroot.so" "/boot/develop/abi/x86/gcc4/tools/gcc-4.5.3-haiku-111101/lib/gcc/i586-pc- haiku/4.5.3/crtend.o" "/Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/system/glue/arch/x86/crtn.o" \ ...failed Link /Data/develop/haiku_svn/trunk/generated- gcc4/objects/haiku/x86/release/servers/notification/notification_server ... BUILD FAILURE: ...failed updating 1 target(s)... ...updated 4 target(s)... }}} Searching Google showed me someone else had run into this issue with GCC 4.5 (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43882), and in his case it was due to compiling with GCC 4.5 but linking against a system libstdc++.so. If you look at the link line above, you can see it is using /boot/system/lib/libstdc++.so. So it seems we have the same problem. When I updated my system libstdc++.so with the one from GCC 4.5.3, the code linked fine. Now maybe my situation is unusual but it seems like the build system should make use of the libstdc++.so from the GCC it is building with, not from the system. Even if the system is Haiku. -- -- Ticket URL: <http://dev.haiku-os.org/ticket/8093#comment:1> Haiku <http://dev.haiku-os.org> Haiku - the operating system.