[OpenIndiana-discuss] When this misery end?

Aurélien Larcher aurelien.larcher at gmail.com
Sun Jan 10 18:45:35 UTC 2021


On Sun, Jan 10, 2021 at 6:55 AM Hung Nguyen Gia via openindiana-discuss <
openindiana-discuss at 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 at openindiana.org
> https://openindiana.org/mailman/listinfo/openindiana-discuss
>


-- 
---
Praise the Caffeine embeddings


More information about the openindiana-discuss mailing list