Opened 9 years ago
Closed 8 years ago
#12532 closed enhancement (fixed)
Incorporation of GCC 5
Reported by: | korli | Owned by: | korli |
---|---|---|---|
Priority: | normal | Milestone: | Unscheduled |
Component: | Build System | Version: | R1/Development |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Provisioning ticket for GCC 5 to track activities and see if it works well.
Current release is 5.3
Attachments (1)
Change History (13)
comment:1 by , 9 years ago
by , 9 years ago
Attachment: | kernel_debugger-596-debug-10-04-2016-10-56-04.report added |
---|
kernel_debugger debug report
comment:2 by , 9 years ago
Alas kernel_debugger crashes now in malloc()
called by the libsupc++ initialization.
comment:3 by , 9 years ago
The cause appears to be that libsupc++ doesn't link against libroot, but uses malloc()
already in static initialization code. So, if a program links against libsupc++ before libroot, the memory allocator has not been initialized at that point yet.
comment:4 by , 9 years ago
The relevant lines of the GCC recipe: {{{
# Build a shared libsupc++ from libsupc++.a (hacking the gcc build system # to build a shared libsupc++ yields pretty much the same result, so we # use this simpler approach). cd $objectsDir/$effectiveTargetMachineTriple/libstdc++-v3/libsupc++ gcc -nodefaultlibs -shared -o .libs/libsupc++.so -Xlinker --whole-archive .libs/libsupc++.a
}}}
comment:5 by , 9 years ago
I can fix the GCC recipe to link against libroot, but I wonder if providing libsupc++ as a shared library should simply be avoided: it's tightly linked to libstdc++, so libstdc++ should include libsupc++, and libsupc++.a should be used by kernel_debugger. I don't remember well what leads to the current setup.
comment:6 by , 9 years ago
Having separate shared libsupc++ and libstdc++ is the standard set-up AFAIK. The former is significantly smaller, so programs that don't use the STL don't have to link against the larger library, thus saving some memory and start-up time. I'm not aware of any other reason for keeping the libraries separate.
follow-up: 8 comment:7 by , 9 years ago
OK, though GCC doesn't provide a shared libsupc++ by default, not so standard set-up in my book.
Our use of libsupc++ is somewhat questionable, for instance, libdevice links against libbe and libsupc++. libbe links against libstdc++. this leads to two copies of libsupc++ in memory (the one in libstdc++ and the one in libsupc++). Or do I miss something? IMO linking against libsupc++ makes only sense for apps as kernel_debugger.
comment:8 by , 9 years ago
Replying to korli:
OK, though GCC doesn't provide a shared libsupc++ by default, not so standard set-up in my book.
OK, that seems to have changed since the earlier gcc 4 versions. At least on Linux a shared libsupc++ was available back then. That no longer seems to be the case, though.
Our use of libsupc++ is somewhat questionable, for instance, libdevice links against libbe and libsupc++. libbe links against libstdc++. this leads to two copies of libsupc++ in memory (the one in libstdc++ and the one in libsupc++). Or do I miss something?
No, you're right. Consequently the shared libstdc++ would link against the shared libsupc++ instead of including it, so that there wouldn't be such a duplication. But I don't think doing it this way (unlike everyone else) is worth the hassle. I'd just drop the shared libsupc++ and change the Haiku build system to linking against libstdc++. In case external packages use the shared libsupc++, a symlink to libstdc++ could be provided temporarily (only in lib/, though, not develop/lib/).
comment:9 by , 9 years ago
I made the change in the build system: hrev50251. Hopefully what you had in mind. Will change the gcc_syslibs package next.
comment:12 by , 8 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Closing, what doesn't yet build with gcc5 can also be left out.
I'm now ready to push the merge of GCC 5.3 in our buildtools branch. This implies providing updated syslibs though. I've built x86 and x86_64 packages to be pushed at the same time. x86_gcc2 package should be ready by tomorrow. So far in my tests I haven't met problems (Beam, Webpositive continue to work). Packages depending on an exact version of GCC should be rebuilt (I think llvm does).
I've planned to upgrade on Friday, if nothing comes in between.