Gentoo Archives: gentoo-dev

From: Zac Medico <zmedico@g.o>
To: gentoo development <gentoo-dev@l.g.o>
Subject: [gentoo-dev] [RFC] Multilib ABI identifiers for NEEDED.ELF.2 (GLEP 64) and binary package soname dependencies
Date: Sat, 03 Jan 2015 09:24:58
Message-Id: 54A7B560.1040303@gentoo.org
1 Hi,
2
3 While research requirements for binary package soname dependencies [1],
4 I found that the NEEDED.ELF.2 data that portage generates contains
5 insufficient information to uniquely distinguish all of the multilib
6 ABIs that may be present on a given system [2]. In order to correctly
7 handle multilib ABIs for binary package soname dependencies,
8 preserve-libs, and other possible applications involving GLEP 64 [1], we
9 will need more information than is currently recorded in NEEDED.ELF.2.
10
11 In order to solve this problem, I propose that we extend NEEDED.ELF.2 to
12 include a new field containing a multilib ABI identifier. The extension
13 will be backward-compatible, and NEEDED.ELF.2 will only need to be
14 regenerated on systems with multilib ABIs that are otherwise
15 indistinguishable (multilib x32 and mips systems).
16
17 The naming convention for the multilib ABI identifiers can be derived
18 from the set of abi_* USE flags that has been established by the
19 gx86-multilib project [4]. For example, if we exclude the abi_ prefix,
20 and apply this convention to all supported architectures, then the
21 complete set of multilib ABI identifiers will be as follows:
22
23 alpha_{32,64}
24 arm_{32,64}
25 hppa_{32,64}
26 ia_{32,64}
27 m68k_{32,64}
28 mips_{eabi32,eabi64,n32,n64,o32,o64}
29 ppc_{32,64}
30 s390_{32,64}
31 sh_{32,64}
32 sparc_{32,64}
33 x86_{32,64,x64}
34
35 The ABIs referenced by some of the above *_32 and *_64 identifiers may
36 be imaginary, but they are listed anyway, since the goal is to establish
37 a naming convention that is as consistent and uniform as possible. The
38 OS is notably absent from these identifiers, since OS-independence is
39 one of the goals. The assumption is that, for a given installation, we
40 are only interested in tracking multilib ABIs for a single OS.
41
42 I have attached a python script to bug 534206 [2] that can serve as a
43 reference implementation, demonstrating how a file's ELF header can be
44 used to compute a suitable multilib ABI identifier.
45
46 Please respond with any feedback that you may have about this proposal.
47
48 [1] http://thread.gmane.org/gmane.linux.gentoo.devel/94145
49 [2] https://bugs.gentoo.org/show_bug.cgi?id=534206
50 [3] https://wiki.gentoo.org/wiki/GLEP:64
51 [4] https://wiki.gentoo.org/wiki/Gx86-multilib
52 --
53 Thanks,
54 Zac

Replies