Commit 1c05c61
authored
[LLD][COFF] Swap the meaning of symtab and hybridSymtab in hybrid images (llvm#135093)
Originally, the intent behind symtab was to represent the symbol table
seen in the PE header (without applying ARM64X relocations). However, in
most cases outside of `writeHeader()`, the code references either both
symbol tables or only the EC one, for example, `mainSymtab` in
`linkerMain()` maps to `hybridSymtab` on ARM64X.
MSVC's link.exe allows pure ARM64EC images to include native ARM64
files. This patch prepares LLD to support the same, which will require
`hybridSymtab` to be available even for ARM64EC. At that point,
`writeHeader()` will need to use the EC symbol table, and the original
reasoning for keeping it in `hybridSymtab` no longer applies.
Given this, it seems cleaner to treat the EC symbol table as the “main”
one, assigning it to `symtab`, and use `hybridSymtab` for the native
symbol table instead. Since `writeHeader()` will need to be conditional
anyway, this change simplifies the rest of the code by allowing other
parts to consistently treat `ctx.symtab` as the main symbol table.
As a further simplification, this also allows us to eliminate `symtabEC`
and use `symtab` directly; I’ll submit that as a separate PR.
The map file now uses the EC symbol table for printed entry points and
exports, matching MSVC behavior.1 parent 0f615fb commit 1c05c61
File tree
6 files changed
+111
-56
lines changed- lld
- COFF
- test/COFF
6 files changed
+111
-56
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
35 | | - | |
| 35 | + | |
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
| 54 | + | |
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
570 | 570 | | |
571 | 571 | | |
572 | 572 | | |
573 | | - | |
574 | | - | |
575 | | - | |
576 | | - | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
577 | 577 | | |
578 | 578 | | |
579 | 579 | | |
580 | | - | |
| 580 | + | |
581 | 581 | | |
582 | 582 | | |
583 | 583 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
662 | 662 | | |
663 | 663 | | |
664 | 664 | | |
665 | | - | |
666 | | - | |
667 | | - | |
| 665 | + | |
| 666 | + | |
| 667 | + | |
668 | 668 | | |
669 | 669 | | |
670 | 670 | | |
| |||
981 | 981 | | |
982 | 982 | | |
983 | 983 | | |
984 | | - | |
985 | | - | |
986 | | - | |
987 | | - | |
988 | | - | |
989 | | - | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
990 | 987 | | |
991 | 988 | | |
992 | 989 | | |
| |||
1818 | 1815 | | |
1819 | 1816 | | |
1820 | 1817 | | |
1821 | | - | |
1822 | | - | |
1823 | | - | |
1824 | | - | |
1825 | 1818 | | |
1826 | 1819 | | |
1827 | 1820 | | |
| |||
1903 | 1896 | | |
1904 | 1897 | | |
1905 | 1898 | | |
1906 | | - | |
| 1899 | + | |
1907 | 1900 | | |
1908 | 1901 | | |
1909 | 1902 | | |
1910 | | - | |
| 1903 | + | |
1911 | 1904 | | |
1912 | 1905 | | |
1913 | 1906 | | |
| |||
2056 | 2049 | | |
2057 | 2050 | | |
2058 | 2051 | | |
2059 | | - | |
| 2052 | + | |
2060 | 2053 | | |
2061 | 2054 | | |
2062 | 2055 | | |
| |||
2307 | 2300 | | |
2308 | 2301 | | |
2309 | 2302 | | |
2310 | | - | |
| 2303 | + | |
2311 | 2304 | | |
2312 | 2305 | | |
2313 | 2306 | | |
2314 | 2307 | | |
2315 | 2308 | | |
2316 | 2309 | | |
2317 | | - | |
| 2310 | + | |
2318 | 2311 | | |
2319 | 2312 | | |
2320 | 2313 | | |
2321 | 2314 | | |
2322 | | - | |
| 2315 | + | |
2323 | 2316 | | |
2324 | 2317 | | |
2325 | 2318 | | |
| |||
2336 | 2329 | | |
2337 | 2330 | | |
2338 | 2331 | | |
2339 | | - | |
| 2332 | + | |
2340 | 2333 | | |
2341 | 2334 | | |
2342 | 2335 | | |
| |||
2702 | 2695 | | |
2703 | 2696 | | |
2704 | 2697 | | |
2705 | | - | |
| 2698 | + | |
2706 | 2699 | | |
2707 | 2700 | | |
2708 | 2701 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
139 | 139 | | |
140 | 140 | | |
141 | 141 | | |
| 142 | + | |
142 | 143 | | |
143 | 144 | | |
144 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1359 | 1359 | | |
1360 | 1360 | | |
1361 | 1361 | | |
1362 | | - | |
1363 | | - | |
| 1362 | + | |
| 1363 | + | |
1364 | 1364 | | |
1365 | 1365 | | |
1366 | 1366 | | |
1367 | | - | |
1368 | | - | |
1369 | | - | |
| 1367 | + | |
| 1368 | + | |
| 1369 | + | |
1370 | 1370 | | |
1371 | 1371 | | |
1372 | 1372 | | |
| |||
1760 | 1760 | | |
1761 | 1761 | | |
1762 | 1762 | | |
1763 | | - | |
| 1763 | + | |
| 1764 | + | |
1764 | 1765 | | |
1765 | 1766 | | |
1766 | 1767 | | |
| |||
1807 | 1808 | | |
1808 | 1809 | | |
1809 | 1810 | | |
1810 | | - | |
| 1811 | + | |
1811 | 1812 | | |
1812 | 1813 | | |
1813 | 1814 | | |
| |||
1851 | 1852 | | |
1852 | 1853 | | |
1853 | 1854 | | |
1854 | | - | |
1855 | | - | |
1856 | | - | |
1857 | | - | |
1858 | | - | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
1859 | 1860 | | |
1860 | 1861 | | |
1861 | 1862 | | |
| |||
1886 | 1887 | | |
1887 | 1888 | | |
1888 | 1889 | | |
1889 | | - | |
| 1890 | + | |
1890 | 1891 | | |
1891 | 1892 | | |
1892 | 1893 | | |
| |||
1898 | 1899 | | |
1899 | 1900 | | |
1900 | 1901 | | |
1901 | | - | |
| 1902 | + | |
1902 | 1903 | | |
1903 | | - | |
1904 | | - | |
| 1904 | + | |
| 1905 | + | |
1905 | 1906 | | |
1906 | 1907 | | |
1907 | 1908 | | |
| |||
2442 | 2443 | | |
2443 | 2444 | | |
2444 | 2445 | | |
2445 | | - | |
| 2446 | + | |
2446 | 2447 | | |
2447 | 2448 | | |
2448 | 2449 | | |
| |||
2711 | 2712 | | |
2712 | 2713 | | |
2713 | 2714 | | |
2714 | | - | |
| 2715 | + | |
2715 | 2716 | | |
2716 | 2717 | | |
2717 | 2718 | | |
| |||
2720 | 2721 | | |
2721 | 2722 | | |
2722 | 2723 | | |
2723 | | - | |
| 2724 | + | |
2724 | 2725 | | |
2725 | 2726 | | |
2726 | 2727 | | |
2727 | 2728 | | |
2728 | 2729 | | |
2729 | 2730 | | |
2730 | | - | |
| 2731 | + | |
2731 | 2732 | | |
2732 | 2733 | | |
2733 | 2734 | | |
2734 | 2735 | | |
2735 | 2736 | | |
2736 | 2737 | | |
2737 | 2738 | | |
2738 | | - | |
| 2739 | + | |
2739 | 2740 | | |
2740 | 2741 | | |
2741 | 2742 | | |
| |||
2773 | 2774 | | |
2774 | 2775 | | |
2775 | 2776 | | |
2776 | | - | |
| 2777 | + | |
2777 | 2778 | | |
2778 | 2779 | | |
2779 | 2780 | | |
2780 | 2781 | | |
2781 | | - | |
| 2782 | + | |
2782 | 2783 | | |
2783 | 2784 | | |
2784 | 2785 | | |
| |||
2889 | 2890 | | |
2890 | 2891 | | |
2891 | 2892 | | |
2892 | | - | |
| 2893 | + | |
2893 | 2894 | | |
2894 | 2895 | | |
2895 | | - | |
| 2896 | + | |
2896 | 2897 | | |
2897 | 2898 | | |
2898 | 2899 | | |
2899 | | - | |
2900 | | - | |
| 2900 | + | |
2901 | 2901 | | |
2902 | 2902 | | |
2903 | 2903 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
0 commit comments