diff --git a/lld/COFF/Chunks.cpp b/lld/COFF/Chunks.cpp index 33fb20ffeaf32..a82e37ff05230 100644 --- a/lld/COFF/Chunks.cpp +++ b/lld/COFF/Chunks.cpp @@ -1083,7 +1083,8 @@ void CHPECodeRangesChunk::writeTo(uint8_t *buf) const { } size_t CHPERedirectionChunk::getSize() const { - return exportThunks.size() * sizeof(chpe_redirection_entry); + // Add an extra +1 for a terminator entry. + return (exportThunks.size() + 1) * sizeof(chpe_redirection_entry); } void CHPERedirectionChunk::writeTo(uint8_t *buf) const { diff --git a/lld/test/COFF/arm64ec-altnames.s b/lld/test/COFF/arm64ec-altnames.s index fb28ae15895f9..b2abb24efe4c3 100644 --- a/lld/test/COFF/arm64ec-altnames.s +++ b/lld/test/COFF/arm64ec-altnames.s @@ -17,7 +17,7 @@ DISASM-NEXT: 180001004: d65f03c0 ret DISASM-NOT: .thnk RUN: llvm-readobj --hex-dump=.test out1.dll | FileCheck --check-prefix=TESTSEC %s -TESTSEC: 0x180004000 00100000 00100000 +TESTSEC: 0x180005000 00100000 00100000 # Ensure -alternatename can change a demangled function symbol aliasing an anti-dependency symbol. @@ -32,12 +32,12 @@ DISASM2-NEXT: 180001004: d65f03c0 ret DISASM2-EMPTY: DISASM2-NEXT: Disassembly of section .thnk: DISASM2-EMPTY: -DISASM2-NEXT: 0000000180005000 <.thnk>: -DISASM2-NEXT: 180005000: 52800040 mov w0, #0x2 // =2 -DISASM2-NEXT: 180005004: d65f03c0 ret +DISASM2-NEXT: 0000000180006000 <.thnk>: +DISASM2-NEXT: 180006000: 52800040 mov w0, #0x2 // =2 +DISASM2-NEXT: 180006004: d65f03c0 ret RUN: llvm-readobj --hex-dump=.test out2.dll | FileCheck --check-prefix=TESTSEC2 %s -TESTSEC2: 0x180004000 00100000 00500000 +TESTSEC2: 0x180005000 00100000 00600000 # Ensure -alternatename cannot modify a demangled function symbol aliasing a defined symbol. diff --git a/lld/test/COFF/arm64ec-codemap.test b/lld/test/COFF/arm64ec-codemap.test index 7f4d5d84b458e..6e97c14e87d86 100644 --- a/lld/test/COFF/arm64ec-codemap.test +++ b/lld/test/COFF/arm64ec-codemap.test @@ -20,8 +20,8 @@ RUN: llvm-readobj --coff-load-config test.dll | FileCheck -check-prefix=CODEMAP CODEMAP: CodeMap [ CODEMAP-NEXT: 0x1000 - 0x1008 ARM64EC CODEMAP-NEXT: 0x2000 - 0x2006 X64 -CODEMAP-NEXT: 0x5000 - 0x5008 ARM64EC -CODEMAP-NEXT: 0x6000 - 0x6006 X64 +CODEMAP-NEXT: 0x6000 - 0x6008 ARM64EC +CODEMAP-NEXT: 0x7000 - 0x7006 X64 CODEMAP-NEXT: ] RUN: llvm-objdump -d test.dll | FileCheck -check-prefix=DISASM %s @@ -36,12 +36,12 @@ DISASM-NEXT: 180002005: c3 retq DISASM-EMPTY: DISASM-NEXT: Disassembly of section test: DISASM-EMPTY: -DISASM-NEXT: 0000000180005000 : -DISASM-NEXT: 180005000: 528000a0 mov w0, #0x5 -DISASM-NEXT: 180005004: d65f03c0 ret +DISASM-NEXT: 0000000180006000 : +DISASM-NEXT: 180006000: 528000a0 mov w0, #0x5 +DISASM-NEXT: 180006004: d65f03c0 ret DISASM-NEXT: ... -DISASM-NEXT: 180006000: b8 06 00 00 00 movl $0x6, %eax -DISASM-NEXT: 180006005: c3 retq +DISASM-NEXT: 180007000: b8 06 00 00 00 movl $0x6, %eax +DISASM-NEXT: 180007005: c3 retq Order of arguments doesn't matter in this case, chunks are sorted by target type anyway. @@ -66,8 +66,8 @@ CODEMAPX: CodeMap [ CODEMAPX-NEXT: 0x1000 - 0x1008 ARM64 CODEMAPX-NEXT: 0x2000 - 0x2008 ARM64EC CODEMAPX-NEXT: 0x3000 - 0x3006 X64 -CODEMAPX-NEXT: 0x6000 - 0x6008 ARM64EC -CODEMAPX-NEXT: 0x7000 - 0x7006 X64 +CODEMAPX-NEXT: 0x7000 - 0x7008 ARM64EC +CODEMAPX-NEXT: 0x8000 - 0x8006 X64 CODEMAPX-NEXT: ] RUN: llvm-objdump -d testx.dll | FileCheck -check-prefix=DISASMX %s @@ -85,12 +85,12 @@ DISASMX-NEXT: 180003005: c3 retq DISASMX-EMPTY: DISASMX-NEXT: Disassembly of section test: DISASMX-EMPTY: -DISASMX-NEXT: 0000000180006000 : -DISASMX-NEXT: 180006000: 528000a0 mov w0, #0x5 -DISASMX-NEXT: 180006004: d65f03c0 ret +DISASMX-NEXT: 0000000180007000 : +DISASMX-NEXT: 180007000: 528000a0 mov w0, #0x5 +DISASMX-NEXT: 180007004: d65f03c0 ret DISASMX-NEXT: ... -DISASMX-NEXT: 180007000: b8 06 00 00 00 movl $0x6, %eax -DISASMX-NEXT: 180007005: c3 retq +DISASMX-NEXT: 180008000: b8 06 00 00 00 movl $0x6, %eax +DISASMX-NEXT: 180008005: c3 retq Test merged sections. @@ -127,8 +127,8 @@ RUN: llvm-readobj --coff-load-config testdm.dll | FileCheck -check-prefix=CODEMA CODEMAPDM: CodeMap [ CODEMAPDM-NEXT: 0x2000 - 0x2008 ARM64EC CODEMAPDM-NEXT: 0x3000 - 0x3006 X64 -CODEMAPDM-NEXT: 0x6000 - 0x6008 ARM64EC -CODEMAPDM-NEXT: 0x7000 - 0x7006 X64 +CODEMAPDM-NEXT: 0x7000 - 0x7008 ARM64EC +CODEMAPDM-NEXT: 0x8000 - 0x8006 X64 CODEMAPDM-NEXT: ] RUN: llvm-objdump -d testdm.dll | FileCheck -check-prefix=DISASMDM %s @@ -147,12 +147,12 @@ DISASMDM-NEXT: 180003005: c3 retq DISASMDM-EMPTY: DISASMDM-NEXT: Disassembly of section test: DISASMDM-EMPTY: -DISASMDM-NEXT: 0000000180005000 : -DISASMDM: 180006000: 528000a0 mov w0, #0x5 -DISASMDM-NEXT: 180006004: d65f03c0 ret +DISASMDM-NEXT: 0000000180006000 : +DISASMDM: 180007000: 528000a0 mov w0, #0x5 +DISASMDM-NEXT: 180007004: d65f03c0 ret DISASMDM-NEXT: ... -DISASMDM-NEXT: 180007000: b8 06 00 00 00 movl $0x6, %eax -DISASMDM-NEXT: 180007005: c3 retq +DISASMDM-NEXT: 180008000: b8 06 00 00 00 movl $0x6, %eax +DISASMDM-NEXT: 180008005: c3 retq Merging a code section into data section produces a valid code map. @@ -161,20 +161,20 @@ RUN: loadconfig-arm64ec.obj -dll -noentry -merge:test=.testdata -merge: RUN: llvm-readobj --coff-load-config testcm.dll | FileCheck -check-prefix=CODEMAPCM %s CODEMAPCM: CodeMap [ -CODEMAPCM-NEXT: 0x3008 - 0x3016 X64 +CODEMAPCM-NEXT: 0x4008 - 0x4016 X64 CODEMAPCM-NEXT: ] RUN: llvm-objdump -d testcm.dll | FileCheck -check-prefix=DISASMCM %s DISASMCM: Disassembly of section .testdat: DISASMCM-EMPTY: -DISASMCM-NEXT: 0000000180003000 <.testdat>: -DISASMCM-NEXT: 180003000: 00000001 udf #0x1 -DISASMCM-NEXT: 180003004: 00000000 udf #0x0 -DISASMCM-NEXT: 180003008: b8 03 00 00 00 movl $0x3, %eax -DISASMCM-NEXT: 18000300d: c3 retq -DISASMCM-NEXT: 18000300e: 00 00 addb %al, (%rax) -DISASMCM-NEXT: 180003010: b8 06 00 00 00 movl $0x6, %eax -DISASMCM-NEXT: 180003015: c3 +DISASMCM-NEXT: 0000000180004000 <.testdat>: +DISASMCM-NEXT: 180004000: 00000001 udf #0x1 +DISASMCM-NEXT: 180004004: 00000000 udf #0x0 +DISASMCM-NEXT: 180004008: b8 03 00 00 00 movl $0x3, %eax +DISASMCM-NEXT: 18000400d: c3 retq +DISASMCM-NEXT: 18000400e: 00 00 addb %al, (%rax) +DISASMCM-NEXT: 180004010: b8 06 00 00 00 movl $0x6, %eax +DISASMCM-NEXT: 180004015: c3 Test code map range entry spanning over multiple sections. @@ -184,7 +184,7 @@ RUN: loadconfig-arm64ec.obj -dll -noentry RUN: llvm-readobj --coff-load-config testms.dll | FileCheck -check-prefix=CODEMAPMS %s CODEMAPMS: CodeMap [ CODEMAPMS-NEXT: 0x1000 - 0x1008 ARM64EC -CODEMAPMS-NEXT: 0x4000 - 0x5008 ARM64EC +CODEMAPMS-NEXT: 0x5000 - 0x6008 ARM64EC CODEMAPMS-NEXT: ] RUN: llvm-objdump -d testms.dll | FileCheck -check-prefix=DISASMMS %s @@ -196,15 +196,15 @@ DISASMMS-NEXT: 180001004: d65f03c0 ret DISASMMS-EMPTY: DISASMMS-NEXT: Disassembly of section test: DISASMMS-EMPTY: -DISASMMS-NEXT: 0000000180004000 : -DISASMMS-NEXT: 180004000: 528000a0 mov w0, #0x5 // =5 -DISASMMS-NEXT: 180004004: d65f03c0 ret +DISASMMS-NEXT: 0000000180005000 : +DISASMMS-NEXT: 180005000: 528000a0 mov w0, #0x5 // =5 +DISASMMS-NEXT: 180005004: d65f03c0 ret DISASMMS-EMPTY: DISASMMS-NEXT: Disassembly of section test2: DISASMMS-EMPTY: -DISASMMS-NEXT: 0000000180005000 : -DISASMMS-NEXT: 180005000: 528000a0 mov w0, #0x5 // =5 -DISASMMS-NEXT: 180005004: d65f03c0 ret +DISASMMS-NEXT: 0000000180006000 : +DISASMMS-NEXT: 180006000: 528000a0 mov w0, #0x5 // =5 +DISASMMS-NEXT: 180006004: d65f03c0 ret #--- arm64-func-sym.s diff --git a/lld/test/COFF/arm64ec-delayimport.test b/lld/test/COFF/arm64ec-delayimport.test index 6797d84e08868..0c8009362f80e 100644 --- a/lld/test/COFF/arm64ec-delayimport.test +++ b/lld/test/COFF/arm64ec-delayimport.test @@ -12,9 +12,9 @@ RUN: lld-link -machine:arm64ec -dll -noentry -out:out.dll loadconfig-arm64ec.obj RUN: helper-mangled.obj test-arm64ec.lib test2-arm64ec.lib -delayload:test.dll -map RUN: llvm-readobj --hex-dump=.test out.dll | FileCheck --check-prefix=TESTSEC %s -TESTSEC: 0x180008000 00600000 88700000 00200000 10100000 -TESTSEC-NEXT: 0x180008010 08600000 90700000 10200000 30100000 -TESTSEC-NEXT: 0x180008020 1c100000 3c100000 00300000 +TESTSEC: 0x180009000 00600000 88700000 00200000 10100000 +TESTSEC-NEXT: 0x180009010 08600000 90700000 10200000 30100000 +TESTSEC-NEXT: 0x180009020 1c100000 3c100000 00300000 RUN: llvm-objdump -d out.dll | FileCheck --check-prefix=DISASM %s DISASM: 0000000180001000 <.text>: diff --git a/lld/test/COFF/arm64ec-export-thunks.test b/lld/test/COFF/arm64ec-export-thunks.test index 809fac1f24a7d..f84d21d27e9a6 100644 --- a/lld/test/COFF/arm64ec-export-thunks.test +++ b/lld/test/COFF/arm64ec-export-thunks.test @@ -70,7 +70,7 @@ EXP-CHPE-NEXT: ] RUN: llvm-readobj --sections exports.dll | FileCheck --check-prefix=A64XRM %s A64XRM: Name: .a64xrm (2E 61 36 34 78 72 6D 00) -A64XRM-NEXT: VirtualSize: 0x10 +A64XRM-NEXT: VirtualSize: 0x18 A64XRM-NEXT: VirtualAddress: 0x6000 A64XRM-NEXT: RawDataSize: 512 A64XRM-NEXT: PointerToRawData: @@ -83,6 +83,11 @@ A64XRM-NEXT: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40) A64XRM-NEXT: IMAGE_SCN_MEM_READ (0x40000000) A64XRM-NEXT: ] +RUN: llvm-readobj --hex-dump=.a64xrm exports.dll | FileCheck --check-prefix=A64XRM-DUMP %s + +A64XRM-DUMP: 0x180006000 00300000 00100000 10300000 00100000 +A64XRM-DUMP-NEXT: 0x180006010 00000000 00000000 + RUN: llvm-objdump -s --section=.test exports.dll | FileCheck --check-prefix=EXP-DATA %s EXP-DATA: 180007000 00300000 10300000 @@ -138,13 +143,13 @@ RUN: lld-link -out:data-func.dll -machine:arm64ec arm64ec-data-sym.obj loadconfi RUN: llvm-readobj --hex-dump=.test data-func.dll | FileCheck --check-prefix=DATAFUNC-TEST %s DATAFUNC-TEST: Hex dump of section '.test': -DATAFUNC-TEST-NEXT: 0x180003000 00000000 .... +DATAFUNC-TEST-NEXT: 0x180004000 00000000 .... RUN: llvm-readobj --coff-exports --hex-dump=.test data-func.dll | FileCheck --check-prefix=DATAFUNC-EXP %s DATAFUNC-EXP: Export { DATAFUNC-EXP-NEXT: Ordinal: 1 DATAFUNC-EXP-NEXT: Name: data_sym -DATAFUNC-EXP-NEXT: RVA: 0x3000 +DATAFUNC-EXP-NEXT: RVA: 0x4000 DATAFUNC-EXP-NEXT: } diff --git a/lld/test/COFF/arm64ec-import.test b/lld/test/COFF/arm64ec-import.test index 9cf0914322941..033c27884be02 100644 --- a/lld/test/COFF/arm64ec-import.test +++ b/lld/test/COFF/arm64ec-import.test @@ -76,16 +76,16 @@ DISASM-NEXT: 180002000: ff 25 02 10 00 00 jmpq *0x1002(%rip) RUN: llvm-readobj --hex-dump=.test out.dll | FileCheck --check-prefix=TESTSEC %s RUN: llvm-readobj --hex-dump=.test out2.dll | FileCheck --check-prefix=TESTSEC %s -TESTSEC: 0x180007000 08500000 00300000 10500000 20500000 -TESTSEC-NEXT: 0x180007010 08300000 00500000 10300000 20300000 -TESTSEC-NEXT: 0x180007020 14100000 28100000 00200000 08100000 -TESTSEC-NEXT: 0x180007030 3c100000 88420000 +TESTSEC: 0x180008000 08500000 00300000 10500000 20500000 +TESTSEC-NEXT: 0x180008010 08300000 00500000 10300000 20300000 +TESTSEC-NEXT: 0x180008020 14100000 28100000 00200000 08100000 +TESTSEC-NEXT: 0x180008030 3c100000 88420000 RUN: llvm-readobj --hex-dump=.test out3.dll | FileCheck -check-prefix=TESTSEC-X64 %s -TESTSEC-X64: 0x180007000 08300000 00300000 10300000 20300000 -TESTSEC-X64-NEXT: 0x180007010 08300000 00500000 10300000 20300000 -TESTSEC-X64-NEXT: 0x180007020 14100000 28100000 00200000 08100000 -TESTSEC-X64-NEXT: 0x180007030 3c100000 88420000 +TESTSEC-X64: 0x180008000 08300000 00300000 10300000 20300000 +TESTSEC-X64-NEXT: 0x180008010 08300000 00500000 10300000 20300000 +TESTSEC-X64-NEXT: 0x180008020 14100000 28100000 00200000 08100000 +TESTSEC-X64-NEXT: 0x180008030 3c100000 88420000 RUN: FileCheck --check-prefix=MAP %s < out.map RUN: FileCheck --check-prefix=MAP %s < out2.map diff --git a/lld/test/COFF/arm64ec-lib.test b/lld/test/COFF/arm64ec-lib.test index 075854f62d5d4..9dff23022f9ee 100644 --- a/lld/test/COFF/arm64ec-lib.test +++ b/lld/test/COFF/arm64ec-lib.test @@ -41,7 +41,7 @@ DISASM-NEXT: 180001000: d65f03c0 ret DISASM-EMPTY: RUN: llvm-readobj --hex-dump=.test ref-alias-1.dll | FileCheck -check-prefix=TESTSEC %s -TESTSEC: 0x180004000 00100000 +TESTSEC: 0x180005000 00100000 The same test, but with a different input order. RUN: lld-link -machine:arm64ec -dll -noentry -out:ref-alias-2.dll func.lib ref-alias.obj loadconfig-arm64ec.obj diff --git a/lld/test/COFF/arm64ec-loadcfg.s b/lld/test/COFF/arm64ec-loadcfg.s index d7df96334313d..65a0e52bd8652 100644 --- a/lld/test/COFF/arm64ec-loadcfg.s +++ b/lld/test/COFF/arm64ec-loadcfg.s @@ -30,7 +30,10 @@ # LOADCFG-NEXT: ] # RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck --check-prefix=TEST %s -# TEST: 0x180003000 00000000 00000000 00000000 +# TEST: 0x180004000 00000000 00000000 00000000 + +# RUN: llvm-readobj --hex-dump=.a64xrm %t.dll | FileCheck --check-prefix=A64XRM %s +# A64XRM: 0x180003000 00000000 00000000 ........ .section .test,"dr" .rva __arm64x_native_entrypoint diff --git a/lld/test/COFF/arm64ec-range-thunks.s b/lld/test/COFF/arm64ec-range-thunks.s index 71bf0e34bd70e..f170349d7965d 100644 --- a/lld/test/COFF/arm64ec-range-thunks.s +++ b/lld/test/COFF/arm64ec-range-thunks.s @@ -19,41 +19,41 @@ # DISASM: Disassembly of section .code1: # DISASM-EMPTY: -# DISASM-NEXT: 0000000180003000 <.code1>: -# DISASM-NEXT: 180003000: 36000040 tbz w0, #0x0, 0x180003008 <.code1+0x8> -# DISASM-NEXT: 180003004: d65f03c0 ret -# DISASM-NEXT: 180003008: b0000050 adrp x16, 0x18000c000 -# DISASM-NEXT: 18000300c: 91000210 add x16, x16, #0x0 -# DISASM-NEXT: 180003010: d61f0200 br x16 +# DISASM-NEXT: 0000000180004000 <.code1>: +# DISASM-NEXT: 180004000: 36000040 tbz w0, #0x0, 0x180004008 <.code1+0x8> +# DISASM-NEXT: 180004004: d65f03c0 ret +# DISASM-NEXT: 180004008: b0000050 adrp x16, 0x18000d000 +# DISASM-NEXT: 18000400c: 91000210 add x16, x16, #0x0 +# DISASM-NEXT: 180004010: d61f0200 br x16 # DISASM-EMPTY: # DISASM-NEXT: Disassembly of section .code2: # DISASM-EMPTY: -# DISASM-NEXT: 0000000180004000 <.code2>: +# DISASM-NEXT: 0000000180005000 <.code2>: # DISASM-NEXT: ... # DISASM-EMPTY: # DISASM-NEXT: Disassembly of section .code3: # DISASM-EMPTY: -# DISASM-NEXT: 0000000180005000 <.code3>: +# DISASM-NEXT: 0000000180006000 <.code3>: # DISASM-NEXT: ... -# DISASM-NEXT: 18000c000: 36000060 tbz w0, #0x0, 0x18000c00c <.code3+0x700c> -# DISASM-NEXT: 18000c004: d65f03c0 ret -# DISASM-NEXT: 18000c008: 00000000 udf #0x0 -# DISASM-NEXT: 18000c00c: 90000050 adrp x16, 0x180014000 <.code3+0xf000> -# DISASM-NEXT: 18000c010: 91006210 add x16, x16, #0x18 -# DISASM-NEXT: 18000c014: d61f0200 br x16 +# DISASM-NEXT: 18000d000: 36000060 tbz w0, #0x0, 0x18000d00c <.code3+0x700c> +# DISASM-NEXT: 18000d004: d65f03c0 ret +# DISASM-NEXT: 18000d008: 00000000 udf #0x0 +# DISASM-NEXT: 18000d00c: 90000050 adrp x16, 0x180015000 <.code3+0xf000> +# DISASM-NEXT: 18000d010: 91006210 add x16, x16, #0x18 +# DISASM-NEXT: 18000d014: d61f0200 br x16 # DISASM-NEXT: ... -# DISASM-NEXT: 180014018: 36000040 tbz w0, #0x0, 0x180014020 <.code3+0xf020> -# DISASM-NEXT: 18001401c: d65f03c0 ret -# DISASM-NEXT: 180014020: f0ffff70 adrp x16, 0x180003000 <.code1> -# DISASM-NEXT: 180014024: 91000210 add x16, x16, #0x0 -# DISASM-NEXT: 180014028: d61f0200 br x16 +# DISASM-NEXT: 180015018: 36000040 tbz w0, #0x0, 0x180015020 <.code3+0xf020> +# DISASM-NEXT: 18001501c: d65f03c0 ret +# DISASM-NEXT: 180015020: f0ffff70 adrp x16, 0x180004000 <.code1> +# DISASM-NEXT: 180015024: 91000210 add x16, x16, #0x0 +# DISASM-NEXT: 180015028: d61f0200 br x16 # RUN: llvm-readobj --coff-load-config test.dll | FileCheck --check-prefix=LOADCFG %s # LOADCFG: CodeMap [ -# LOADCFG-NEXT: 0x3000 - 0x3014 ARM64EC -# LOADCFG-NEXT: 0x4000 - 0x4300 X64 -# LOADCFG-NEXT: 0x5000 - 0x1402C ARM64EC +# LOADCFG-NEXT: 0x4000 - 0x4014 ARM64EC +# LOADCFG-NEXT: 0x5000 - 0x5300 X64 +# LOADCFG-NEXT: 0x6000 - 0x1502C ARM64EC # LOADCFG-NEXT: ] @@ -66,9 +66,9 @@ # RUN: llvm-readobj --coff-load-config testx.dll | FileCheck --check-prefix=LOADCFGX %s # LOADCFGX: CodeMap [ -# LOADCFGX-NEXT: 0x3000 - 0x3014 ARM64EC -# LOADCFGX-NEXT: 0x4000 - 0x4300 ARM64 -# LOADCFGX-NEXT: 0x5000 - 0x1402C ARM64EC +# LOADCFGX-NEXT: 0x4000 - 0x4014 ARM64EC +# LOADCFGX-NEXT: 0x5000 - 0x5300 ARM64 +# LOADCFGX-NEXT: 0x6000 - 0x1502C ARM64EC # LOADCFGX-NEXT: ] @@ -82,55 +82,55 @@ # DISASMX: Disassembly of section .code1: # DISASMX-EMPTY: -# DISASMX-NEXT: 0000000180003000 <.code1>: -# DISASMX-NEXT: 180003000: 36000040 tbz w0, #0x0, 0x180003008 <.code1+0x8> -# DISASMX-NEXT: 180003004: d65f03c0 ret -# DISASMX-NEXT: 180003008: b0000050 adrp x16, 0x18000c000 -# DISASMX-NEXT: 18000300c: 91000210 add x16, x16, #0x0 -# DISASMX-NEXT: 180003010: d61f0200 br x16 -# DISASMX-EMPTY: -# DISASMX-NEXT: Disassembly of section .code2: -# DISASMX-EMPTY: -# DISASMX-NEXT: 0000000180004000 <.code2>: -# DISASMX-NEXT: 180004000: 36000040 tbz w0, #0x0, 0x180004008 <.code2+0x8> +# DISASMX-NEXT: 0000000180004000 <.code1>: +# DISASMX-NEXT: 180004000: 36000040 tbz w0, #0x0, 0x180004008 <.code1+0x8> # DISASMX-NEXT: 180004004: d65f03c0 ret -# DISASMX-NEXT: 180004008: b0000090 adrp x16, 0x180015000 +# DISASMX-NEXT: 180004008: b0000050 adrp x16, 0x18000d000 # DISASMX-NEXT: 18000400c: 91000210 add x16, x16, #0x0 # DISASMX-NEXT: 180004010: d61f0200 br x16 # DISASMX-EMPTY: +# DISASMX-NEXT: Disassembly of section .code2: +# DISASMX-EMPTY: +# DISASMX-NEXT: 0000000180005000 <.code2>: +# DISASMX-NEXT: 180005000: 36000040 tbz w0, #0x0, 0x180005008 <.code2+0x8> +# DISASMX-NEXT: 180005004: d65f03c0 ret +# DISASMX-NEXT: 180005008: b0000090 adrp x16, 0x180016000 +# DISASMX-NEXT: 18000500c: 91000210 add x16, x16, #0x0 +# DISASMX-NEXT: 180005010: d61f0200 br x16 +# DISASMX-EMPTY: # DISASMX-NEXT: Disassembly of section .code3: # DISASMX-EMPTY: -# DISASMX-NEXT: 0000000180005000 <.code3>: +# DISASMX-NEXT: 0000000180006000 <.code3>: # DISASMX-NEXT: ... -# DISASMX-NEXT: 18000c000: 36000060 tbz w0, #0x0, 0x18000c00c <.code3+0x700c> -# DISASMX-NEXT: 18000c004: d65f03c0 ret -# DISASMX-NEXT: 18000c008: 00000000 udf #0x0 -# DISASMX-NEXT: 18000c00c: 90000050 adrp x16, 0x180014000 <.code3+0xf000> -# DISASMX-NEXT: 18000c010: 91006210 add x16, x16, #0x18 -# DISASMX-NEXT: 18000c014: d61f0200 br x16 +# DISASMX-NEXT: 18000d000: 36000060 tbz w0, #0x0, 0x18000d00c <.code3+0x700c> +# DISASMX-NEXT: 18000d004: d65f03c0 ret +# DISASMX-NEXT: 18000d008: 00000000 udf #0x0 +# DISASMX-NEXT: 18000d00c: 90000050 adrp x16, 0x180015000 <.code3+0xf000> +# DISASMX-NEXT: 18000d010: 91006210 add x16, x16, #0x18 +# DISASMX-NEXT: 18000d014: d61f0200 br x16 # DISASMX-NEXT: ... -# DISASMX-NEXT: 180014018: 36000040 tbz w0, #0x0, 0x180014020 <.code3+0xf020> -# DISASMX-NEXT: 18001401c: d65f03c0 ret -# DISASMX-NEXT: 180014020: f0ffff70 adrp x16, 0x180003000 <.code1> -# DISASMX-NEXT: 180014024: 91000210 add x16, x16, #0x0 -# DISASMX-NEXT: 180014028: d61f0200 br x16 +# DISASMX-NEXT: 180015018: 36000040 tbz w0, #0x0, 0x180015020 <.code3+0xf020> +# DISASMX-NEXT: 18001501c: d65f03c0 ret +# DISASMX-NEXT: 180015020: f0ffff70 adrp x16, 0x180004000 <.code1> +# DISASMX-NEXT: 180015024: 91000210 add x16, x16, #0x0 +# DISASMX-NEXT: 180015028: d61f0200 br x16 # DISASMX-EMPTY: # DISASMX-NEXT: Disassembly of section .code4: # DISASMX-EMPTY: -# DISASMX-NEXT: 0000000180015000 <.code4>: -# DISASMX-NEXT: 180015000: 36000040 tbz w0, #0x0, 0x180015008 <.code4+0x8> -# DISASMX-NEXT: 180015004: d65f03c0 ret -# DISASMX-NEXT: 180015008: f0ffff70 adrp x16, 0x180004000 <.code2> -# DISASMX-NEXT: 18001500c: 91000210 add x16, x16, #0x0 -# DISASMX-NEXT: 180015010: d61f0200 br x16 +# DISASMX-NEXT: 0000000180016000 <.code4>: +# DISASMX-NEXT: 180016000: 36000040 tbz w0, #0x0, 0x180016008 <.code4+0x8> +# DISASMX-NEXT: 180016004: d65f03c0 ret +# DISASMX-NEXT: 180016008: f0ffff70 adrp x16, 0x180005000 <.code2> +# DISASMX-NEXT: 18001600c: 91000210 add x16, x16, #0x0 +# DISASMX-NEXT: 180016010: d61f0200 br x16 # RUN: llvm-readobj --coff-load-config testx2.dll | FileCheck --check-prefix=LOADCFGX2 %s # LOADCFGX2: CodeMap [ -# LOADCFGX2-NEXT: 0x3000 - 0x3014 ARM64EC -# LOADCFGX2-NEXT: 0x4000 - 0x4014 ARM64 -# LOADCFGX2-NEXT: 0x5000 - 0x1402C ARM64EC -# LOADCFGX2-NEXT: 0x15000 - 0x15014 ARM64 +# LOADCFGX2-NEXT: 0x4000 - 0x4014 ARM64EC +# LOADCFGX2-NEXT: 0x5000 - 0x5014 ARM64 +# LOADCFGX2-NEXT: 0x6000 - 0x1502C ARM64EC +# LOADCFGX2-NEXT: 0x16000 - 0x16014 ARM64 # LOADCFGX2-NEXT: ] diff --git a/lld/test/COFF/locally-imported-arm64ec.test b/lld/test/COFF/locally-imported-arm64ec.test index 9ec55c2dceaef..5e632be7b0022 100644 --- a/lld/test/COFF/locally-imported-arm64ec.test +++ b/lld/test/COFF/locally-imported-arm64ec.test @@ -18,7 +18,7 @@ RELOCS-NEXT: Address: 0x2000 RELOCS-NEXT: } RUN: llvm-readobj --hex-dump=.test impsym.dll | FileCheck --check-prefix=TEST %s -TEST: 0x180003000 00200000 +TEST: 0x180004000 00200000 RUN: llvm-readobj --hex-dump=.rdata impsym.dll | FileCheck --check-prefix=RDATA-DEMANGLED %s RDATA-MANGLED: 0x180002000 00100080 01000000