relocation-386.s revision eada30479399014c22c7b7edb008177c312eefee
1c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// RUN: llvm-mc -filetype=obj -triple i386-pc-linux-gnu %s -o - | elf-dump | FileCheck %s 2c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 39edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// Test that we produce the correct relocation types and that the relocation 49edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// to .Lfoo uses the symbol and not the section. 5c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 6ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// Section 3 is bss 7ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK: # Section 3 8ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: (('sh_name', 13) # '.bss' 9c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 10c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK: # Symbol 1 11c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK-NEXT: (('st_name', 5) # '.Lfoo' 12c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 13ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// Symbol 6 is section 3 14ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK: # Symbol 6 15ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: (('st_name', 0) # '' 16ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_value', 0) 17ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_size', 0) 18ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_bind', 0) 19ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_type', 3) 20ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_other', 0) 21ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('st_shndx', 3) 22ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola 23c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK: # Relocation 0 24c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK-NEXT: (('r_offset', 2) 25c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK-NEXT: ('r_sym', 1) 26c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola// CHECK-NEXT: ('r_type', 9) 279edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// CHECK-NEXT: ), 289edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// CHECK-NEXT: # Relocation 1 299edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// CHECK-NEXT: (('r_offset', 309edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// CHECK-NEXT: ('r_sym', 319edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola// CHECK-NEXT: ('r_type', 4) 32aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: ), 33aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: # Relocation 2 34aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: (('r_offset', 35aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: ('r_sym', 36aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: ('r_type', 10) 37aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola// CHECK-NEXT: ), 38c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola 39eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// Relocation 3 (bar3@GOTOFF) is done with symbol 6 (bss) 40ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: # Relocation 3 41ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: (('r_offset', 42ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('r_sym', 6 43ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ('r_type', 44ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola// CHECK-NEXT: ), 45ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola 46eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// Relocation 4 (bar2@GOT) is of type R_386_GOT32 47eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// CHECK-NEXT: # Relocation 4 48eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// CHECK-NEXT: (('r_offset', 49eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// CHECK-NEXT: ('r_sym', 50eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// CHECK-NEXT: ('r_type', 3 51eada30479399014c22c7b7edb008177c312eefeeRafael Espindola// CHECK-NEXT: ), 52eada30479399014c22c7b7edb008177c312eefeeRafael Espindola 53c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola .text 54c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindolabar: 55c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola leal .Lfoo@GOTOFF(%ebx), %eax 569edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola 579edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola .global bar2 589edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindolabar2: 599edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola calll bar2@PLT 60aa85c216334a6adac7e0a154d357b370629dc1bcRafael Espindola addl $_GLOBAL_OFFSET_TABLE_, %ebx 61ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola movb bar3@GOTOFF(%ebx), %al 62ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola 63ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .type bar3,@object 64ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .local bar3 65ce2d3c57758619e99a99104e1168a9558658fab0Rafael Espindola .comm bar3,1,1 669edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola 67eada30479399014c22c7b7edb008177c312eefeeRafael Espindola movl bar2j@GOT(%eax), %eax 68eada30479399014c22c7b7edb008177c312eefeeRafael Espindola 699edab3a9e15c40c1c9bf70df81c6afdab1cd02c2Rafael Espindola .section .rodata.str1.16,"aMS",@progbits,1 70c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola.Lfoo: 71c97f80efc80030c7544a9903c79d2dccd197a0ffRafael Espindola .asciz "bool llvm::llvm_start_multithreaded()" 72