Skip to content

Commit f57d071

Browse files
committed
Add support for all versions of musl used by Alpine v3.1-v3.13
1 parent a6fe9fa commit f57d071

File tree

8 files changed

+837
-67
lines changed

8 files changed

+837
-67
lines changed

src/musl_abi/dso_v1.1.12.jl

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#=
2+
struct dso {
3+
#if DL_FDPIC
4+
struct fdpic_loadmap *loadmap;
5+
#else
6+
unsigned char *base;
7+
#endif
8+
char *name;
9+
size_t *dynv;
10+
struct dso *next, *prev;
11+
12+
Phdr *phdr;
13+
int phnum;
14+
size_t phentsize;
15+
int refcnt;
16+
Sym *syms;
17+
uint32_t *hashtab;
18+
uint32_t *ghashtab;
19+
int16_t *versym;
20+
char *strings;
21+
unsigned char *map;
22+
size_t map_len;
23+
dev_t dev;
24+
ino_t ino;
25+
signed char global;
26+
char relocated;
27+
char constructed;
28+
char kernel_mapped;
29+
struct dso **deps, *needed_by;
30+
char *rpath_orig, *rpath;
31+
void *tls_image;
32+
size_t tls_len, tls_size, tls_align, tls_id, tls_offset;
33+
size_t relro_start, relro_end;
34+
void **new_dtv;
35+
unsigned char *new_tls;
36+
volatile int new_dtv_idx, new_tls_idx;
37+
struct td_index *td_index;
38+
struct dso *fini_next;
39+
char *shortname;
40+
#if DL_FDPIC
41+
unsigned char *base;
42+
#else
43+
struct fdpic_loadmap *loadmap;
44+
#endif
45+
struct funcdesc {
46+
void *addr;
47+
size_t *got;
48+
} *funcdescs;
49+
size_t *got;
50+
char buf[];
51+
};
52+
=#
53+
54+
struct musl_dso_v1_1_12 <: musl_dso
55+
# Things we find mildly interesting
56+
base::Ptr{Cvoid}
57+
name::Ptr{UInt8}
58+
59+
# The wasteland of things we don't care about
60+
dynv::Ptr{Csize_t}
61+
next::Ptr{musl_dso}
62+
prev::Ptr{musl_dso}
63+
64+
phdr::Ptr{Elf_Phdr}
65+
phnum::Cint
66+
phentsize::Csize_t
67+
refcount::Cint
68+
69+
syms::Ptr{Cvoid}
70+
hashtab::Ptr{Cvoid}
71+
ghashtab::Ptr{Cvoid}
72+
versym::Ptr{Int16}
73+
strings::Ptr{UInt8}
74+
lazy::Ptr{Csize_t}
75+
lazy_cnt::Csize_t
76+
77+
map::Ptr{Cuchar}
78+
map_len::Csize_t
79+
80+
# We assume that dev_t and ino_t are always `uint64_t`, even on 32-bit systems.
81+
dev::UInt64
82+
ino::UInt64
83+
dso_global::Cchar
84+
relocated::Cchar
85+
constructed::Cchar
86+
kernel_mapped::Cchar
87+
# NOTE: struct layout rules should insert 5 bytes of space here
88+
deps::Ptr{Ptr{musl_dso}}
89+
needed_by::Ptr{musl_dso}
90+
rpath_orig::Ptr{UInt8}
91+
rpath::Ptr{UInt8}
92+
93+
tls::Ptr{Cvoid}
94+
tls_len::Csize_t
95+
tls_size::Csize_t
96+
tls_align::Csize_t
97+
tls_id::Csize_t
98+
tls_offset::Csize_t
99+
relro_start::Csize_t
100+
relro_end::Csize_t
101+
new_dtv::Ptr{Ptr{Cuint}}
102+
new_tls::Ptr{UInt8}
103+
new_dtv_idx::Cint
104+
new_tls_idx::Cint
105+
td_index::Ptr{Cvoid}
106+
fini_next::Ptr{musl_dso}
107+
108+
# Finally! The field we're interested in!
109+
shortname::Ptr{UInt8}
110+
111+
# We'll put this stuff at the end because it might be interesting to someone somewhere
112+
loadmap::Ptr{Cvoid}
113+
funcdesc::Ptr{Cvoid}
114+
got::Ptr{Csize_t}
115+
end

