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 |