[LLD][COFF] Align EC code ranges to page boundaries (#168222) · llvm/llvm-project@292dc2b (original) (raw)

`@@ -7,6 +7,7 @@ RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-func-sym2.s -o arm64e

`

7

7

`RUN: llvm-mc -filetype=obj -triple=arm64ec-windows data-sec.s -o data-sec.obj

`

8

8

`RUN: llvm-mc -filetype=obj -triple=arm64ec-windows data-sec2.s -o data-sec2.obj

`

9

9

`RUN: llvm-mc -filetype=obj -triple=arm64ec-windows empty-sec.s -o arm64ec-empty-sec.obj

`

``

10

`+

RUN: llvm-mc -filetype=obj -triple=arm64ec-windows entry-thunk.s -o entry-thunk.obj

`

10

11

`RUN: llvm-mc -filetype=obj -triple=x86_64-windows x86_64-func-sym.s -o x86_64-func-sym.obj

`

11

12

`RUN: llvm-mc -filetype=obj -triple=x86_64-windows empty-sec.s -o x86_64-empty-sec.obj

`

12

13

`RUN: llvm-mc -filetype=obj -triple=aarch64-windows %S/Inputs/loadconfig-arm64.s -o loadconfig-arm64.obj

`

`@@ -162,15 +163,17 @@ RUN: loadconfig-arm64ec.obj -dll -noentry -merge:test=.testdata -merge:

`

162

163

``

163

164

`RUN: llvm-readobj --coff-load-config testcm.dll | FileCheck -check-prefix=CODEMAPCM %s

`

164

165

`CODEMAPCM: CodeMap [

`

165

``

`-

CODEMAPCM-NEXT: 0x4008 - 0x4016 X64

`

``

166

`+

CODEMAPCM-NEXT: 0x4000 - 0x4016 X64

`

166

167

`CODEMAPCM-NEXT: ]

`

167

168

``

168

169

`RUN: llvm-objdump -d testcm.dll | FileCheck -check-prefix=DISASMCM %s

`

169

170

`DISASMCM: Disassembly of section .testdat:

`

170

171

`DISASMCM-EMPTY:

`

171

172

`DISASMCM-NEXT: 0000000180004000 <.testdat>:

`

172

``

`-

DISASMCM-NEXT: 180004000: 00000001 udf #0x1

`

173

``

`-

DISASMCM-NEXT: 180004004: 00000000 udf #0x0

`

``

173

`+

DISASMCM-NEXT: 180004000: 01 00 addl %eax, (%rax)

`

``

174

`+

DISASMCM-NEXT: 180004002: 00 00 addb %al, (%rax)

`

``

175

`+

DISASMCM-NEXT: 180004004: 00 00 addb %al, (%rax)

`

``

176

`+

DISASMCM-NEXT: 180004006: 00 00 addb %al, (%rax)

`

174

177

`DISASMCM-NEXT: 180004008: b8 03 00 00 00 movl $0x3, %eax

`

175

178

`DISASMCM-NEXT: 18000400d: c3 retq

`

176

179

`DISASMCM-NEXT: 18000400e: 00 00 addb %al, (%rax)

`

`@@ -207,6 +210,14 @@ DISASMMS-NEXT: 0000000180006000 :

`

207

210

`DISASMMS-NEXT: 180006000: 528000a0 mov w0, #0x5 // =5

`

208

211

`DISASMMS-NEXT: 180006004: d65f03c0 ret

`

209

212

``

``

213

`+

Test the code map that includes an ARM64EC function padded by its entry-thunk offset.

`

``

214

+

``

215

`+

RUN: lld-link -out:testpad.dll -machine:arm64ec entry-thunk.obj loadconfig-arm64ec.obj -dll -noentry -include:func

`

``

216

`+

RUN: llvm-readobj --coff-load-config testpad.dll | FileCheck -check-prefix=CODEMAPPAD %s

`

``

217

`+

CODEMAPPAD: CodeMap [

`

``

218

`+

CODEMAPPAD: 0x1000 - 0x1010 ARM64EC

`

``

219

`+

CODEMAPPAD-NEXT: ]

`

``

220

+

210

221

``

211

222

`#--- arm64-func-sym.s

`

212

223

` .text

`

`@@ -266,3 +277,22 @@ x86_64_func_sym2:

`

266

277

` .section .empty1, "xr"

`

267

278

` .section .empty2, "xr"

`

268

279

` .section .empty3, "xr"

`

``

280

+

``

281

`+

#--- entry-thunk.s

`

``

282

`+

.section .text,"xr",discard,func

`

``

283

`+

.globl func

`

``

284

`+

.p2align 2, 0x0

`

``

285

`+

func:

`

``

286

`+

mov w0, #1

`

``

287

`+

ret

`

``

288

+

``

289

`+

.section .wowthk$aa,"xr",discard,thunk

`

``

290

`+

.globl thunk

`

``

291

`+

.p2align 2

`

``

292

`+

thunk:

`

``

293

`+

ret

`

``

294

+

``

295

`+

.section .hybmp$x,"yi"

`

``

296

`+

.symidx func

`

``

297

`+

.symidx thunk

`

``

298

`+

.word 1 // entry thunk

`