src/musl_abi/dso_v1.1.13.jl

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#=
2+
struct dso {
3+
#if DL_FDPIC
4+
struct fdpic_loadmap *loadmap;
5+
#else
6+
unsigned char *base;
7+
#endif
8+
char *name;
9+
size_t *dynv;
10+
struct dso *next, *prev;
11+
12+
Phdr *phdr;
13+
int phnum;
14+
size_t phentsize;
15+
int refcnt;
16+
Sym *syms;
17+
Elf_Symndx *hashtab;
18+
uint32_t *ghashtab;
19+
int16_t *versym;
20+
char *strings;
21+
unsigned char *map;
22+
size_t map_len;
23+
dev_t dev;
24+
ino_t ino;
25+
signed char global;
26+
char relocated;
27+
char constructed;
28+
char kernel_mapped;
29+
struct dso **deps, *needed_by;
30+
char *rpath_orig, *rpath;
31+
struct tls_module tls;
32+
size_t tls_id;
33+
size_t relro_start, relro_end;
34+
void **new_dtv;
35+
unsigned char *new_tls;
36+
volatile int new_dtv_idx, new_tls_idx;
37+
struct td_index *td_index;
38+
struct dso *fini_next;
39+
char *shortname;
40+
#if DL_FDPIC
41+
unsigned char *base;
42+
#else
43+
struct fdpic_loadmap *loadmap;
44+
#endif
45+
struct funcdesc {
46+
void *addr;
47+
size_t *got;
48+
} *funcdescs;
49+
size_t *got;
50+
char buf[];
51+
};
52+
=#
53+
54+
struct musl_dso_v1_1_13 <: musl_dso
55+
# Things we find mildly interesting
56+
base::Ptr{Cvoid}
57+
name::Ptr{UInt8}
58+
59+
# The wasteland of things we don't care about
60+
dynv::Ptr{Csize_t}
61+
next::Ptr{musl_dso}
62+
prev::Ptr{musl_dso}
63+
64+
phdr::Ptr{Elf_Phdr}
65+
phnum::Cint
66+
phentsize::Csize_t
67+
refcount::Cint
68+
69+
syms::Ptr{Cvoid}
70+
hashtab::Ptr{Cvoid}
71+
ghashtab::Ptr{Cvoid}
72+
versym::Ptr{Int16}
73+
strings::Ptr{UInt8}
74+
lazy::Ptr{Csize_t}
75+
lazy_cnt::Csize_t
76+
77+
map::Ptr{Cuchar}
78+
map_len::Csize_t
79+
80+
# We assume that dev_t and ino_t are always `uint64_t`, even on 32-bit systems.
81+
dev::UInt64
82+
ino::UInt64
83+
dso_global::Cchar
84+
relocated::Cchar
85+
constructed::Cchar
86+
kernel_mapped::Cchar
87+
# NOTE: struct layout rules should insert 5 bytes of space here
88+
deps::Ptr{Ptr{musl_dso}}
89+
needed_by::Ptr{musl_dso}
90+
rpath_orig::Ptr{UInt8}
91+
rpath::Ptr{UInt8}
92+
93+
tls::musl_tls_module
94+
tls_id::Csize_t
95+
relro_start::Csize_t
96+
relro_end::Csize_t
97+
new_dtv::Ptr{Ptr{Cuint}}
98+
new_tls::Ptr{UInt8}
99+
new_dtv_idx::Cint
100+
new_tls_idx::Cint
101+
td_index::Ptr{Cvoid}
102+
fini_next::Ptr{musl_dso}
103+
104+
# Finally! The field we're interested in!
105+
shortname::Ptr{UInt8}
106+
107+
# We'll put this stuff at the end because it might be interesting to someone somewhere
108+
loadmap::Ptr{Cvoid}
109+
funcdesc::Ptr{Cvoid}
110+
got::Ptr{Csize_t}
111+
end

