Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/elfix:master commit in: misc/
Date: Thu, 27 Dec 2012 03:11:21
Message-Id: 1356577858.9051961e0c4fb3a916cd81a934972d9453a9a49a.blueness@gentoo
1 commit: 9051961e0c4fb3a916cd81a934972d9453a9a49a
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Thu Dec 27 03:10:58 2012 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Thu Dec 27 03:10:58 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=9051961e
7
8 misc/alt-revdep-pax: cleanup wrt object with no pax flags
9
10 ---
11 misc/alt-revdep-pax | 123 ++++++++++++++++++++++++--------------------------
12 1 files changed, 59 insertions(+), 64 deletions(-)
13
14 diff --git a/misc/alt-revdep-pax b/misc/alt-revdep-pax
15 index be51bf9..dda9025 100755
16 --- a/misc/alt-revdep-pax
17 +++ b/misc/alt-revdep-pax
18 @@ -41,15 +41,7 @@ def get_input(prompt):
19 return raw_input(prompt)
20
21
22 -def print_problems(elfs_without_flags, sonames_without_flags, sonames_missing_library):
23 - elfs_without_flags = set(elfs_without_flags)
24 - print('\n**** ELF objections without any PAX flags ****')
25 - for m in elfs_without_flags:
26 - print('\t%s' % m)
27 - sonames_without_flags = set(sonames_without_flags)
28 - print('\n**** SONAMEs with library files without PAX flags ****')
29 - for m in sonames_without_flags:
30 - print('\t%s' % m)
31 +def print_problems(sonames_missing_library):
32 sonames_missing_library = set(sonames_missing_library)
33 print('\n**** SONAMES without any library files ****')
34 for m in sonames_missing_library:
35 @@ -59,8 +51,6 @@ def print_problems(elfs_without_flags, sonames_without_flags, sonames_missing_li
36 def run_forward(verbose):
37 (object_linkings, object_reverse_linkings, library2soname, soname2library) = LinkMap().get_maps()
38
39 - elfs_without_flags = []
40 - sonames_without_flags = []
41 sonames_missing_library = []
42
43 for abi in object_linkings:
44 @@ -70,22 +60,24 @@ def run_forward(verbose):
45 sv = '%s :%s ( %s )' % (elf, abi, elf_str_flags)
46 s = sv
47 except pax.PaxError:
48 - elfs_without_flags.append(elf)
49 + sv = '%s :%s ( %s )' % (elf, abi, '****')
50 + s = sv
51 continue
52
53 count = 0
54 for soname in object_linkings[abi][elf]:
55 try:
56 - library = soname2library[(soname,abi)]
57 - (library_str_flags, library_bin_flags) = pax.getflags(library)
58 + library = soname2library[(soname, abi)]
59 + try:
60 + (library_str_flags, library_bin_flags) = pax.getflags(library)
61 + except pax.PaxError:
62 + library_str_flags = '****'
63 sv = '%s\n\t%s\t%s ( %s )' % (sv, soname, library, library_str_flags)
64 if elf_str_flags != library_str_flags:
65 s = '%s\n\t%s\t%s ( %s )' % (s, soname, library, library_str_flags)
66 count = count + 1
67 except KeyError:
68 sonames_missing_library.append(soname)
69 - except pax.PaxError:
70 - sonames_without_flags.append(soname)
71
72 if verbose:
73 print('%s\n' % sv)
74 @@ -98,7 +90,7 @@ def run_forward(verbose):
75 print('%s\n\n' % s)
76
77 if verbose:
78 - print_problems(elfs_without_flags, sonames_without_flags, sonames_missing_library)
79 + print_problems(sonames_missing_library)
80
81
82 def run_reverse(verbose, executable_only):
83 @@ -106,39 +98,38 @@ def run_reverse(verbose, executable_only):
84
85 shell_path = path = os.getenv('PATH').split(':')
86
87 - elfs_without_flags = []
88 - sonames_without_flags = []
89 sonames_missing_library = []
90
91 for abi in object_reverse_linkings:
92 for soname in object_reverse_linkings[abi]:
93 try:
94 - library = soname2library[(soname,abi)]
95 - (library_str_flags, library_bin_flags) = pax.getflags(library)
96 + library = soname2library[(soname, abi)]
97 + try:
98 + (library_str_flags, library_bin_flags) = pax.getflags(library)
99 + except pax.PaxError:
100 + library_str_flags = '****'
101 sv = '%s\t%s :%s ( %s )' % (soname, library, abi, library_str_flags)
102 s = sv
103 except KeyError:
104 sonames_missing_library.append(soname)
105 - except pax.PaxError:
106 - sonames_without_flags.append(soname)
107
108 count = 0
109 for elf in object_reverse_linkings[abi][soname]:
110 try:
111 (elf_str_flags, elf_bin_flags) = pax.getflags(elf)
112 - if executable_only:
113 - if os.path.dirname(elf) in shell_path:
114 - sv = '%s\n\t%s ( %s )' % (sv, elf, elf_str_flags)
115 - if library_str_flags != elf_str_flags:
116 - s = '%s\n\t%s ( %s )' % (s, elf, elf_str_flags)
117 - count = count + 1
118 - else:
119 + except pax.PaxError:
120 + elf_str_flags = '****'
121 + if executable_only:
122 + if os.path.dirname(elf) in shell_path:
123 sv = '%s\n\t%s ( %s )' % (sv, elf, elf_str_flags)
124 if library_str_flags != elf_str_flags:
125 s = '%s\n\t%s ( %s )' % (s, elf, elf_str_flags)
126 count = count + 1
127 - except pax.PaxError:
128 - elfs_without_flags.append(elf)
129 + else:
130 + sv = '%s\n\t%s ( %s )' % (sv, elf, elf_str_flags)
131 + if library_str_flags != elf_str_flags:
132 + s = '%s\n\t%s ( %s )' % (s, elf, elf_str_flags)
133 + count = count + 1
134
135 if verbose:
136 print('%s\n' % sv)
137 @@ -151,7 +142,7 @@ def run_reverse(verbose, executable_only):
138 print('%s\n\n' % s)
139
140 if verbose:
141 - print_problems( elfs_without_flags, sonames_without_flags, sonames_missing_library)
142 + print_problems(sonames_missing_library)
143
144
145 def migrate_flags(importer, exporter_str_flags, exporter_bin_flags):
146 @@ -180,7 +171,12 @@ def migrate_flags(importer, exporter_str_flags, exporter_bin_flags):
147 'R':1<<14, 'r':1<<15
148 }
149
150 - (importer_str_flags, importer_bin_flags) = pax.getflags(importer)
151 + try:
152 + (importer_str_flags, importer_bin_flags) = pax.getflags(importer)
153 + except pax.PaxError:
154 + # The importer has no flags, so just set them
155 + pax.setbinflags(importer, exporter_bin_flags)
156 + return
157
158 # Start with the exporter's flags
159 result_bin_flags = exporter_bin_flags
160 @@ -226,21 +222,24 @@ def run_elf(elf, verbose, mark, allyes):
161 for soname in object_linkings[abi][elf]:
162 try:
163 library = soname2library[(soname,abi)]
164 - (library_str_flags, library_bin_flags) = pax.getflags(library)
165 + try:
166 + (library_str_flags, library_bin_flags) = pax.getflags(library)
167 + except pax.PaxError:
168 + library_str_flags = '****'
169 if verbose:
170 print('\t%s\t%s :%s ( %s )' % (soname, library, abi, library_str_flags))
171 if elf_str_flags != library_str_flags:
172 mismatched_libraries.append(library)
173 if not verbose:
174 print('\t%s\t%s :%s ( %s )' % (soname, library, abi, library_str_flags))
175 - except pax.PaxError:
176 - print('%s :%s: file for soname not found' % (soname,abi))
177 + except KeyError:
178 + print('%s :%s: file for soname not found' % (soname, abi))
179
180 if len(mismatched_libraries) == 0:
181 if not verbose:
182 print('\tNo mismatches\n')
183 else:
184 - print('\n'),
185 + print('')
186 if mark:
187 print('\tWill mark libraries with %s\n' % elf_str_flags)
188 for library in mismatched_libraries:
189 @@ -249,7 +248,7 @@ def run_elf(elf, verbose, mark, allyes):
190 if allyes:
191 ans = 'y'
192 else:
193 - ans = get_input('\tSet flags for %s :%s (y/n): ' % (library,abi))
194 + ans = get_input('\tSet flags for %s :%s (y/n): ' % (library, abi))
195 if ans == 'y':
196 do_marking = True
197 break
198 @@ -263,7 +262,7 @@ def run_elf(elf, verbose, mark, allyes):
199 try:
200 migrate_flags(library, elf_str_flags, elf_bin_flags)
201 except pax.PaxError:
202 - print('\n\tCould not set PAX flags on %s, text maybe busy' % (library,abi))
203 + print('\n\tCould not set PAX flags on %s, text maybe busy' % (library, abi))
204
205 try:
206 (library_str_flags, library_bin_flags) = pax.getflags(library)
207 @@ -303,46 +302,42 @@ def run_soname(name, verbose, use_soname, mark, allyes, executable_only):
208 if not soname in object_reverse_linkings[abi]:
209 continue
210
211 - library = soname2library[(soname,abi)]
212 - (library_str_flags, library_bin_flags) = pax.getflags(library)
213 - print('%s\t%s :%s (%s)\n' % (soname, library, ", ".join(abi_list), library_str_flags))
214 + library = soname2library[(soname, abi)]
215 +
216 + try:
217 + (library_str_flags, library_bin_flags) = pax.getflags(library)
218 + print('%s\t%s :%s (%s)\n' % (soname, library, abi, library_str_flags))
219 + except pax.PaxError:
220 + print('%s :%s : No PAX flags found\n' % (library, abi))
221 + continue
222
223 for elf in object_reverse_linkings[abi][soname]:
224 try:
225 (elf_str_flags, elf_bin_flags ) = pax.getflags(elf)
226 - if verbose:
227 - if executable_only:
228 - if os.path.dirname(elf) in shell_path:
229 - print('\t%s ( %s )' % (elf, elf_str_flags ))
230 - else:
231 - print('\t%s ( %s )' % ( elf, elf_str_flags ))
232 - if library_str_flags != elf_str_flags:
233 - if executable_only:
234 - if os.path.dirname(elf) in shell_path:
235 - mismatched_elfs.append(elf)
236 - if not verbose:
237 - print('\t%s ( %s )' % (elf, elf_str_flags ))
238 - else:
239 - mismatched_elfs.append(elf)
240 - if not verbose:
241 - print('\t%s ( %s )' % (elf, elf_str_flags ))
242 except pax.PaxError:
243 - # If you can't get the pax flags, then its automatically mismatched
244 + elf_str_flags = '****'
245 + if verbose:
246 + if executable_only:
247 + if os.path.dirname(elf) in shell_path:
248 + print('\t%s ( %s )' % (elf, elf_str_flags))
249 + else:
250 + print('\t%s ( %s )' % (elf, elf_str_flags))
251 + if library_str_flags != elf_str_flags:
252 if executable_only:
253 if os.path.dirname(elf) in shell_path:
254 mismatched_elfs.append(elf)
255 if not verbose:
256 - print('\t%s ( %s )' % (elf, '****' ))
257 + print('\t%s ( %s )' % (elf, elf_str_flags))
258 else:
259 mismatched_elfs.append(elf)
260 if not verbose:
261 - print('\t%s ( %s )' % (elf, '****' ))
262 + print('\t%s ( %s )' % (elf, elf_str_flags))
263
264 if len(mismatched_elfs) == 0:
265 if not verbose:
266 print('\tNo mismatches\n')
267 else:
268 - print('\n'),
269 + print('')
270 if mark:
271 print('\tWill mark elf with %s\n' % library_str_flags)
272 for elf in mismatched_elfs:
273 @@ -370,7 +365,7 @@ def run_soname(name, verbose, use_soname, mark, allyes, executable_only):
274 print('\n\tCould not set pax flags on %s, file is probably busy' % elf)
275 print('\tShut down all processes that use it and try again')
276 (elf_str_flags, elf_bin_flags) = pax.getflags(elf)
277 - print('\n\t\t%s ( %s )\n' % (elf, elf_str_flags ))
278 + print('\n\t\t%s ( %s )\n' % (elf, elf_str_flags))
279
280
281 def run_usage():