relocation-386.s revision 7486d92a6c949a193bb75c0ffa0170eeb2fabb80
1f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | llvm-readobj -r -t | FileCheck %s 2c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 31683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola// Test that we produce the correct relocation types and that the relocations 41683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola// correctly point to the section or the symbol. 5c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 6f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK: Relocations [ 77486d92a6c949a193bb75c0ffa0170eeb2fabb80Rafael Espindola// CHECK-NEXT: Section (2) .rel.text { 8f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x2 R_386_GOTOFF .Lfoo 0x0 9f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x{{[^ ]+}} R_386_PLT32 bar2 0x0 10f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0 111683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola// Relocation 3 (bar3@GOTOFF) is done with symbol 7 (bss) 12f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOTOFF .bss 0x0 13eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// Relocation 4 (bar2@GOT) is of type R_386_GOT32 14f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x{{[^ ]+}} R_386_GOT32 bar2j 0x0 15eada30479399014c22c7b7edb008177c312eefeeRafael Espindola 163cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola// Relocation 5 (foo@TLSGD) is of type R_386_TLS_GD 17f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x20 R_386_TLS_GD foo 0x0 183cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola// Relocation 6 ($foo@TPOFF) is of type R_386_TLS_LE_32 19f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x25 R_386_TLS_LE_32 foo 0x0 203cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola// Relocation 7 (foo@INDNTPOFF) is of type R_386_TLS_IE 21f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x2B R_386_TLS_IE foo 0x0 223cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola// Relocation 8 (foo@NTPOFF) is of type R_386_TLS_LE 23f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x31 R_386_TLS_LE foo 0x0 24a0a2f8734cdfc19d44201b791a969bcdda96bb70Rafael Espindola// Relocation 9 (foo@GOTNTPOFF) is of type R_386_TLS_GOTIE 25f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x37 R_386_TLS_GOTIE foo 0x0 26a264f72d3fb9dec1427480fcf17ef3c746ea723aRafael Espindola// Relocation 10 (foo@TLSLDM) is of type R_386_TLS_LDM 27f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x3D R_386_TLS_LDM foo 0x0 280cf15d61b7e3bf53f5a99f58ada37b93bc039559Rafael Espindola// Relocation 11 (foo@DTPOFF) is of type R_386_TLS_LDO_32 29f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x43 R_386_TLS_LDO_32 foo 0x0 3012203cc7c3f7392d62556946a10b2f10205ea63dRafael Espindola// Relocation 12 (calll 4096) is of type R_386_PC32 31f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x48 R_386_PC32 - 0x0 3225958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 13 (zed@GOT) is of type R_386_GOT32 and uses the symbol 33f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x4E R_386_GOT32 zed 0x0 3425958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 14 (zed@GOTOFF) is of type R_386_GOTOFF and uses the symbol 35f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x54 R_386_GOTOFF zed 0x0 3625958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 15 (zed@INDNTPOFF) is of type R_386_TLS_IE and uses the symbol 37f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x5A R_386_TLS_IE zed 0x0 3825958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 16 (zed@NTPOFF) is of type R_386_TLS_LE and uses the symbol 39f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x60 R_386_TLS_LE zed 0x0 4025958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 17 (zed@GOTNTPOFF) is of type R_386_TLS_GOTIE and uses the symbol 41f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x66 R_386_TLS_GOTIE zed 0x0 4225958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 18 (zed@PLT) is of type R_386_PLT32 and uses the symbol 43f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x6B R_386_PLT32 zed 0x0 4425958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 19 (zed@TLSGD) is of type R_386_TLS_GD and uses the symbol 45f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x71 R_386_TLS_GD zed 0x0 4625958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 20 (zed@TLSLDM) is of type R_386_TLS_LDM and uses the symbol 47f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x77 R_386_TLS_LDM zed 0x0 4825958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 21 (zed@TPOFF) is of type R_386_TLS_LE_32 and uses the symbol 49f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x7D R_386_TLS_LE_32 zed 0x0 5025958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola// Relocation 22 (zed@DTPOFF) is of type R_386_TLS_LDO_32 and uses the symbol 51f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x83 R_386_TLS_LDO_32 zed 0x0 52a5ff979c114a658c69fddd065d702a13c40f6ae1Rafael Espindola// Relocation 23 ($bar) is of type R_386_32 and uses the section 53f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x{{[^ ]+}} R_386_32 .text 0x0 54e0b87032f5ac8134b7585bdc4a0f2c77158b962dNick Lewycky// Relocation 24 (foo@GOTTPOFF(%edx)) is of type R_386_TLS_IE_32 and uses the 55e0b87032f5ac8134b7585bdc4a0f2c77158b962dNick Lewycky// symbol 56f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x8E R_386_TLS_IE_32 foo 0x0 571d5969d839ddc4d0af93fd035aa13131e5c6fa82Rafael Espindola// Relocation 25 (_GLOBAL_OFFSET_TABLE_-bar2) is of type R_386_GOTPC. 58f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x94 R_386_GOTPC _GLOBAL_OFFSET_TABLE_ 0x0 593c68acd202d061c38e9b7744012094b4009d932aRafael Espindola// Relocation 26 (und_symbol-bar2) is of type R_386_PC32 60f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: 0x9A R_386_PC32 und_symbol 0x0 61f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: } 62f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: ] 637c18fa87a4d4ed8b0cfe1ec65597c748c6d91ca9Rafael Espindola 647c18fa87a4d4ed8b0cfe1ec65597c748c6d91ca9Rafael Espindola// Symbol 4 is zed 65f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK: Symbol { 66f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK: Name: zed (53) 67f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Value: 0x0 68f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Size: 0 69f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Binding: Local 70f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Type: TLS 71f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Other: 0 72f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Section: zedsec (0x5) 73f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: } 747c18fa87a4d4ed8b0cfe1ec65597c748c6d91ca9Rafael Espindola// Symbol 7 is section 4 75f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK: Symbol { 76f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK: Name: .bss (0) 77f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Value: 0x0 78f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Size: 0 79f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Binding: Local 80f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Type: Section 81f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Other: 0 82f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: Section: .bss (0x4) 83f89da7210b09a0a0f7c9ee216cd54dca03c6b64aNico Rieck// CHECK-NEXT: } 847c18fa87a4d4ed8b0cfe1ec65597c748c6d91ca9Rafael Espindola 85c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola .text 86c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindolabar: 87c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola leal .Lfoo@GOTOFF(%ebx), %eax 889edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola 899edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola .global bar2 909edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindolabar2: 919edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola calll bar2@PLT 92aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola addl $_GLOBAL_OFFSET_TABLE_, %ebx 93ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola movb bar3@GOTOFF(%ebx), %al 94ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola 95ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .type bar3,@object 96ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .local bar3 97ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .comm bar3,1,1 989edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola 99eada30479399014c22c7b7edb008177c312eefeeRafael Espindola movl bar2j@GOT(%eax), %eax 100eada30479399014c22c7b7edb008177c312eefeeRafael Espindola 1013cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola leal foo@TLSGD(, %ebx,1), %eax 1023cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola movl $foo@TPOFF, %edx 1033cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola movl foo@INDNTPOFF, %ecx 1043cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola addl foo@NTPOFF(%eax), %eax 105a0a2f8734cdfc19d44201b791a969bcdda96bb70Rafael Espindola addl foo@GOTNTPOFF(%ebx), %ecx 106a264f72d3fb9dec1427480fcf17ef3c746ea723aRafael Espindola leal foo@TLSLDM(%ebx), %eax 1070cf15d61b7e3bf53f5a99f58ada37b93bc039559Rafael Espindola leal foo@DTPOFF(%eax), %edx 10812203cc7c3f7392d62556946a10b2f10205ea63dRafael Espindola calll 4096 10925958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@GOT(%eax), %eax 11025958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@GOTOFF(%eax), %eax 11125958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@INDNTPOFF(%eax), %eax 1121683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola movl zed@NTPOFF(%eax), %eax 11325958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@GOTNTPOFF(%eax), %eax 11425958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola call zed@PLT 11525958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@TLSGD(%eax), %eax 11625958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@TLSLDM(%eax), %eax 11725958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@TPOFF(%eax), %eax 11825958730dffe0a16f9c251a1fa317799b8419a1fRafael Espindola movl zed@DTPOFF(%eax), %eax 119a5ff979c114a658c69fddd065d702a13c40f6ae1Rafael Espindola pushl $bar 120e0b87032f5ac8134b7585bdc4a0f2c77158b962dNick Lewycky addl foo@GOTTPOFF(%edx), %eax 1211d5969d839ddc4d0af93fd035aa13131e5c6fa82Rafael Espindola subl _GLOBAL_OFFSET_TABLE_-bar2, %ebx 1223c68acd202d061c38e9b7744012094b4009d932aRafael Espindola leal und_symbol-bar2(%edx),%ecx 1231683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola 1241683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola .section zedsec,"awT",@progbits 1251683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindolazed: 1261683fcc82397681a64a35884edc9c62c49f2f179Rafael Espindola .long 0 1273cede2d0b2b6cc0a06f55da7c2f8e4263ec0091eRafael Espindola 1289edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola .section .rodata.str1.16,"aMS",@progbits,1 129c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola.Lfoo: 130c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola .asciz "bool llvm::llvm_start_multithreaded()" 131