src/musl_abi/dso_v1.1.17.jl

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#=
2+
struct dso {
3+
#if DL_FDPIC
4+
struct fdpic_loadmap *loadmap;
5+
#else
6+
unsigned char *base;
7+
#endif
8+
char *name;
9+
size_t *dynv;
10+
struct dso *next, *prev;
11+
12+
Phdr *phdr;
13+
int phnum;
14+
size_t phentsize;
15+
Sym *syms;
16+
Elf_Symndx *hashtab;
17+
uint32_t *ghashtab;
18+
int16_t *versym;
19+
char *strings;
20+
struct dso *syms_next, *lazy_next;
21+
size_t *lazy, lazy_cnt;
22+
unsigned char *map;
23+
size_t map_len;
24+
dev_t dev;
25+
ino_t ino;
26+
char relocated;
27+
char constructed;
28+
char kernel_mapped;
29+
struct dso **deps, *needed_by;
30+
char *rpath_orig, *rpath;
31+
struct tls_module tls;
32+
size_t tls_id;
33+
size_t relro_start, relro_end;
34+
uintptr_t *new_dtv;
35+
unsigned char *new_tls;
36+
volatile int new_dtv_idx, new_tls_idx;
37+
struct td_index *td_index;
38+
struct dso *fini_next;
39+
char *shortname;
40+
#if DL_FDPIC
41+
unsigned char *base;
42+
#else
43+
struct fdpic_loadmap *loadmap;
44+
#endif
45+
struct funcdesc {
46+
void *addr;
47+
size_t *got;
48+
} *funcdescs;
49+
size_t *got;
50+
char buf[];
51+
};
52+
=#
53+
54+
struct musl_dso_v1_1_17 <: musl_dso
55+
# Things we find mildly interesting
56+
base::Ptr{Cvoid}
57+
name::Ptr{UInt8}
58+
59+
# The wasteland of things we don't care about
60+
dynv::Ptr{Csize_t}
61+
next::Ptr{musl_dso}
62+
prev::Ptr{musl_dso}
63+
64+
phdr::Ptr{Elf_Phdr}
65+
phnum::Cint
66+
phentsize::Csize_t
67+
68+
syms::Ptr{Cvoid}
69+
hashtab::Ptr{Cvoid}
70+
ghashtab::Ptr{Cvoid}
71+
versym::Ptr{Int16}
72+
strings::Ptr{UInt8}
73+
syms_next::Ptr{musl_dso}
74+
lazy_next::Ptr{musl_dso}
75+
lazy::Ptr{Csize_t}
76+
lazy_cnt::Csize_t
77+
78+
map::Ptr{Cuchar}
79+
map_len::Csize_t
80+
81+
# We assume that dev_t and ino_t are always `uint64_t`, even on 32-bit systems.
82+
dev::UInt64
83+
ino::UInt64
84+
relocated::Cchar
85+
constructed::Cchar
86+
kernel_mapped::Cchar
87+
# NOTE: struct layout rules should insert 5 bytes of space here
88+
deps::Ptr{Ptr{musl_dso}}
89+
needed_by::Ptr{musl_dso}
90+
rpath_orig::Ptr{UInt8}
91+
rpath::Ptr{UInt8}
92+
93+
tls::musl_tls_module
94+
tls_id::Csize_t
95+
relro_start::Csize_t
96+
relro_end::Csize_t
97+
new_dtv::Ptr{Ptr{Cuint}}
98+
new_tls::Ptr{UInt8}
99+
new_dtv_idx::Cint
100+
new_tls_idx::Cint
101+
td_index::Ptr{Cvoid}
102+
fini_next::Ptr{musl_dso}
103+
104+
# Finally! The field we're interested in!
105+
shortname::Ptr{UInt8}
106+
107+
# We'll put this stuff at the end because it might be interesting to someone somewhere
108+
loadmap::Ptr{Cvoid}
109+
funcdesc::Ptr{Cvoid}
110+
got::Ptr{Csize_t}
111+
end

0 commit comments

Comments
 (0)