History

scripts/sorttable: Unify arm64 & x86 sort functions

The format of the arm64 and x86 exception table entries is essentially the same as of commits: 46d28947d9876fc0 ("x86/extable: Rework the exception table mechanics") d6e2cc5647753825 ("arm64: extable: add `type` and `data` fields") Both use a 12-byte entry consisting of two 32-bit relative offsets and 32 bits of (absolute) data, and their sort functions are identical aside from commentary, with arm64 saying: /* Don't touch the fixup type or data */ ... and x86 saying: /* Don't touch the fixup type */ Unify the two behind a common sort_relative_table_with_data() function, retaining the arm64 commentary. There should be no functional change as a result of this patch.

Mark Rutland committed 5 years ago

Commit e2323331 parent fa55b7d1 file · +3 −33Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/sorttable.c+3−33
@@ -231,7 +231,7 @@ static void sort_relative_table(char *extab_image, int image_size) · 230 unmodified lines
231 }231 }
232}232}
233 233
234static void arm64_sort_relative_table(char *extab_image, int image_size)234static void sort_relative_table_with_data(char *extab_image, int image_size)
235{235{
236 int i = 0;236 int i = 0;
237 237
@@ -259,34 +259,6 @@ static void arm64_sort_relative_table(char *extab_image, int image_size) · 21 unmodified lines
259 }259 }
260}260}
261 261
262static void x86_sort_relative_table(char *extab_image, int image_size)
263{
264 int i = 0;
265
266 while (i < image_size) {
267 uint32_t *loc = (uint32_t *)(extab_image + i);
268
269 w(r(loc) + i, loc);
270 w(r(loc + 1) + i + 4, loc + 1);
271 /* Don't touch the fixup type */
272
273 i += sizeof(uint32_t) * 3;
274 }
275
276 qsort(extab_image, image_size / 12, 12, compare_relative_table);
277
278 i = 0;
279 while (i < image_size) {
280 uint32_t *loc = (uint32_t *)(extab_image + i);
281
282 w(r(loc) - i, loc);
283 w(r(loc + 1) - (i + 4), loc + 1);
284 /* Don't touch the fixup type */
285
286 i += sizeof(uint32_t) * 3;
287 }
288}
289
290static void s390_sort_relative_table(char *extab_image, int image_size)262static void s390_sort_relative_table(char *extab_image, int image_size)
291{263{
292 int i;264 int i;
@@ -364,15 +336,13 @@ static int do_file(char const *const fname, void *addr) · 71 unmodified lines
364 336
365 switch (r2(&ehdr->e_machine)) {337 switch (r2(&ehdr->e_machine)) {
366 case EM_386:338 case EM_386:
339 case EM_AARCH64:
367 case EM_X86_64:340 case EM_X86_64:
368 custom_sort = x86_sort_relative_table;341 custom_sort = sort_relative_table_with_data;
369 break;342 break;
370 case EM_S390:343 case EM_S390:
371 custom_sort = s390_sort_relative_table;344 custom_sort = s390_sort_relative_table;
372 break;345 break;
373 case EM_AARCH64:
374 custom_sort = arm64_sort_relative_table;
375 break;
376 case EM_PARISC:346 case EM_PARISC:
377 case EM_PPC:347 case EM_PPC:
378 case EM_PPC64:348 case EM_PPC64:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t