Simon McVittie dixit:

>On Wed, 05 Jul 2023 at 17:22:14 +0100, Wookey wrote:
[…]
>> i.e we could keep the existing i386 for the gamers and have i386t64
>> (or whatever we call it) for ongoing use of i386 as a real OS.
>
>On Fri, 09 Jun 2023 at 16:39:38 +0000, Thorsten Glaser wrote:
>> Ideally we’d keep the old i386 around for legacy binary-only libraries
>> and executables and add an i586 architecture with a differing dynamic
>> linker path
>
>These are essentially the same suggestion, and if there are enough

Right. However, my suggestion involves *reducing* the architecture
baseline again to make it accessible to more real-existing systems.
But that’s orthogonal from the rest. (In fact, we might even want
to do that for both.)

>Because legacy binaries already "know" that the backwards-compatible
>architecture is labelled i386 and i?86-linux-gnu with its dynamic linker

Oh, i?86-linux-gnu is a good point I had not considered.

>architecture would need to have a new dpkg architecture name, multiarch
>tuple, GNU tuple (i?86-linux-gnut64?) and canonical ELF linker path.

Definitely (and let’s just use the multiarch path for the ELF linker).

Bit of bikeshedding on the name, of course. timet64 (or a shortened
version) is a possibility but I’d also want off_t to be 64 bit in it
like the BSDs have been doing for decades, for example. Ideas welcome,
but it’s not important upfront.

>If the new architecture is fully co-installable and distinguishable via
>ELF flags (like the way amd64, i386 and x32 are), then the procedure to

It will unfortunately have to be more than just how these three differ.

i386 is ELF32 (ELFCLASS32) with e_machine EM_386 and ELFOSABI_LINUX
or possibly ELFOSABI_NONE(?).

amd64 is ELF64 (ELFCLASS64) with e_machine EM_X86_64.

x32 is ELF32 (ELFCLASS32) with e_machine EM_X86_64.

The new architecture would also have to be ELFCLASS32 and EM_386.
Maybe we can distinguish them using e_flags… using a new EI_OSABI
or, worse, e_machine sounds bad.

How do we distinguish arm, armel and armhf? They all use EM_ARM
probably (armeb is probably distinguished via ELFDATA2MSB).

>"crossgrade" core system packages to it. If it isn't distinguishable by
>ELF flags (so the dynamic linker would attempt to load i386t64 libraries
>into an i386 process or vice versa, and sometimes crash as a result)

I would like for things to be coïnstallable, of course. But why would
the dynamic linker attempt to load the respective foreign libraries…
oh right, not all are in the M-A path yet (on my box, they are, but
legacy i386 systems would not have that).

So we need a way to distinguish them in the ELF header and possibly
also patch the i386 loader to check the new bit? field? note? and
not load the solib if set.

We’ll also need a cpp define, like we have…

#if defined(__amd64__) && defined(__ILP32__)
// x32
#if defined(__amd64__) && !defined(__ILP32__)
// amd64

… and 「echo | gcc -m32 -E -dD - | less」 does not yet have anything
suitable. Either patch it into gcc… (I’ve patched gcc/config/**.h
files before) or… apparently, /usr/include/stdc-predef.h is included
by recent GCC, if that were in the M-A path it might work.

Is there any cross-distro effort for such a thing that we’d need to
coordinate with?

>(It's perhaps also worth noting that it's possible to upgrade from
>i386 to amd64 without a net increase in e-waste by switching from i386
>hardware to older amd64 hardware that has already been discarded by its
>original owner: I'm typing this into a second-hand ex-corporate Lenovo
>T480s, built in 2018 according to its serial number label, and the X220
>that was previously very popular with DDs was a UEFI-capable amd64 from
>around 2012.)

Right, that’s possible for part of the use cases, and not a bad
idea anyway.

(Radical idea: application and framework developers ought to still
test their things on low-spec machines, to get a feeling for just
how much bloat they introduce…)

bye,
//mirabilos
-- 
<cnuke> den AGP stecker anfeilen, damit er in den slot aufm 440BX board passt…
oder netzteile, an die man auch den monitor angeschlossen hat und die dann für
ein elektrisch aufgeladenes gehäuse gesorgt haben […] für lacher gut auf jeder
LAN party │ <nvb> damals, als der pizzateig noch auf dem monior "gegangen" ist

Reply via email to