authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-14 11:57:56+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-14 23:39:20+01:00
log0c3d5fd1fefe2234e36c8e7b6be14f0f0f1d8607
tree5ca0d900d1dd6fb2fa5ae6f6ee9863cdcd5a1afe
parent07c1dd3d1d6c9a1c4fec931621dfd93328bad1e4

lib/std/elf: add aarch64 relocation kinds


1 files changed, 272 insertions(+), 0 deletions(-)

lib/std/elf.zig+272
...@@ -1892,6 +1892,278 @@ pub const R_X86_64_GOTPCRELX = 41;...@@ -1892,6 +1892,278 @@ pub const R_X86_64_GOTPCRELX = 41;
1892pub const R_X86_64_REX_GOTPCRELX = 42;1892pub const R_X86_64_REX_GOTPCRELX = 42;
1893pub const R_X86_64_NUM = 43;1893pub const R_X86_64_NUM = 43;
18941894
1895/// AArch64 relocs.
1896/// No relocation.
1897pub const R_AARCH64_NONE = 0;
1898
1899/// ILP32 AArch64 relocs.
1900/// Direct 32 bit.
1901pub const R_AARCH64_P32_ABS32 = 1;
1902/// Copy symbol at runtime.
1903pub const R_AARCH64_P32_COPY = 180;
1904/// Create GOT entry.
1905pub const R_AARCH64_P32_GLOB_DAT = 181;
1906/// Create PLT entry.
1907pub const R_AARCH64_P32_JUMP_SLOT = 182;
1908/// Adjust by program base.
1909pub const R_AARCH64_P32_RELATIVE = 183;
1910/// Module number, 32 bit.
1911pub const R_AARCH64_P32_TLS_DTPMOD = 184;
1912/// Module-relative offset, 32 bit.
1913pub const R_AARCH64_P32_TLS_DTPREL = 185;
1914/// TP-relative offset, 32 bit.
1915pub const R_AARCH64_P32_TLS_TPREL = 186;
1916/// TLS Descriptor.
1917pub const R_AARCH64_P32_TLSDESC = 187;
1918/// STT_GNU_IFUNC relocation.
1919pub const R_AARCH64_P32_IRELATIVE = 188;
1920
1921/// LP64 AArch64 relocs.
1922/// Direct 64 bit.
1923pub const R_AARCH64_ABS64 = 257;
1924/// Direct 32 bit.
1925pub const R_AARCH64_ABS32 = 258;
1926/// Direct 16-bit.
1927pub const R_AARCH64_ABS16 = 259;
1928/// PC-relative 64-bit.
1929pub const R_AARCH64_PREL64 = 260;
1930/// PC-relative 32-bit.
1931pub const R_AARCH64_PREL32 = 261;
1932/// PC-relative 16-bit.
1933pub const R_AARCH64_PREL16 = 262;
1934/// Dir. MOVZ imm. from bits 15:0.
1935pub const R_AARCH64_MOVW_UABS_G0 = 263;
1936/// Likewise for MOVK; no check.
1937pub const R_AARCH64_MOVW_UABS_G0_NC = 264;
1938/// Dir. MOVZ imm. from bits 31:16.
1939pub const R_AARCH64_MOVW_UABS_G1 = 265;
1940/// Likewise for MOVK; no check.
1941pub const R_AARCH64_MOVW_UABS_G1_NC = 266;
1942/// Dir. MOVZ imm. from bits 47:32.
1943pub const R_AARCH64_MOVW_UABS_G2 = 267;
1944/// Likewise for MOVK; no check.
1945pub const R_AARCH64_MOVW_UABS_G2_NC = 268;
1946/// Dir. MOV{K,Z} imm. from 63:48.
1947pub const R_AARCH64_MOVW_UABS_G3 = 269;
1948/// Dir. MOV{N,Z} imm. from 15:0.
1949pub const R_AARCH64_MOVW_SABS_G0 = 270;
1950/// Dir. MOV{N,Z} imm. from 31:16.
1951pub const R_AARCH64_MOVW_SABS_G1 = 271;
1952/// Dir. MOV{N,Z} imm. from 47:32.
1953pub const R_AARCH64_MOVW_SABS_G2 = 272;
1954/// PC-rel. LD imm. from bits 20:2.
1955pub const R_AARCH64_LD_PREL_LO19 = 273;
1956/// PC-rel. ADR imm. from bits 20:0.
1957pub const R_AARCH64_ADR_PREL_LO21 = 274;
1958/// Page-rel. ADRP imm. from 32:12.
1959pub const R_AARCH64_ADR_PREL_PG_HI21 = 275;
1960/// Likewise; no overflow check.
1961pub const R_AARCH64_ADR_PREL_PG_HI21_NC = 276;
1962/// Dir. ADD imm. from bits 11:0.
1963pub const R_AARCH64_ADD_ABS_LO12_NC = 277;
1964/// Likewise for LD/ST; no check.
1965pub const R_AARCH64_LDST8_ABS_LO12_NC = 278;
1966/// PC-rel. TBZ/TBNZ imm. from 15:2.
1967pub const R_AARCH64_TSTBR14 = 279;
1968/// PC-rel. cond. br. imm. from 20:2.
1969pub const R_AARCH64_CONDBR19 = 280;
1970/// PC-rel. B imm. from bits 27:2.
1971pub const R_AARCH64_JUMP26 = 282;
1972/// Likewise for CALL.
1973pub const R_AARCH64_CALL26 = 283;
1974/// Dir. ADD imm. from bits 11:1.
1975pub const R_AARCH64_LDST16_ABS_LO12_NC = 284;
1976/// Likewise for bits 11:2.
1977pub const R_AARCH64_LDST32_ABS_LO12_NC = 285;
1978/// Likewise for bits 11:3.
1979pub const R_AARCH64_LDST64_ABS_LO12_NC = 286;
1980/// PC-rel. MOV{N,Z} imm. from 15:0.
1981pub const R_AARCH64_MOVW_PREL_G0 = 287;
1982/// Likewise for MOVK; no check.
1983pub const R_AARCH64_MOVW_PREL_G0_NC = 288;
1984/// PC-rel. MOV{N,Z} imm. from 31:16.
1985pub const R_AARCH64_MOVW_PREL_G1 = 289;
1986/// Likewise for MOVK; no check.
1987pub const R_AARCH64_MOVW_PREL_G1_NC = 290;
1988/// PC-rel. MOV{N,Z} imm. from 47:32.
1989pub const R_AARCH64_MOVW_PREL_G2 = 291;
1990/// Likewise for MOVK; no check.
1991pub const R_AARCH64_MOVW_PREL_G2_NC = 292;
1992/// PC-rel. MOV{N,Z} imm. from 63:48.
1993pub const R_AARCH64_MOVW_PREL_G3 = 293;
1994/// Dir. ADD imm. from bits 11:4.
1995pub const R_AARCH64_LDST128_ABS_LO12_NC = 299;
1996/// GOT-rel. off. MOV{N,Z} imm. 15:0.
1997pub const R_AARCH64_MOVW_GOTOFF_G0 = 300;
1998/// Likewise for MOVK; no check.
1999pub const R_AARCH64_MOVW_GOTOFF_G0_NC = 301;
2000/// GOT-rel. o. MOV{N,Z} imm. 31:16.
2001pub const R_AARCH64_MOVW_GOTOFF_G1 = 302;
2002/// Likewise for MOVK; no check.
2003pub const R_AARCH64_MOVW_GOTOFF_G1_NC = 303;
2004/// GOT-rel. o. MOV{N,Z} imm. 47:32.
2005pub const R_AARCH64_MOVW_GOTOFF_G2 = 304;
2006/// Likewise for MOVK; no check.
2007pub const R_AARCH64_MOVW_GOTOFF_G2_NC = 305;
2008/// GOT-rel. o. MOV{N,Z} imm. 63:48.
2009pub const R_AARCH64_MOVW_GOTOFF_G3 = 306;
2010/// GOT-relative 64-bit.
2011pub const R_AARCH64_GOTREL64 = 307;
2012/// GOT-relative 32-bit.
2013pub const R_AARCH64_GOTREL32 = 308;
2014/// PC-rel. GOT off. load imm. 20:2.
2015pub const R_AARCH64_GOT_LD_PREL19 = 309;
2016/// GOT-rel. off. LD/ST imm. 14:3.
2017pub const R_AARCH64_LD64_GOTOFF_LO15 = 310;
2018/// P-page-rel. GOT off. ADRP 32:12.
2019pub const R_AARCH64_ADR_GOT_PAGE = 311;
2020/// Dir. GOT off. LD/ST imm. 11:3.
2021pub const R_AARCH64_LD64_GOT_LO12_NC = 312;
2022/// GOT-page-rel. GOT off. LD/ST 14:3
2023pub const R_AARCH64_LD64_GOTPAGE_LO15 = 313;
2024/// PC-relative ADR imm. 20:0.
2025pub const R_AARCH64_TLSGD_ADR_PREL21 = 512;
2026/// page-rel. ADRP imm. 32:12.
2027pub const R_AARCH64_TLSGD_ADR_PAGE21 = 513;
2028/// direct ADD imm. from 11:0.
2029pub const R_AARCH64_TLSGD_ADD_LO12_NC = 514;
2030/// GOT-rel. MOV{N,Z} 31:16.
2031pub const R_AARCH64_TLSGD_MOVW_G1 = 515;
2032/// GOT-rel. MOVK imm. 15:0.
2033pub const R_AARCH64_TLSGD_MOVW_G0_NC = 516;
2034/// Like 512; local dynamic model.
2035pub const R_AARCH64_TLSLD_ADR_PREL21 = 517;
2036/// Like 513; local dynamic model.
2037pub const R_AARCH64_TLSLD_ADR_PAGE21 = 518;
2038/// Like 514; local dynamic model.
2039pub const R_AARCH64_TLSLD_ADD_LO12_NC = 519;
2040/// Like 515; local dynamic model.
2041pub const R_AARCH64_TLSLD_MOVW_G1 = 520;
2042/// Like 516; local dynamic model.
2043pub const R_AARCH64_TLSLD_MOVW_G0_NC = 521;
2044/// TLS PC-rel. load imm. 20:2.
2045pub const R_AARCH64_TLSLD_LD_PREL19 = 522;
2046/// TLS DTP-rel. MOV{N,Z} 47:32.
2047pub const R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 523;
2048/// TLS DTP-rel. MOV{N,Z} 31:16.
2049pub const R_AARCH64_TLSLD_MOVW_DTPREL_G1 = 524;
2050/// Likewise; MOVK; no check.
2051pub const R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC = 525;
2052/// TLS DTP-rel. MOV{N,Z} 15:0.
2053pub const R_AARCH64_TLSLD_MOVW_DTPREL_G0 = 526;
2054/// Likewise; MOVK; no check.
2055pub const R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC = 527;
2056/// DTP-rel. ADD imm. from 23:12.
2057pub const R_AARCH64_TLSLD_ADD_DTPREL_HI12 = 528;
2058/// DTP-rel. ADD imm. from 11:0.
2059pub const R_AARCH64_TLSLD_ADD_DTPREL_LO12 = 529;
2060/// Likewise; no ovfl. check.
2061pub const R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC = 530;
2062/// DTP-rel. LD/ST imm. 11:0.
2063pub const R_AARCH64_TLSLD_LDST8_DTPREL_LO12 = 531;
2064/// Likewise; no check.
2065pub const R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC = 532;
2066/// DTP-rel. LD/ST imm. 11:1.
2067pub const R_AARCH64_TLSLD_LDST16_DTPREL_LO12 = 533;
2068/// Likewise; no check.
2069pub const R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC = 534;
2070/// DTP-rel. LD/ST imm. 11:2.
2071pub const R_AARCH64_TLSLD_LDST32_DTPREL_LO12 = 535;
2072/// Likewise; no check.
2073pub const R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC = 536;
2074/// DTP-rel. LD/ST imm. 11:3.
2075pub const R_AARCH64_TLSLD_LDST64_DTPREL_LO12 = 537;
2076/// Likewise; no check.
2077pub const R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC = 538;
2078/// GOT-rel. MOV{N,Z} 31:16.
2079pub const R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 = 539;
2080/// GOT-rel. MOVK 15:0.
2081pub const R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC = 540;
2082/// Page-rel. ADRP 32:12.
2083pub const R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 = 541;
2084/// Direct LD off. 11:3.
2085pub const R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC = 542;
2086/// PC-rel. load imm. 20:2.
2087pub const R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 = 543;
2088/// TLS TP-rel. MOV{N,Z} 47:32.
2089pub const R_AARCH64_TLSLE_MOVW_TPREL_G2 = 544;
2090/// TLS TP-rel. MOV{N,Z} 31:16.
2091pub const R_AARCH64_TLSLE_MOVW_TPREL_G1 = 545;
2092/// Likewise; MOVK; no check.
2093pub const R_AARCH64_TLSLE_MOVW_TPREL_G1_NC = 546;
2094/// TLS TP-rel. MOV{N,Z} 15:0.
2095pub const R_AARCH64_TLSLE_MOVW_TPREL_G0 = 547;
2096/// Likewise; MOVK; no check.
2097pub const R_AARCH64_TLSLE_MOVW_TPREL_G0_NC = 548;
2098/// TP-rel. ADD imm. 23:12.
2099pub const R_AARCH64_TLSLE_ADD_TPREL_HI12 = 549;
2100/// TP-rel. ADD imm. 11:0.
2101pub const R_AARCH64_TLSLE_ADD_TPREL_LO12 = 550;
2102/// Likewise; no ovfl. check.
2103pub const R_AARCH64_TLSLE_ADD_TPREL_LO12_NC = 551;
2104/// TP-rel. LD/ST off. 11:0.
2105pub const R_AARCH64_TLSLE_LDST8_TPREL_LO12 = 552;
2106/// Likewise; no ovfl. check.
2107pub const R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC = 553;
2108/// TP-rel. LD/ST off. 11:1.
2109pub const R_AARCH64_TLSLE_LDST16_TPREL_LO12 = 554;
2110/// Likewise; no check.
2111pub const R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC = 555;
2112/// TP-rel. LD/ST off. 11:2.
2113pub const R_AARCH64_TLSLE_LDST32_TPREL_LO12 = 556;
2114/// Likewise; no check.
2115pub const R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC = 557;
2116/// TP-rel. LD/ST off. 11:3.
2117pub const R_AARCH64_TLSLE_LDST64_TPREL_LO12 = 558;
2118/// Likewise; no check.
2119pub const R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC = 559;
2120/// PC-rel. load immediate 20:2.
2121pub const R_AARCH64_TLSDESC_LD_PREL19 = 560;
2122/// PC-rel. ADR immediate 20:0.
2123pub const R_AARCH64_TLSDESC_ADR_PREL21 = 561;
2124/// Page-rel. ADRP imm. 32:12.
2125pub const R_AARCH64_TLSDESC_ADR_PAGE21 = 562;
2126/// Direct LD off. from 11:3.
2127pub const R_AARCH64_TLSDESC_LD64_LO12 = 563;
2128/// Direct ADD imm. from 11:0.
2129pub const R_AARCH64_TLSDESC_ADD_LO12 = 564;
2130/// GOT-rel. MOV{N,Z} imm. 31:16.
2131pub const R_AARCH64_TLSDESC_OFF_G1 = 565;
2132/// GOT-rel. MOVK imm. 15:0; no ck.
2133pub const R_AARCH64_TLSDESC_OFF_G0_NC = 566;
2134/// Relax LDR.
2135pub const R_AARCH64_TLSDESC_LDR = 567;
2136/// Relax ADD.
2137pub const R_AARCH64_TLSDESC_ADD = 568;
2138/// Relax BLR.
2139pub const R_AARCH64_TLSDESC_CALL = 569;
2140/// TP-rel. LD/ST off. 11:4.
2141pub const R_AARCH64_TLSLE_LDST128_TPREL_LO12 = 570;
2142/// Likewise; no check.
2143pub const R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC = 571;
2144/// DTP-rel. LD/ST imm. 11:4.
2145pub const R_AARCH64_TLSLD_LDST128_DTPREL_LO12 = 572;
2146/// Likewise; no check.
2147pub const R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC = 573;
2148/// Copy symbol at runtime.
2149pub const R_AARCH64_COPY = 1024;
2150/// Create GOT entry.
2151pub const R_AARCH64_GLOB_DAT = 1025;
2152/// Create PLT entry.
2153pub const R_AARCH64_JUMP_SLOT = 1026;
2154/// Adjust by program base.
2155pub const R_AARCH64_RELATIVE = 1027;
2156/// Module number, 64 bit.
2157pub const R_AARCH64_TLS_DTPMOD = 1028;
2158/// Module-relative offset, 64 bit.
2159pub const R_AARCH64_TLS_DTPREL = 1029;
2160/// TP-relative offset, 64 bit.
2161pub const R_AARCH64_TLS_TPREL = 1030;
2162/// TLS Descriptor.
2163pub const R_AARCH64_TLSDESC = 1031;
2164/// STT_GNU_IFUNC relocation.
2165pub const R_AARCH64_IRELATIVE = 1032;
2166
1895pub const STV = enum(u2) {2167pub const STV = enum(u2) {
1896 DEFAULT = 0,2168 DEFAULT = 0,
1897 INTERNAL = 1,2169 INTERNAL = 1,