On Sun, Jan 10, 2021 at 6:55 AM Hung Nguyen Gia via openindiana-discuss < openindiana-discuss@openindiana.org> wrote:
> Unlike other systems, Illumos is a weirded platform! You have a 64 bit OS > but the compiler by default will generate 32 bit binaries! The linker by > default link 32 bit binaries! This has caused endless of troubles for > people wanted to have their software working on your platform and the > porters wanted to port software to your platform! I have asked many people, > apart from the reason you are being a minor platform ('outdated', 'dead > OS', 'too little market share',...) this insanity is the second reason why > they all afraid! > The reason is simple, historically the compiler and toolchain would default to the least common denominator. In this case there was not really a question of right or wrong but a matter of convention. Solaris defines an Instruction Set Architecture (ISA) which may be supplemented with processor-specific extensions. In our case the architecture is i386 and amd64 is seen as an extension. The toolchain for a given ISA would therefore default to 32-bit (the least common denominator) or use extensions if instructed to do so with flags. This has been the convention for Solaris on sparc and i386. Alan would be able to explain this better than I do. This was also an approach chosen on at least some IRIX versions where some workstations with MIPS R10K and dedicated ASICS would use optimized binaries with such support. The path chosen by most Linux distributions was to consider amd64 (later renamed x86_64) as a different architecture and therefore distribution pure 64-bit. However Debian for instance discovered rather soon that they had to provide 32-bit libraries for compatibility and retrofitted the "lib32" libraries, and later on delivered libraries in subdirectories based on the platform triplet. So IMHO the Solaris approach made more sense, since you had to specify which ISA and which standard compliance were intended. On the contrary Linux distributions relied often on defaults guided by convenience and selecting the "standard of the day", this has changed a lot in recent years. However, one could argue that 32-bit is not relevant anymore and that the least common denominator should be replaced by the actual intended architecture: 64-bit in this case. Therefore I took the liberty of selecting 64-bit code generation by default since I packaged gcc-9, and kept the same rule for gcc-10. So your complaint is not founded at all: we are transitioning as fast as time permits. Some of the issues with the migration to gcc-10 was indeed the assumption the build system made on the defaut bitness of generated binaries. I fixed about a hundred of such issues back in spring last year. Most of your issues come from incorrect assumptions: this is often the case when you are used to one type of system and some of the problems you mention denote a lack of experience with UNIX in a broad sense. I had the same expectation when I started my Linux/UNIX journey 15 years ago as a student in engineering. However I was very curious and willing to learn the differences between systems so I installed and played with Debian, OpenBSD, NetBSD, FreeBSD, Solaris 7/8/9/10, IRIX, on various machines including SPARC and Alpha workstations. Talking and throwing anathema is not really something I am interested in. I'd rather work on contributing and take a constructive approach. I was a member of a Linux user group from 2003 to 2008 where BSD/Solaris users were often mocked for using inferior systems: I was once called an idiot for installing NetBSD and Solaris on my machines. Interestingly whenever the discussion became a bit technical and concrete about what they did not like about BSD/Solaris/IRIX most Linux proselytes in the group would actually admit that they had never run anything else than Debian or Red Hat :) The Slackware guru in the group always sided with BSD people though :P We would eventually reconcile around a few bottles of beer and a few pizzas :D In any case, as other people mentioned we have a build system to set all the flags automatically if you are not familiar with UNIX. If you choose to compile things outside this environment then you need some minimal knowledge of the environment. These things, while they could be made more convenient, are luckily fairly trivial and most of us deal with them. We talked about this some months ago and unfortunately I got sick and could not do the gcc-10 migration. So here we are again with you complaining :P :P :P Cheers Aurelien > When would we could be as normal as other 64 bit system, when people no > longer have to pass CC='gcc -m64' CXX='g++ -m64' before any configure > scripts with a very high rate of failure just to have 64 bit binaries > generated, I wonder? > > _______________________________________________ > openindiana-discuss mailing list > openindiana-discuss@openindiana.org > https://openindiana.org/mailman/listinfo/openindiana-discuss > -- --- Praise the Caffeine embeddings _______________________________________________ openindiana-discuss mailing list openindiana-discuss@openindiana.org https://openindiana.org/mailman/listinfo/openindiana-discuss