1# RUN: ld64.lld -arch armv7 -r -print_atoms %s -o %t | FileCheck %s 2# RUN: ld64.lld -arch armv7 -r -print_atoms %t -o %t2 | FileCheck %s 3# 4# Test parsing of armv7 relocations. 5# 6# 7 8--- !mach-o 9arch: armv7 10file-type: MH_OBJECT 11flags: [ MH_SUBSECTIONS_VIA_SYMBOLS ] 12sections: 13 - segment: __TEXT 14 section: __text 15 type: S_REGULAR 16 attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ] 17 alignment: 2 18 address: 0x0000000000000000 19 content: [ 0x00, 0xF0, 0x4E, 0xF8, 0x00, 0xF0, 0x4E, 0xF8, 20 0xFF, 0xF7, 0xFA, 0xFF, 0xFF, 0xF7, 0xFA, 0xFF, 21 0xFF, 0xF7, 0xF6, 0xBF, 0x40, 0xF2, 0x72, 0x01, 22 0xC0, 0xF2, 0x00, 0x01, 0x40, 0xF2, 0x7A, 0x02, 23 0xC0, 0xF2, 0x00, 0x02, 0x40, 0xF2, 0x29, 0x01, 24 0xC0, 0xF2, 0x00, 0x01, 0x79, 0x44, 0x40, 0xF2, 25 0xA0, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2, 26 0xA8, 0x04, 0xC0, 0xF2, 0x00, 0x04, 0x40, 0xF2, 27 0x57, 0x03, 0xC0, 0xF2, 0x00, 0x03, 0x40, 0xF2, 28 0x00, 0x05, 0xC0, 0xF2, 0x00, 0x05, 0x40, 0xF2, 29 0x08, 0x06, 0xC0, 0xF2, 0x00, 0x06, 0xC0, 0x46, 30 0x10, 0x00, 0x00, 0xEB, 0x10, 0x00, 0x00, 0xEB, 31 0xE6, 0xFF, 0xFF, 0xEB, 0xE6, 0xFF, 0xFF, 0xEB, 32 0xE4, 0xFF, 0xFF, 0xEA, 0x20, 0x10, 0x00, 0xE3, 33 0x00, 0x10, 0x40, 0xE3, 0x28, 0x20, 0x00, 0xE3, 34 0x00, 0x20, 0x40, 0xE3, 0x0F, 0x10, 0x81, 0xE0, 35 0xA0, 0x30, 0x00, 0xE3, 0x00, 0x30, 0x40, 0xE3, 36 0xA8, 0x40, 0x00, 0xE3, 0x00, 0x40, 0x40, 0xE3, 37 0x00, 0x50, 0x00, 0xE3, 0x00, 0x50, 0x40, 0xE3, 38 0x08, 0x60, 0x00, 0xE3, 0x00, 0x60, 0x40, 0xE3 ] 39 relocations: 40 - offset: 0x0000009C 41 type: ARM_RELOC_HALF 42 length: 1 43 pc-rel: false 44 extern: true 45 symbol: 4 46 - offset: 0x00000008 47 type: ARM_RELOC_PAIR 48 length: 1 49 pc-rel: false 50 extern: false 51 symbol: 16777215 52 - offset: 0x00000098 53 type: ARM_RELOC_HALF 54 length: 0 55 pc-rel: false 56 extern: true 57 symbol: 4 58 - offset: 0x00000000 59 type: ARM_RELOC_PAIR 60 length: 0 61 pc-rel: false 62 extern: false 63 symbol: 16777215 64 - offset: 0x00000094 65 type: ARM_RELOC_HALF 66 length: 1 67 pc-rel: false 68 extern: true 69 symbol: 4 70 - offset: 0x00000000 71 type: ARM_RELOC_PAIR 72 length: 1 73 pc-rel: false 74 extern: false 75 symbol: 16777215 76 - offset: 0x00000090 77 type: ARM_RELOC_HALF 78 length: 0 79 pc-rel: false 80 extern: true 81 symbol: 4 82 - offset: 0x00000000 83 type: ARM_RELOC_PAIR 84 length: 0 85 pc-rel: false 86 extern: false 87 symbol: 16777215 88 - offset: 0x0000008C 89 scattered: true 90 type: ARM_RELOC_HALF 91 length: 1 92 pc-rel: false 93 value: 0x000000A0 94 - offset: 0x000000A8 95 type: ARM_RELOC_PAIR 96 length: 1 97 pc-rel: false 98 extern: false 99 symbol: 16777215 100 - offset: 0x00000088 101 scattered: true 102 type: ARM_RELOC_HALF 103 length: 0 104 pc-rel: false 105 value: 0x000000A0 106 - offset: 0x00000000 107 type: ARM_RELOC_PAIR 108 length: 0 109 pc-rel: false 110 extern: false 111 symbol: 16777215 112 - offset: 0x00000084 113 type: ARM_RELOC_HALF 114 length: 1 115 pc-rel: false 116 extern: false 117 symbol: 2 118 - offset: 0x000000A0 119 type: ARM_RELOC_PAIR 120 length: 1 121 pc-rel: false 122 extern: false 123 symbol: 16777215 124 - offset: 0x00000080 125 type: ARM_RELOC_HALF 126 length: 0 127 pc-rel: false 128 extern: false 129 symbol: 2 130 - offset: 0x00000000 131 type: ARM_RELOC_PAIR 132 length: 0 133 pc-rel: false 134 extern: false 135 symbol: 16777215 136 - offset: 0x00000078 137 scattered: true 138 type: ARM_RELOC_HALF_SECTDIFF 139 length: 1 140 pc-rel: false 141 value: 0x000000A0 142 - offset: 0x00000028 143 scattered: true 144 type: ARM_RELOC_PAIR 145 length: 1 146 pc-rel: false 147 value: 0x00000080 148 - offset: 0x00000074 149 scattered: true 150 type: ARM_RELOC_HALF_SECTDIFF 151 length: 0 152 pc-rel: false 153 value: 0x000000A0 154 - offset: 0x00000000 155 scattered: true 156 type: ARM_RELOC_PAIR 157 length: 0 158 pc-rel: false 159 value: 0x00000080 160 - offset: 0x00000070 161 scattered: true 162 type: ARM_RELOC_HALF_SECTDIFF 163 length: 1 164 pc-rel: false 165 value: 0x000000A0 166 - offset: 0x00000020 167 scattered: true 168 type: ARM_RELOC_PAIR 169 length: 1 170 pc-rel: false 171 value: 0x00000080 172 - offset: 0x0000006C 173 scattered: true 174 type: ARM_RELOC_HALF_SECTDIFF 175 length: 0 176 pc-rel: false 177 value: 0x000000A0 178 - offset: 0x00000000 179 scattered: true 180 type: ARM_RELOC_PAIR 181 length: 0 182 pc-rel: false 183 value: 0x00000080 184 - offset: 0x00000068 185 type: ARM_RELOC_BR24 186 length: 2 187 pc-rel: true 188 extern: true 189 symbol: 4 190 - offset: 0x00000064 191 type: ARM_RELOC_BR24 192 length: 2 193 pc-rel: true 194 extern: true 195 symbol: 4 196 - offset: 0x00000060 197 type: ARM_RELOC_BR24 198 length: 2 199 pc-rel: true 200 extern: true 201 symbol: 4 202 - offset: 0x0000005C 203 scattered: true 204 type: ARM_RELOC_BR24 205 length: 2 206 pc-rel: true 207 value: 0x000000A0 208 - offset: 0x00000058 209 type: ARM_RELOC_BR24 210 length: 2 211 pc-rel: true 212 extern: false 213 symbol: 2 214 - offset: 0x00000052 215 type: ARM_RELOC_HALF 216 length: 3 217 pc-rel: false 218 extern: true 219 symbol: 4 220 - offset: 0x00000008 221 type: ARM_RELOC_PAIR 222 length: 3 223 pc-rel: false 224 extern: false 225 symbol: 16777215 226 - offset: 0x0000004E 227 type: ARM_RELOC_HALF 228 length: 2 229 pc-rel: false 230 extern: true 231 symbol: 4 232 - offset: 0x00000000 233 type: ARM_RELOC_PAIR 234 length: 2 235 pc-rel: false 236 extern: false 237 symbol: 16777215 238 - offset: 0x0000004A 239 type: ARM_RELOC_HALF 240 length: 3 241 pc-rel: false 242 extern: true 243 symbol: 4 244 - offset: 0x00000000 245 type: ARM_RELOC_PAIR 246 length: 3 247 pc-rel: false 248 extern: false 249 symbol: 16777215 250 - offset: 0x00000046 251 type: ARM_RELOC_HALF 252 length: 2 253 pc-rel: false 254 extern: true 255 symbol: 4 256 - offset: 0x00000000 257 type: ARM_RELOC_PAIR 258 length: 2 259 pc-rel: false 260 extern: false 261 symbol: 16777215 262 - offset: 0x00000042 263 type: ARM_RELOC_HALF 264 length: 3 265 pc-rel: false 266 extern: false 267 symbol: 1 268 - offset: 0x00000057 269 type: ARM_RELOC_PAIR 270 length: 3 271 pc-rel: false 272 extern: false 273 symbol: 16777215 274 - offset: 0x0000003E 275 type: ARM_RELOC_HALF 276 length: 2 277 pc-rel: false 278 extern: false 279 symbol: 1 280 - offset: 0x00000000 281 type: ARM_RELOC_PAIR 282 length: 2 283 pc-rel: false 284 extern: false 285 symbol: 16777215 286 - offset: 0x0000003A 287 scattered: true 288 type: ARM_RELOC_HALF 289 length: 3 290 pc-rel: false 291 value: 0x000000A0 292 - offset: 0x000000A8 293 type: ARM_RELOC_PAIR 294 length: 3 295 pc-rel: false 296 extern: false 297 symbol: 16777215 298 - offset: 0x00000036 299 scattered: true 300 type: ARM_RELOC_HALF 301 length: 2 302 pc-rel: false 303 value: 0x000000A0 304 - offset: 0x00000000 305 type: ARM_RELOC_PAIR 306 length: 2 307 pc-rel: false 308 extern: false 309 symbol: 16777215 310 - offset: 0x00000032 311 type: ARM_RELOC_HALF 312 length: 3 313 pc-rel: false 314 extern: false 315 symbol: 2 316 - offset: 0x000000A0 317 type: ARM_RELOC_PAIR 318 length: 3 319 pc-rel: false 320 extern: false 321 symbol: 16777215 322 - offset: 0x0000002E 323 type: ARM_RELOC_HALF 324 length: 2 325 pc-rel: false 326 extern: false 327 symbol: 2 328 - offset: 0x00000000 329 type: ARM_RELOC_PAIR 330 length: 2 331 pc-rel: false 332 extern: false 333 symbol: 16777215 334 - offset: 0x00000028 335 scattered: true 336 type: ARM_RELOC_HALF_SECTDIFF 337 length: 3 338 pc-rel: false 339 value: 0x00000056 340 - offset: 0x00000028 341 scattered: true 342 type: ARM_RELOC_PAIR 343 length: 3 344 pc-rel: false 345 value: 0x0000002E 346 - offset: 0x00000024 347 scattered: true 348 type: ARM_RELOC_HALF_SECTDIFF 349 length: 2 350 pc-rel: false 351 value: 0x00000056 352 - offset: 0x00000000 353 scattered: true 354 type: ARM_RELOC_PAIR 355 length: 2 356 pc-rel: false 357 value: 0x0000002E 358 - offset: 0x00000020 359 scattered: true 360 type: ARM_RELOC_HALF_SECTDIFF 361 length: 3 362 pc-rel: false 363 value: 0x000000A0 364 - offset: 0x0000007A 365 scattered: true 366 type: ARM_RELOC_PAIR 367 length: 3 368 pc-rel: false 369 value: 0x0000002E 370 - offset: 0x0000001C 371 scattered: true 372 type: ARM_RELOC_HALF_SECTDIFF 373 length: 2 374 pc-rel: false 375 value: 0x000000A0 376 - offset: 0x00000000 377 scattered: true 378 type: ARM_RELOC_PAIR 379 length: 2 380 pc-rel: false 381 value: 0x0000002E 382 - offset: 0x00000018 383 scattered: true 384 type: ARM_RELOC_HALF_SECTDIFF 385 length: 3 386 pc-rel: false 387 value: 0x000000A0 388 - offset: 0x00000072 389 scattered: true 390 type: ARM_RELOC_PAIR 391 length: 3 392 pc-rel: false 393 value: 0x0000002E 394 - offset: 0x00000014 395 scattered: true 396 type: ARM_RELOC_HALF_SECTDIFF 397 length: 2 398 pc-rel: false 399 value: 0x000000A0 400 - offset: 0x00000000 401 scattered: true 402 type: ARM_RELOC_PAIR 403 length: 2 404 pc-rel: false 405 value: 0x0000002E 406 - offset: 0x00000010 407 type: ARM_THUMB_RELOC_BR22 408 length: 2 409 pc-rel: true 410 extern: true 411 symbol: 4 412 - offset: 0x0000000C 413 type: ARM_THUMB_RELOC_BR22 414 length: 2 415 pc-rel: true 416 extern: true 417 symbol: 4 418 - offset: 0x00000008 419 type: ARM_THUMB_RELOC_BR22 420 length: 2 421 pc-rel: true 422 extern: true 423 symbol: 4 424 - offset: 0x00000004 425 scattered: true 426 type: ARM_THUMB_RELOC_BR22 427 length: 2 428 pc-rel: true 429 value: 0x000000A0 430 - offset: 0x00000000 431 type: ARM_THUMB_RELOC_BR22 432 length: 2 433 pc-rel: true 434 extern: false 435 symbol: 2 436 - segment: __DATA 437 section: __data 438 type: S_REGULAR 439 attributes: [ ] 440 address: 0x00000000000000A0 441 content: [ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 442 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 443 0x04, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 444 0xA4, 0xFF, 0xFF, 0xFF, 0x45, 0xFF, 0xFF, 0xFF, 445 0x45, 0xFF, 0xFF, 0xFF ] 446 relocations: 447 - offset: 0x00000020 448 scattered: true 449 type: ARM_RELOC_SECTDIFF 450 length: 2 451 pc-rel: false 452 value: 0x00000000 453 - offset: 0x00000000 454 scattered: true 455 type: ARM_RELOC_PAIR 456 length: 2 457 pc-rel: false 458 value: 0x000000C0 459 - offset: 0x0000001C 460 scattered: true 461 type: ARM_RELOC_SECTDIFF 462 length: 2 463 pc-rel: false 464 value: 0x00000000 465 - offset: 0x00000000 466 scattered: true 467 type: ARM_RELOC_PAIR 468 length: 2 469 pc-rel: false 470 value: 0x000000BC 471 - offset: 0x00000018 472 scattered: true 473 type: ARM_RELOC_SECTDIFF 474 length: 2 475 pc-rel: false 476 value: 0x00000058 477 - offset: 0x00000000 478 scattered: true 479 type: ARM_RELOC_PAIR 480 length: 2 481 pc-rel: false 482 value: 0x000000B8 483 - offset: 0x00000014 484 scattered: true 485 type: ARM_RELOC_SECTDIFF 486 length: 2 487 pc-rel: false 488 value: 0x00000058 489 - offset: 0x00000000 490 scattered: true 491 type: ARM_RELOC_PAIR 492 length: 2 493 pc-rel: false 494 value: 0x000000B4 495 - offset: 0x00000010 496 type: ARM_RELOC_VANILLA 497 length: 2 498 pc-rel: false 499 extern: true 500 symbol: 4 501 - offset: 0x0000000C 502 type: ARM_RELOC_VANILLA 503 length: 2 504 pc-rel: false 505 extern: true 506 symbol: 4 507 - offset: 0x00000008 508 scattered: true 509 type: ARM_RELOC_VANILLA 510 length: 2 511 pc-rel: false 512 value: 0x00000000 513 - offset: 0x00000004 514 type: ARM_RELOC_VANILLA 515 length: 2 516 pc-rel: false 517 extern: false 518 symbol: 1 519local-symbols: 520 - name: _foo_thumb 521 type: N_SECT 522 sect: 1 523 desc: [ N_ARM_THUMB_DEF ] 524 value: 0x0000000000000000 525 - name: _x 526 type: N_SECT 527 sect: 2 528 value: 0x00000000000000A0 529 - name: _t1 530 type: N_SECT 531 sect: 1 532 desc: [ N_ARM_THUMB_DEF ] 533 value: 0x0000000000000056 534 - name: _foo_arm 535 type: N_SECT 536 sect: 1 537 value: 0x0000000000000058 538undefined-symbols: 539 - name: _undef 540 type: N_UNDF 541 scope: [ N_EXT ] 542 value: 0x0000000000000000 543... 544 545# CHECK: defined-atoms: 546# CHECK: - name: _x 547# CHECK: type: data 548# CHECK: references: 549# CHECK: - kind: pointer32 550# CHECK: offset: 4 551# CHECK: target: _foo_thumb 552# CHECK-NOT: addend: 553# CHECK: - kind: pointer32 554# CHECK: offset: 8 555# CHECK: target: _foo_thumb 556# CHECK: addend: 4 557# CHECK: - kind: pointer32 558# CHECK: offset: 12 559# CHECK: target: _undef 560# CHECK-NOT: addend: 561# CHECK: - kind: pointer32 562# CHECK: offset: 16 563# CHECK: target: _undef 564# CHECK: addend: 4 565# CHECK: - kind: delta32 566# CHECK: offset: 20 567# CHECK: target: _foo_arm 568# CHECK-NOT: addend: 569# CHECK: - kind: delta32 570# CHECK: offset: 24 571# CHECK: target: _foo_arm 572# CHECK: addend: 4 573# CHECK: - kind: delta32 574# CHECK: offset: 28 575# CHECK: target: _foo_thumb 576# CHECK-NOT: addend: 577# CHECK: - kind: delta32 578# CHECK: offset: 32 579# CHECK: target: _foo_thumb 580# CHECK: addend: 4 581# CHECK: - name: _foo_thumb 582# CHECK: references: 583# CHECK: - kind: modeThumbCode 584# CHECK: offset: 0 585# CHECK: - kind: thumb_bl22 586# CHECK: offset: 0 587# CHECK: target: _x 588# CHECK-NOT: addend: 589# CHECK: - kind: thumb_bl22 590# CHECK: offset: 4 591# CHECK: target: _x 592# CHECK: addend: 4 593# CHECK: - kind: thumb_bl22 594# CHECK: offset: 8 595# CHECK: target: _undef 596# CHECK-NOT: addend: 597# CHECK: - kind: thumb_bl22 598# CHECK: offset: 12 599# CHECK: target: _undef 600# CHECK: addend: 4 601# CHECK: - kind: thumb_b22 602# CHECK: offset: 16 603# CHECK: target: _undef 604# CHECK-NOT: addend: 605# CHECK: - kind: thumb_movw_funcRel 606# CHECK: offset: 20 607# CHECK: target: _x 608# CHECK: addend: -46 609# CHECK: - kind: thumb_movt_funcRel 610# CHECK: offset: 24 611# CHECK: target: _x 612# CHECK: addend: -46 613# CHECK: - kind: thumb_movw_funcRel 614# CHECK: offset: 28 615# CHECK: target: _x 616# CHECK: addend: -38 617# CHECK: - kind: thumb_movt_funcRel 618# CHECK: offset: 32 619# CHECK: target: _x 620# CHECK: addend: -38 621# CHECK: - kind: thumb_movw_funcRel 622# CHECK: offset: 36 623# CHECK: target: _t1 624# CHECK: addend: -46 625# CHECK: - kind: thumb_movt_funcRel 626# CHECK: offset: 40 627# CHECK: target: _t1 628# CHECK: addend: -46 629# CHECK: - kind: thumb_movw 630# CHECK: offset: 46 631# CHECK: target: _x 632# CHECK-NOT: addend: 633# CHECK: - kind: thumb_movt 634# CHECK: offset: 50 635# CHECK: target: _x 636# CHECK-NOT: addend: 637# CHECK: - kind: thumb_movw 638# CHECK: offset: 54 639# CHECK: target: _x 640# CHECK: addend: 8 641# CHECK: - kind: thumb_movt 642# CHECK: offset: 58 643# CHECK: target: _x 644# CHECK: addend: 8 645# CHECK: - kind: thumb_movw 646# CHECK: offset: 62 647# CHECK: target: _t1 648# CHECK-NOT: addend: 649# CHECK: - kind: thumb_movt 650# CHECK: offset: 66 651# CHECK: target: _t1 652# CHECK-NOT: addend: 653# CHECK: - kind: thumb_movw 654# CHECK: offset: 70 655# CHECK: target: _undef 656# CHECK-NOT: addend: 657# CHECK: - kind: thumb_movt 658# CHECK: offset: 74 659# CHECK: target: _undef 660# CHECK-NOT: addend: 661# CHECK: - kind: thumb_movw 662# CHECK: offset: 78 663# CHECK: target: _undef 664# CHECK: addend: 8 665# CHECK: - kind: thumb_movt 666# CHECK: offset: 82 667# CHECK: target: _undef 668# CHECK: addend: 8 669# CHECK: - name: _t1 670# CHECK: content: [ C0, 46 ] 671# CHECK: references: 672# CHECK: - kind: modeThumbCode 673# CHECK: offset: 0 674# CHECK: - name: _foo_arm 675# CHECK: references: 676# CHECK-NOT: - kind: modeThumbCode 677# CHECK: - kind: arm_bl24 678# CHECK: offset: 0 679# CHECK: target: _x 680# CHECK-NOT: addend: 681# CHECK: - kind: arm_bl24 682# CHECK: offset: 4 683# CHECK: target: _x 684# CHECK: addend: 4 685# CHECK: - kind: arm_bl24 686# CHECK: offset: 8 687# CHECK: target: _undef 688# CHECK-NOT: addend: 689# CHECK: - kind: arm_bl24 690# CHECK: offset: 12 691# CHECK: target: _undef 692# CHECK: addend: 4 693# CHECK: - kind: arm_b24 694# CHECK: offset: 16 695# CHECK: target: _undef 696# CHECK-NOT: addend: 697# CHECK: - kind: arm_movw_funcRel 698# CHECK: offset: 20 699# CHECK: target: _x 700# CHECK: addend: -40 701# CHECK: - kind: arm_movt_funcRel 702# CHECK: offset: 24 703# CHECK: target: _x 704# CHECK: addend: -40 705# CHECK: - kind: arm_movw_funcRel 706# CHECK: offset: 28 707# CHECK: target: _x 708# CHECK: addend: -32 709# CHECK: - kind: arm_movt_funcRel 710# CHECK: offset: 32 711# CHECK: target: _x 712# CHECK: addend: -32 713# CHECK: - kind: arm_movw 714# CHECK: offset: 40 715# CHECK: target: _x 716# CHECK-NOT: addend: 717# CHECK: - kind: arm_movt 718# CHECK: offset: 44 719# CHECK: target: _x 720# CHECK-NOT: addend: 721# CHECK: - kind: arm_movw 722# CHECK: offset: 48 723# CHECK: target: _x 724# CHECK: addend: 8 725# CHECK: - kind: arm_movt 726# CHECK: offset: 52 727# CHECK: target: _x 728# CHECK: addend: 8 729# CHECK: - kind: arm_movw 730# CHECK: offset: 56 731# CHECK: target: _undef 732# CHECK-NOT: addend: 733# CHECK: - kind: arm_movt 734# CHECK: offset: 60 735# CHECK: target: _undef 736# CHECK-NOT: addend: 737# CHECK: - kind: arm_movw 738# CHECK: offset: 64 739# CHECK: target: _undef 740# CHECK: addend: 8 741# CHECK: - kind: arm_movt 742# CHECK: offset: 68 743# CHECK: target: _undef 744# CHECK: addend: 8 745# CHECK: undefined-atoms: 746# CHECK: - name: _undef 747 748 749 750 751# .align 2 752# .code 16 753# .thumb_func _foo_thumb 754#_foo_thumb: 755# bl _x 756# bl _x+4 757# bl _undef 758# bl _undef+4 759# b _undef 760# movw r1, :lower16:(_x-L1) 761# movt r1, :upper16:(_x-L1) 762# movw r2, :lower16:(_x+8-L1) 763# movt r2, :upper16:(_x+8-L1) 764# movw r1, :lower16:(_t1-L1) 765# movt r1, :upper16:(_t1-L1) 766# add r1, pc 767#L1: 768# movw r3, :lower16:_x 769# movt r3, :upper16:_x 770# movw r4, :lower16:_x+8 771# movt r4, :upper16:_x+8 772# movw r3, :lower16:_t1 773# movt r3, :upper16:_t1 774# movw r5, :lower16:_undef 775# movt r5, :upper16:_undef 776# movw r6, :lower16:_undef+8 777# movt r6, :upper16:_undef+8 778# 779# .thumb_func _t1 780#_t1: 781# nop 782# 783# 784# .code 32 785# .align 2 786#_foo_arm: 787# bl _x 788# bl _x+4 789# bl _undef 790# bl _undef+4 791# b _undef 792# movw r1, :lower16:(_x-L2) 793# movt r1, :upper16:(_x-L2) 794# movw r2, :lower16:(_x+8-L2) 795# movt r2, :upper16:(_x+8-L2) 796# add r1, pc 797#L2: 798# movw r3, :lower16:_x 799# movt r3, :upper16:_x 800# movw r4, :lower16:_x+8 801# movt r4, :upper16:_x+8 802# movw r5, :lower16:_undef 803# movt r5, :upper16:_undef 804# movw r6, :lower16:_undef+8 805# movt r6, :upper16:_undef+8 806# 807# 808# .data 809#_x: .long 0 810# .long _foo_thumb 811# .long _foo_thumb+4 812# .long _undef 813# .long _undef+4 814# .long _foo_arm - . 815# .long _foo_arm+4- . 816# .long _foo_thumb - . 817# .long _foo_thumb+4 - . 818# 819