aboutsummaryrefslogtreecommitdiff
path: root/notes/embedded_binary_interface_data.txt
blob: ad99bbde84380150206867a86306fc6b3563d9a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

Would it be a good idea or not to include the interface of libraries into
the binary (.so/.dll) files themselves?

This would then have to include:
* the name and version of the library
* for each API-version:
    - function parameters and returns (names and types)
    - function constraints (if this is added)
    - struct/types
* interface dependencies on other libraries and their versions
* runtime dependencies on other libraries and their versions

Implementation details
----------------------

Regarding the ELF format, should be be a section or a segment?
Also, should it have SH_ALLOC or not?

I think that the `strip` program removes everything that doesn't
have SH_ALLOC?

Maybe it could use ELF .note.* / SHT_NOTE?
    - .note.slul-module  (name and version)
    - .note.slul-api     (API-versions)
    - .note.slul-bdeps   (interface/build dependencies)
    - .note.slul-xdeps   (runtime/execution dependencies)

Problems
--------

Some distributions (e.g. Fedora) explicitly say that they want to keep the
distribution small for those who don't need development files. So maybe it's
a bad idea to make the library files larger for everyone?