diff options
Diffstat (limited to 'test/MC/ELF')
47 files changed, 481 insertions, 267 deletions
diff --git a/test/MC/ELF/alias-reloc.s b/test/MC/ELF/alias-reloc.s index c908c12..67266d6 100644 --- a/test/MC/ELF/alias-reloc.s +++ b/test/MC/ELF/alias-reloc.s @@ -17,6 +17,20 @@ foo2: .set bar2,foo2 .quad bar2 +// CHECK: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000001) +// CHECK-NEXT: ('r_sym', 0x00000001) +// CHECK-NEXT: ('r_type', 0x00000004) +// CHECK-NEXT: ('r_addend', 0xfffffffc) +// CHECK-NEXT: ), + +// CHECK: # Relocation 0x00000001 +// CHECK-NEXT: (('r_offset', 0x00000005) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x00000001) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), + // CHECK: # Symbol 0x00000001 // CHECK-NEXT: (('st_name', 0x00000005) # 'bar' // CHECK-NEXT: ('st_bind', 0x00000000) @@ -36,17 +50,3 @@ foo2: // CHECK-NEXT: ('st_value', 0x0000000000000005) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), - -// CHECK: # Relocation 0x00000000 -// CHECK-NEXT: (('r_offset', 0x00000001) -// CHECK-NEXT: ('r_sym', 0x00000001) -// CHECK-NEXT: ('r_type', 0x00000004) -// CHECK-NEXT: ('r_addend', 0xfffffffc) -// CHECK-NEXT: ), - -// CHECK: # Relocation 0x00000001 -// CHECK-NEXT: (('r_offset', 0x00000005) -// CHECK-NEXT: ('r_sym', 0x00000006) -// CHECK-NEXT: ('r_type', 0x00000001) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), diff --git a/test/MC/ELF/align-bss.s b/test/MC/ELF/align-bss.s index 4f73a29..ca6da91 100644 --- a/test/MC/ELF/align-bss.s +++ b/test/MC/ELF/align-bss.s @@ -5,7 +5,7 @@ .local foo .comm foo,2048,16 -// CHECK: ('sh_name', 0x0000000d) # '.bss' +// CHECK: ('sh_name', 0x00000007) # '.bss' // CHECK-NEXT: ('sh_type', 0x00000008) // CHECK-NEXT: ('sh_flags', 0x00000003) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/align-nops.s b/test/MC/ELF/align-nops.s index 28d4b89..d29cb5b 100644 --- a/test/MC/ELF/align-nops.s +++ b/test/MC/ELF/align-nops.s @@ -27,7 +27,7 @@ f0: // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ('_section_data', '00000000 0f1f4000 00000000 0f1f4000') -// CHECK: (('sh_name', 0x00000007) # '.data' +// CHECK: (('sh_name', 0x00000026) # '.data' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000003) // CHECK-NEXT: ('sh_addr', diff --git a/test/MC/ELF/align.s b/test/MC/ELF/align.s index c3912a7..c1e7086 100644 --- a/test/MC/ELF/align.s +++ b/test/MC/ELF/align.s @@ -8,7 +8,7 @@ .align 8 // CHECK: # Section 0x00000003 -// CHECK-NEXT: (('sh_name', 0x0000000d) # '.bss' +// CHECK-NEXT: (('sh_name', 0x00000007) # '.bss' // CHECK-NEXT: ('sh_type', 0x00000008) // CHECK-NEXT: ('sh_flags', 0x00000003) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -20,7 +20,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.rodata' +// CHECK-NEXT: (('sh_name', 0x00000026) # '.rodata' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/basic-elf-32.s b/test/MC/ELF/basic-elf-32.s index fa97da4..7c2927a 100644 --- a/test/MC/ELF/basic-elf-32.s +++ b/test/MC/ELF/basic-elf-32.s @@ -39,23 +39,6 @@ main: # @main // CHECK: # '.text' -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: # 'main' -// CHECK: ('st_bind', 0x00000001) -// CHECK-NEXT: ('st_type', 0x00000002) - -// CHECK: # 'puts' -// CHECK: ('st_bind', 0x00000001) -// CHECK-NEXT: ('st_type', 0x00000000) - // CHECK: # '.rel.text' // CHECK: ('_relocations', [ @@ -76,3 +59,20 @@ main: # @main // CHECK: ('r_type', 0x00000002) // CHECK: ), // CHECK: ]) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: # 'main' +// CHECK: ('st_bind', 0x00000001) +// CHECK-NEXT: ('st_type', 0x00000002) + +// CHECK: # 'puts' +// CHECK: ('st_bind', 0x00000001) +// CHECK-NEXT: ('st_type', 0x00000000) diff --git a/test/MC/ELF/basic-elf-64.s b/test/MC/ELF/basic-elf-64.s index 7fc40b7..5ae1f45 100644 --- a/test/MC/ELF/basic-elf-64.s +++ b/test/MC/ELF/basic-elf-64.s @@ -39,23 +39,6 @@ main: # @main // CHECK: # '.text' -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) - -// CHECK: # 'main' -// CHECK-NEXT: ('st_bind', 0x00000001) -// CHECK-NEXT: ('st_type', 0x00000002) - -// CHECK: # 'puts' -// CHECK-NEXT: ('st_bind', 0x00000001) -// CHECK-NEXT: ('st_type', 0x00000000) - // CHECK: # '.rela.text' // CHECK: ('_relocations', [ @@ -80,3 +63,20 @@ main: # @main // CHECK: ('r_addend', 0xfffffffc) // CHECK: ), // CHECK: ]) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) + +// CHECK: # 'main' +// CHECK-NEXT: ('st_bind', 0x00000001) +// CHECK-NEXT: ('st_type', 0x00000002) + +// CHECK: # 'puts' +// CHECK-NEXT: ('st_bind', 0x00000001) +// CHECK-NEXT: ('st_type', 0x00000000) diff --git a/test/MC/ELF/cfi-adjust-cfa-offset.s b/test/MC/ELF/cfi-adjust-cfa-offset.s new file mode 100644 index 0000000..5c1a9f9 --- /dev/null +++ b/test/MC/ELF/cfi-adjust-cfa-offset.s @@ -0,0 +1,46 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s + +f: + .cfi_startproc + subq $8, %rsp + .cfi_def_cfa_offset 16 + nop + .cfi_adjust_cfa_offset 4 + addq $8, %rsp + .cfi_def_cfa_offset 8 + ret + .cfi_endproc + +// CHECK: # Section 0x00000004 +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000001) +// CHECK-NEXT: ('sh_flags', 0x00000002) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000050) +// CHECK-NEXT: ('sh_size', 0x00000038) +// CHECK-NEXT: ('sh_link', 0x00000000) +// CHECK-NEXT: ('sh_info', 0x00000000) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000000) +// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 1c000000 1c000000 00000000 0a000000 00440e10 410e1444 0e080000 00000000') +// CHECK-NEXT: ), +// CHECK-NEXT: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000004) +// CHECK-NEXT: ('sh_flags', 0x00000000) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x000003a0) +// CHECK-NEXT: ('sh_size', 0x00000018) +// CHECK-NEXT: ('sh_link', 0x00000007) +// CHECK-NEXT: ('sh_info', 0x00000004) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000018) +// CHECK-NEXT: ('_relocations', [ +// CHECK-NEXT: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000020) +// CHECK-NEXT: ('r_sym', 0x00000002) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: ]) +// CHECK-NEXT: ), diff --git a/test/MC/ELF/cfi-advance-loc2.s b/test/MC/ELF/cfi-advance-loc2.s index 3ffdd6c..163e810 100644 --- a/test/MC/ELF/cfi-advance-loc2.s +++ b/test/MC/ELF/cfi-advance-loc2.s @@ -10,7 +10,7 @@ f: nop .cfi_endproc -// CHECK: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -24,13 +24,13 @@ f: // CHECK-NEXT: ), -// CHECK: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000258) +// CHECK-NEXT: ('sh_offset', 0x00000490) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-def-cfa-offset.s b/test/MC/ELF/cfi-def-cfa-offset.s index efefb87..124d02e 100644 --- a/test/MC/ELF/cfi-def-cfa-offset.s +++ b/test/MC/ELF/cfi-def-cfa-offset.s @@ -11,7 +11,7 @@ f: .cfi_endproc // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -24,14 +24,14 @@ f: // CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 0a000000 00440e10 450e0800') // CHECK-NEXT: ), -// CHECK: # Section 0x00000008 -// CHECK-NEXT: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000160) +// CHECK-NEXT: ('sh_offset', 0x00000398) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-def-cfa-register.s b/test/MC/ELF/cfi-def-cfa-register.s index 3df2021..75311e2 100644 --- a/test/MC/ELF/cfi-def-cfa-register.s +++ b/test/MC/ELF/cfi-def-cfa-register.s @@ -7,7 +7,7 @@ f: nop .cfi_endproc -// CHECK: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -20,13 +20,13 @@ f: // CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410d06 00000000') // CHECK-NEXT: ), -// CHECK: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000158) +// CHECK-NEXT: ('sh_offset', 0x00000390) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-def-cfa.s b/test/MC/ELF/cfi-def-cfa.s index 1ad427b..53a169c 100644 --- a/test/MC/ELF/cfi-def-cfa.s +++ b/test/MC/ELF/cfi-def-cfa.s @@ -7,7 +7,7 @@ f: nop .cfi_endproc -// CHECK: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -21,13 +21,13 @@ f: // CHECK-NEXT: ), -// CHECK: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000158) +// CHECK-NEXT: ('sh_offset', 0x00000390) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-offset.s b/test/MC/ELF/cfi-offset.s index 2f7e797..963a76c 100644 --- a/test/MC/ELF/cfi-offset.s +++ b/test/MC/ELF/cfi-offset.s @@ -7,7 +7,7 @@ f: nop .cfi_endproc -// CHECK: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -21,13 +21,13 @@ f: // CHECK-NEXT: ), -// CHECK: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000158) +// CHECK-NEXT: ('sh_offset', 0x00000390) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-rel-offset.s b/test/MC/ELF/cfi-rel-offset.s new file mode 100644 index 0000000..87c0cf3 --- /dev/null +++ b/test/MC/ELF/cfi-rel-offset.s @@ -0,0 +1,49 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s + +f: + .cfi_startproc + nop + .cfi_def_cfa_offset 8 + nop + .cfi_def_cfa_register 6 + nop + .cfi_rel_offset 6,16 + nop + .cfi_def_cfa_offset 16 + nop + .cfi_rel_offset 6,0 + .cfi_endproc + +// CHECK: # Section 0x00000004 +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000001) +// CHECK-NEXT: ('sh_flags', 0x00000002) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000048) +// CHECK-NEXT: ('sh_size', 0x00000040) +// CHECK-NEXT: ('sh_link', 0x00000000) +// CHECK-NEXT: ('sh_info', 0x00000000) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000000) +// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 24000000 1c000000 00000000 05000000 00410e08 410d0641 11067f41 0e104186 02000000 00000000') +// CHECK-NEXT: ), +// CHECK-NEXT: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000004) +// CHECK-NEXT: ('sh_flags', 0x00000000) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x000003a0) +// CHECK-NEXT: ('sh_size', 0x00000018) +// CHECK-NEXT: ('sh_link', 0x00000007) +// CHECK-NEXT: ('sh_info', 0x00000004) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000018) +// CHECK-NEXT: ('_relocations', [ +// CHECK-NEXT: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000020) +// CHECK-NEXT: ('r_sym', 0x00000002) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: ]) +// CHECK-NEXT: ), diff --git a/test/MC/ELF/cfi-rel-offset2.s b/test/MC/ELF/cfi-rel-offset2.s new file mode 100644 index 0000000..f14beaf --- /dev/null +++ b/test/MC/ELF/cfi-rel-offset2.s @@ -0,0 +1,41 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s + +f: + .cfi_startproc + nop + .cfi_rel_offset 6,16 + .cfi_endproc + +// CHECK: # Section 0x00000004 +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000001) +// CHECK-NEXT: ('sh_flags', 0x00000002) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000048) +// CHECK-NEXT: ('sh_size', 0x00000030) +// CHECK-NEXT: ('sh_link', 0x00000000) +// CHECK-NEXT: ('sh_info', 0x00000000) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000000) +// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 01000000 00411106 7f000000') +// CHECK-NEXT: ), +// CHECK-NEXT: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000004) +// CHECK-NEXT: ('sh_flags', 0x00000000) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000390) +// CHECK-NEXT: ('sh_size', 0x00000018) +// CHECK-NEXT: ('sh_link', 0x00000007) +// CHECK-NEXT: ('sh_info', 0x00000004) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000018) +// CHECK-NEXT: ('_relocations', [ +// CHECK-NEXT: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000020) +// CHECK-NEXT: ('r_sym', 0x00000002) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: ]) +// CHECK-NEXT: ), diff --git a/test/MC/ELF/cfi-remember.s b/test/MC/ELF/cfi-remember.s index b5b3803..814812e 100644 --- a/test/MC/ELF/cfi-remember.s +++ b/test/MC/ELF/cfi-remember.s @@ -10,7 +10,7 @@ f: .cfi_endproc // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -23,14 +23,14 @@ f: // CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 03000000 00410a41 0b000000') // CHECK-NEXT: ), -// CHECK: # Section 0x00000008 -// CHECK-NEXT: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000158) +// CHECK-NEXT: ('sh_offset', 0x00000390) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi-same-value.s b/test/MC/ELF/cfi-same-value.s new file mode 100644 index 0000000..eab1ae4 --- /dev/null +++ b/test/MC/ELF/cfi-same-value.s @@ -0,0 +1,42 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s + +f: + .cfi_startproc + nop + .cfi_same_value 6 + nop + .cfi_endproc + +// CHECK: # Section 0x00000004 +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000001) +// CHECK-NEXT: ('sh_flags', 0x00000002) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000048) +// CHECK-NEXT: ('sh_size', 0x00000030) +// CHECK-NEXT: ('sh_link', 0x00000000) +// CHECK-NEXT: ('sh_info', 0x00000000) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000000) +// CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 14000000 1c000000 00000000 02000000 00410806 00000000') +// CHECK-NEXT: ), +// CHECK-NEXT: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' +// CHECK-NEXT: ('sh_type', 0x00000004) +// CHECK-NEXT: ('sh_flags', 0x00000000) +// CHECK-NEXT: ('sh_addr', 0x00000000) +// CHECK-NEXT: ('sh_offset', 0x00000390) +// CHECK-NEXT: ('sh_size', 0x00000018) +// CHECK-NEXT: ('sh_link', 0x00000007) +// CHECK-NEXT: ('sh_info', 0x00000004) +// CHECK-NEXT: ('sh_addralign', 0x00000008) +// CHECK-NEXT: ('sh_entsize', 0x00000018) +// CHECK-NEXT: ('_relocations', [ +// CHECK-NEXT: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000020) +// CHECK-NEXT: ('r_sym', 0x00000002) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: ]) +// CHECK-NEXT: ), diff --git a/test/MC/ELF/cfi-zero-addr-delta.s b/test/MC/ELF/cfi-zero-addr-delta.s index 5585e29..3ddf69e 100644 --- a/test/MC/ELF/cfi-zero-addr-delta.s +++ b/test/MC/ELF/cfi-zero-addr-delta.s @@ -14,7 +14,7 @@ f: nop .cfi_endproc -// CHECK: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -27,13 +27,13 @@ f: // CHECK-NEXT: ('_section_data', '14000000 00000000 017a5200 01781001 1b0c0708 90010000 1c000000 1c000000 00000000 04000000 00410e10 410a0e08 410b0000 00000000') // CHECK-NEXT: ), -// CHECK: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000160) +// CHECK-NEXT: ('sh_offset', 0x00000398) // CHECK-NEXT: ('sh_size', 0x00000018) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/cfi.s b/test/MC/ELF/cfi.s index 93fd2e7..133b858 100644 --- a/test/MC/ELF/cfi.s +++ b/test/MC/ELF/cfi.s @@ -213,7 +213,7 @@ f36: .cfi_endproc // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.eh_frame' +// CHECK-NEXT: (('sh_name', 0x00000011) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -226,14 +226,14 @@ f36: // CHECK-NEXT: ('_section_data', '14000000 00000000 017a4c52 00017810 02031b0c 07089001 14000000 1c000000 00000000 01000000 04000000 00000000 20000000 00000000 017a504c 52000178 100b0000 00000000 00000003 1b0c0708 90010000 14000000 28000000 00000000 01000000 04000000 00000000 14000000 70000000 00000000 01000000 04000000 00000000 20000000 00000000 017a504c 52000178 100b0000 00000000 00000002 1b0c0708 90010000 10000000 28000000 00000000 01000000 02000000 18000000 00000000 017a5052 00017810 04020000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06030000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a040000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 040a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 060b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a0c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a080000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a100000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04120000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06130000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a140000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 041a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 061b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a1c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a180000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a800000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04820000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06830000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a840000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 048a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 068b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a8c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a880000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a900000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 04920000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 06930000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a940000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 049a0000 1b0c0708 90010000 10000000 20000000 00000000 01000000 00000000 18000000 00000000 017a5052 00017810 069b0000 00001b0c 07089001 10000000 20000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a9c0000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000 1c000000 00000000 017a5052 00017810 0a980000 00000000 00001b0c 07089001 10000000 24000000 00000000 01000000 00000000') // CHECK-NEXT: ), -// CHECK: # Section 0x00000008 -// CHECK-NEXT: (('sh_name', 0x00000036) # '.rela.eh_frame' +// CHECK: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.rela.eh_frame' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x00000bf8) +// CHECK-NEXT: ('sh_offset', 0x00000e30) // CHECK-NEXT: ('sh_size', 0x000006c0) -// CHECK-NEXT: ('sh_link', 0x00000006) +// CHECK-NEXT: ('sh_link', 0x00000007) // CHECK-NEXT: ('sh_info', 0x00000004) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/comdat.s b/test/MC/ELF/comdat.s index 0f1164e..be7128b 100644 --- a/test/MC/ELF/comdat.s +++ b/test/MC/ELF/comdat.s @@ -4,37 +4,37 @@ // of the file. // CHECK: # Section 0x00000001 -// CHECK-NEXT: (('sh_name', 0x00000026) # '.group' +// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' // CHECK-NEXT: ('sh_type', 0x00000011) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) // CHECK-NEXT: ('sh_offset', 0x00000040) // CHECK-NEXT: ('sh_size', 0x0000000c) -// CHECK-NEXT: ('sh_link', 0x0000000c) +// CHECK-NEXT: ('sh_link', 0x0000000d) // CHECK-NEXT: ('sh_info', 0x00000001) // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000004) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x00000002 -// CHECK-NEXT: (('sh_name', 0x00000026) # '.group' +// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' // CHECK-NEXT: ('sh_type', 0x00000011) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) // CHECK-NEXT: ('sh_offset', 0x0000004c) // CHECK-NEXT: ('sh_size', 0x00000008) -// CHECK-NEXT: ('sh_link', 0x0000000c) +// CHECK-NEXT: ('sh_link', 0x0000000d) // CHECK-NEXT: ('sh_info', 0x00000002) // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000004) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x00000003 -// CHECK-NEXT: (('sh_name', 0x00000026) # '.group' +// CHECK-NEXT: (('sh_name', 0x0000001b) # '.group' // CHECK-NEXT: ('sh_type', 0x00000011) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) // CHECK-NEXT: ('sh_offset', 0x00000054) // CHECK-NEXT: ('sh_size', 0x00000008) -// CHECK-NEXT: ('sh_link', 0x0000000c) +// CHECK-NEXT: ('sh_link', 0x0000000d) // CHECK-NEXT: ('sh_info', 0x0000000d) // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000004) diff --git a/test/MC/ELF/common.s b/test/MC/ELF/common.s index 16b677b..70e2ed2 100644 --- a/test/MC/ELF/common.s +++ b/test/MC/ELF/common.s @@ -38,7 +38,7 @@ // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000001) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000003) +// CHECK-NEXT: ('st_shndx', 0x00000004) // CHECK-NEXT: ('st_value', 0x0000000000000010) // CHECK-NEXT: ('st_size', 0x0000000000000008) // CHECK-NEXT: ), diff --git a/test/MC/ELF/common2.s b/test/MC/ELF/common2.s index b54cdfe..b48ca66 100644 --- a/test/MC/ELF/common2.s +++ b/test/MC/ELF/common2.s @@ -9,7 +9,7 @@ .zero 1 .align 8 -// CHECK: (('sh_name', 0x0000000d) # '.bss' +// CHECK: (('sh_name', 0x00000007) # '.bss' // CHECK-NEXT: ('sh_type', // CHECK-NEXT: ('sh_flags' // CHECK-NEXT: ('sh_addr', diff --git a/test/MC/ELF/debug-line.s b/test/MC/ELF/debug-line.s index 2979ca2..aa0197d 100644 --- a/test/MC/ELF/debug-line.s +++ b/test/MC/ELF/debug-line.s @@ -2,7 +2,7 @@ // Test that .debug_line is populated. -// CHECK: (('sh_name', 0x00000012) # '.debug_line' +// CHECK: (('sh_name', 0x00000011) # '.debug_line' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/debug-loc.s b/test/MC/ELF/debug-loc.s index 36ae485..68e36a5 100644 --- a/test/MC/ELF/debug-loc.s +++ b/test/MC/ELF/debug-loc.s @@ -8,7 +8,7 @@ // FIXME2: We need a debug_line dumper so that we can test the actual contents. // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.debug_line' +// CHECK-NEXT: (('sh_name', 0x00000011) # '.debug_line' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/empty-dwarf-lines.s b/test/MC/ELF/empty-dwarf-lines.s index 0f791ae..1b135a6 100644 --- a/test/MC/ELF/empty-dwarf-lines.s +++ b/test/MC/ELF/empty-dwarf-lines.s @@ -8,7 +8,7 @@ c: .asciz "hi\n" // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.debug_line' +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.debug_line' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/empty.s b/test/MC/ELF/empty.s index e351936..d98f0c6 100644 --- a/test/MC/ELF/empty.s +++ b/test/MC/ELF/empty.s @@ -14,7 +14,7 @@ // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000000) -// CHECK: ('sh_name', 0x00000007) # '.data' +// CHECK: ('sh_name', 0x00000026) # '.data' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000003) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -25,7 +25,7 @@ // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000000) -// CHECK: ('sh_name', 0x0000000d) # '.bss' +// CHECK: ('sh_name', 0x00000007) # '.bss' // CHECK-NEXT: ('sh_type', 0x00000008) // CHECK-NEXT: ('sh_flags', 0x00000003) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -36,7 +36,7 @@ // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000000) -// CHECK: ('sh_name', 0x00000012) # '.shstrtab' +// CHECK: ('sh_name', 0x0000000c) # '.shstrtab' // CHECK-NEXT: ('sh_type', 0x00000003) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -47,7 +47,7 @@ // CHECK-NEXT: ('sh_addralign', 0x00000001) // CHECK-NEXT: ('sh_entsize', 0x00000000) -// CHECK: ('sh_name', 0x0000001c) # '.symtab' +// CHECK: ('sh_name', 0x0000001e) # '.symtab' // CHECK-NEXT: ('sh_type', 0x00000002) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -58,7 +58,7 @@ // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) -// CHECK: ('sh_name', 0x00000024) # '.strtab' +// CHECK: ('sh_name', 0x00000016) # '.strtab' // CHECK-NEXT: ('sh_type', 0x00000003) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/entsize.ll b/test/MC/ELF/entsize.ll index 21179df..74f0413 100644 --- a/test/MC/ELF/entsize.ll +++ b/test/MC/ELF/entsize.ll @@ -20,7 +20,7 @@ declare void @foo(i64* nocapture) nounwind ;;;;; -; 64: (('sh_name', 0x00000012) # '.rodata.str1.1' +; 64: (('sh_name', 0x0000004e) # '.rodata.str1.1' ; 64-NEXT: ('sh_type', 0x00000001) ; 64-NEXT: ('sh_flags', 0x00000032) ; 64-NEXT: ('sh_addr', @@ -31,7 +31,7 @@ declare void @foo(i64* nocapture) nounwind ; 64-NEXT: ('sh_addralign', 0x00000001) ; 64-NEXT: ('sh_entsize', 0x00000001) -; 64: (('sh_name', 0x00000021) # '.rodata.cst8' +; 64: (('sh_name', 0x00000041) # '.rodata.cst8' ; 64-NEXT: ('sh_type', 0x00000001) ; 64-NEXT: ('sh_flags', 0x00000012) ; 64-NEXT: ('sh_addr', diff --git a/test/MC/ELF/entsize.s b/test/MC/ELF/entsize.s index e8eb62e..415eaef 100644 --- a/test/MC/ELF/entsize.s +++ b/test/MC/ELF/entsize.s @@ -33,7 +33,7 @@ .quad 42 // CHECK: # Section 0x00000004 -// CHECK-NEXT: ('sh_name', 0x00000012) # '.rodata.str1.1' +// CHECK-NEXT: ('sh_name', 0x00000048) # '.rodata.str1.1' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000032) // CHECK-NEXT: ('sh_addr', @@ -45,7 +45,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000001) // CHECK: # Section 0x00000005 -// CHECK-NEXT: ('sh_name', 0x00000021) # '.rodata.str2.1' +// CHECK-NEXT: ('sh_name', 0x00000039) # '.rodata.str2.1' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000032) // CHECK-NEXT: ('sh_addr', @@ -57,7 +57,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000002) // CHECK: # Section 0x00000006 -// CHECK-NEXT: ('sh_name', 0x00000030) # '.rodata.cst8 +// CHECK-NEXT: ('sh_name', 0x0000002c) # '.rodata.cst8 // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000012) // CHECK-NEXT: ('sh_addr', diff --git a/test/MC/ELF/global-offset.s b/test/MC/ELF/global-offset.s index aa63287..77f7267 100644 --- a/test/MC/ELF/global-offset.s +++ b/test/MC/ELF/global-offset.s @@ -5,7 +5,7 @@ addl $_GLOBAL_OFFSET_TABLE_, %ebx -// CHECK: ('sh_name', 0x00000001) # '.text' +// CHECK: ('sh_name', 0x00000005) # '.text' // CHECK-NEXT: ('sh_type', // CHECK-NEXT: ('sh_flags', // CHECK-NEXT: ('sh_addr', diff --git a/test/MC/ELF/got.s b/test/MC/ELF/got.s index 798150e..a3abef5 100644 --- a/test/MC/ELF/got.s +++ b/test/MC/ELF/got.s @@ -6,9 +6,6 @@ movl foo@GOT, %eax movl foo@GOTPCREL(%rip), %eax -// CHECK: (('st_name', 0x00000005) # '_GLOBAL_OFFSET_TABLE_' -// CHECK-NEXT: ('st_bind', 0x00000001) - // CHECK: ('_relocations', [ // CHECK-NEXT: # Relocation 0x00000000 // CHECK-NEXT: (('r_offset', @@ -23,3 +20,6 @@ // CHECK-NEXT: ('r_addend', // CHECK-NEXT: ), // CHECK-NEXT: ]) + +// CHECK: (('st_name', 0x00000005) # '_GLOBAL_OFFSET_TABLE_' +// CHECK-NEXT: ('st_bind', 0x00000001) diff --git a/test/MC/ELF/ident.s b/test/MC/ELF/ident.s index f79458f..b364d60 100644 --- a/test/MC/ELF/ident.s +++ b/test/MC/ELF/ident.s @@ -1,6 +1,6 @@ // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump --dump-section-data | FileCheck %s -// CHECK: (('sh_name', 0x00000012) # '.comment' +// CHECK: (('sh_name', 0x00000007) # '.comment' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000030) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/local-reloc.s b/test/MC/ELF/local-reloc.s index c2b4771..8384e0e 100644 --- a/test/MC/ELF/local-reloc.s +++ b/test/MC/ELF/local-reloc.s @@ -10,16 +10,6 @@ foo: // CHECK: # Section 0x00000001 // CHECK-next: (('sh_name', 0x00000001) # '.text' -// Symbol number 2 is section number 1 -// CHECK: # Symbol 0x00000002 -// CHECK-NEXT: (('st_name', 0x00000000) # '' -// CHECK-NEXT: ('st_bind', 0x00000000) -// CHECK-NEXT: ('st_type', 0x00000003) -// CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000001) -// CHECK-NEXT: ('st_value', 0x0000000000000000) -// CHECK-NEXT: ('st_size', 0x0000000000000000) - // Relocation refers to symbol number 2 // CHECK: ('_relocations', [ // CHECK-NEXT: # Relocation 0x00000000 @@ -29,3 +19,13 @@ foo: // CHECK-NEXT: ('r_addend', // CHECK-NEXT: ), // CHECK-NEXT: ]) + +// Symbol number 2 is section number 1 +// CHECK: # Symbol 0x00000002 +// CHECK-NEXT: (('st_name', 0x00000000) # '' +// CHECK-NEXT: ('st_bind', 0x00000000) +// CHECK-NEXT: ('st_type', 0x00000003) +// CHECK-NEXT: ('st_other', 0x00000000) +// CHECK-NEXT: ('st_shndx', 0x00000001) +// CHECK-NEXT: ('st_value', 0x0000000000000000) +// CHECK-NEXT: ('st_size', 0x0000000000000000) diff --git a/test/MC/ELF/merge.s b/test/MC/ELF/merge.s index ec02228..befc2bf 100644 --- a/test/MC/ELF/merge.s +++ b/test/MC/ELF/merge.s @@ -22,30 +22,6 @@ zed: .section bar,"ax",@progbits foo: -// Section 4 is "sec1" -// CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.sec1' - -// Symbol number 1 is .Lfoo -// CHECK: # Symbol 0x00000001 -// CHECK-NEXT: (('st_name', 0x00000001) # '.Lfoo' - -// Symbol number 2 is foo -// CHECK: # Symbol 0x00000002 -// CHECK-NEXT: (('st_name', 0x00000007) # 'foo' - -// Symbol number 6 is section 4 -// CHECK: # Symbol 0x00000006 -// CHECK-NEXT: (('st_name', 0x00000000) # '' -// CHECK-NEXT: ('st_bind', 0x00000000) -// CHECK-NEXT: ('st_type', 0x00000003) -// CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000004) - -// Symbol number 8 is zed -// CHECK: # Symbol 0x00000008 -// CHECK-NEXT: (('st_name', 0x0000000b) # 'zed' - // Relocation 0 refers to symbol 1 // CHECK: ('_relocations', [ // CHECK-NEXT: # Relocation 0 @@ -95,3 +71,27 @@ foo: // CHECK-NEXT: ('r_addend', 0x00000000) // CHECK-NEXT: ), // CHECK-NEXT: ]) + +// Section 5 is "sec1" +// CHECK: # Section 0x00000005 +// CHECK-NEXT: (('sh_name', 0x00000035) # '.sec1' + +// Symbol number 1 is .Lfoo +// CHECK: # Symbol 0x00000001 +// CHECK-NEXT: (('st_name', 0x00000001) # '.Lfoo' + +// Symbol number 2 is foo +// CHECK: # Symbol 0x00000002 +// CHECK-NEXT: (('st_name', 0x00000007) # 'foo' + +// Symbol number 6 is section 5 +// CHECK: # Symbol 0x00000006 +// CHECK-NEXT: (('st_name', 0x00000000) # '' +// CHECK-NEXT: ('st_bind', 0x00000000) +// CHECK-NEXT: ('st_type', 0x00000003) +// CHECK-NEXT: ('st_other', 0x00000000) +// CHECK-NEXT: ('st_shndx', 0x00000005) + +// Symbol number 8 is zed +// CHECK: # Symbol 0x00000008 +// CHECK-NEXT: (('st_name', 0x0000000b) # 'zed' diff --git a/test/MC/ELF/noexec.s b/test/MC/ELF/noexec.s index 87b6f3a..c4b7d98 100644 --- a/test/MC/ELF/noexec.s +++ b/test/MC/ELF/noexec.s @@ -1,7 +1,7 @@ // RUN: llvm-mc -mc-no-exec-stack -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s // CHECK: # Section 0x00000004 -// CHECK-NEXT: (('sh_name', 0x00000012) # '.note.GNU-stack' +// CHECK-NEXT: (('sh_name', 0x0000000c) # '.note.GNU-stack' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) diff --git a/test/MC/ELF/pic-diff.s b/test/MC/ELF/pic-diff.s index d1fc909..c2f96c2 100644 --- a/test/MC/ELF/pic-diff.s +++ b/test/MC/ELF/pic-diff.s @@ -1,5 +1,14 @@ // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s +// CHECK: ('_relocations', [ +// CHECK-NEXT: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x0000000c) +// CHECK-NEXT: ('r_sym', 0x00000005) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0x00000008) +// CHECK-NEXT: ), +// CHECK-NEXT: ]) + // CHECK: # Symbol 0x00000005 // CHECK-NEXT: (('st_name', 0x00000005) # 'baz' // CHECK-NEXT: ('st_bind', 0x00000001) @@ -10,15 +19,6 @@ // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), -// CHECK: ('_relocations', [ -// CHECK-NEXT: # Relocation 0x00000000 -// CHECK-NEXT: (('r_offset', 0x0000000c) -// CHECK-NEXT: ('r_sym', 0x00000005) -// CHECK-NEXT: ('r_type', 0x00000002) -// CHECK-NEXT: ('r_addend', 0x00000008) -// CHECK-NEXT: ), -// CHECK-NEXT: ]) - .zero 4 .data diff --git a/test/MC/ELF/relocation-386.s b/test/MC/ELF/relocation-386.s index f106f89..f7b20b5 100644 --- a/test/MC/ELF/relocation-386.s +++ b/test/MC/ELF/relocation-386.s @@ -3,33 +3,6 @@ // Test that we produce the correct relocation types and that the relocations // correctly point to the section or the symbol. -// Section 3 is bss -// CHECK: # Section 0x00000003 -// CHECK-NEXT: (('sh_name', 0x0000000d) # '.bss' - -// CHECK: # Symbol 0x00000001 -// CHECK-NEXT: (('st_name', 0x00000005) # '.Lfoo' - -// Symbol 4 is zed -// CHECK: # Symbol 0x00000004 -// CHECK-NEXT: (('st_name', 0x00000035) # 'zed' -// CHECK-NEXT: ('st_value', 0x00000000) -// CHECK-NEXT: ('st_size', 0x00000000) -// CHECK-NEXT: ('st_bind', 0x00000000) -// CHECK-NEXT: ('st_type', 0x00000006) -// CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000004) - -// Symbol 7 is section 3 -// CHECK: # Symbol 0x00000007 -// CHECK-NEXT: (('st_name', 0x00000000) # '' -// CHECK-NEXT: ('st_value', 0x00000000) -// CHECK-NEXT: ('st_size', 0x00000000) -// CHECK-NEXT: ('st_bind', 0x00000000) -// CHECK-NEXT: ('st_type', 0x00000003) -// CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000003) - // CHECK: # Relocation 0x00000000 // CHECK-NEXT: (('r_offset', 0x00000002) // CHECK-NEXT: ('r_sym', 0x00000001) @@ -181,6 +154,34 @@ // CHECK-NEXT: ('r_type', 0x00000001) // CHECK-NEXT: ), +// Section 4 is bss +// CHECK: # Section 0x00000004 +// CHECK-NEXT: (('sh_name', 0x0000000b) # '.bss' + +// CHECK: # Symbol 0x00000001 +// CHECK-NEXT: (('st_name', 0x00000005) # '.Lfoo' + +// Symbol 4 is zed +// CHECK: # Symbol 0x00000004 +// CHECK-NEXT: (('st_name', 0x00000035) # 'zed' +// CHECK-NEXT: ('st_value', 0x00000000) +// CHECK-NEXT: ('st_size', 0x00000000) +// CHECK-NEXT: ('st_bind', 0x00000000) +// CHECK-NEXT: ('st_type', 0x00000006) +// CHECK-NEXT: ('st_other', 0x00000000) +// CHECK-NEXT: ('st_shndx', 0x00000005) + +// Symbol 7 is section 4 +// CHECK: # Symbol 0x00000007 +// CHECK-NEXT: (('st_name', 0x00000000) # '' +// CHECK-NEXT: ('st_value', 0x00000000) +// CHECK-NEXT: ('st_size', 0x00000000) +// CHECK-NEXT: ('st_bind', 0x00000000) +// CHECK-NEXT: ('st_type', 0x00000003) +// CHECK-NEXT: ('st_other', 0x00000000) +// CHECK-NEXT: ('st_shndx', 0x00000004) + + .text bar: leal .Lfoo@GOTOFF(%ebx), %eax diff --git a/test/MC/ELF/relocation-pc.s b/test/MC/ELF/relocation-pc.s index 58c5f41..36212cb 100644 --- a/test/MC/ELF/relocation-pc.s +++ b/test/MC/ELF/relocation-pc.s @@ -5,14 +5,14 @@ loope 0 # R_X86_64_PC8 jmp -256 # R_X86_64_PC32 -// CHECK: # Section 0x00000007 -// CHECK-NEXT: (('sh_name', 0x0000002c) # '.rela.text' +// CHECK: # Section 0x00000002 +// CHECK-NEXT: (('sh_name', 0x00000001) # '.rela.text' // CHECK-NEXT: ('sh_type', 0x00000004) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) -// CHECK-NEXT: ('sh_offset', 0x000000e8) +// CHECK-NEXT: ('sh_offset', 0x000002e8) // CHECK-NEXT: ('sh_size', 0x00000030) -// CHECK-NEXT: ('sh_link', 0x00000005) +// CHECK-NEXT: ('sh_link', 0x00000006) // CHECK-NEXT: ('sh_info', 0x00000001) // CHECK-NEXT: ('sh_addralign', 0x00000008) // CHECK-NEXT: ('sh_entsize', 0x00000018) diff --git a/test/MC/ELF/relocation.s b/test/MC/ELF/relocation.s index dabe721..4df09e1 100644 --- a/test/MC/ELF/relocation.s +++ b/test/MC/ELF/relocation.s @@ -20,14 +20,7 @@ bar: // CHECK: # Section 0x00000001 -// CHECK: (('sh_name', 0x00000001) # '.text' - -// CHECK: # Symbol 0x00000002 -// CHECK: (('st_name', 0x00000000) # '' -// CHECK: ('st_bind', 0x00000000) -// CHECK: ('st_type', 0x00000003) -// CHECK: ('st_other', 0x00000000) -// CHECK: ('st_shndx', 0x00000001) +// CHECK: (('sh_name', 0x00000006) # '.text' // CHECK: # Relocation 0x00000000 // CHECK-NEXT: (('r_offset', 0x00000001) @@ -112,3 +105,10 @@ bar: // CHECK-NEXT: ('r_sym', 0x00000006) // CHECK-NEXT: ('r_type', 0x00000002) // CHECK-NEXT: ('r_addend', 0x0000005c) + +// CHECK: # Symbol 0x00000002 +// CHECK: (('st_name', 0x00000000) # '' +// CHECK: ('st_bind', 0x00000000) +// CHECK: ('st_type', 0x00000003) +// CHECK: ('st_other', 0x00000000) +// CHECK: ('st_shndx', 0x00000001) diff --git a/test/MC/ELF/rename.s b/test/MC/ELF/rename.s index 3606560..e7cedd0 100644 --- a/test/MC/ELF/rename.s +++ b/test/MC/ELF/rename.s @@ -17,7 +17,7 @@ defined3: // Section 1 is .text // CHECK: # Section 0x00000001 -// CHECK-NEXT: (('sh_name', 0x00000001) # '.text' +// CHECK-NEXT: (('sh_name', 0x00000006) # '.text' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000006) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -28,6 +28,13 @@ defined3: // CHECK-NEXT: ('sh_addralign', 0x00000004) // CHECK-NEXT: ('sh_entsize', 0x00000000) +// The relocation uses symbol 2 +// CHECK: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000000) +// CHECK-NEXT: ('r_sym', 0x00000002) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) + // Symbol 2 is section 1 // CHECK: # Symbol 0x00000002 // CHECK-NEXT: (('st_name', 0x00000000) # '' @@ -37,10 +44,3 @@ defined3: // CHECK-NEXT: ('st_shndx', 0x00000001) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) - -// The relocation uses symbol 2 -// CHECK: # Relocation 0x00000000 -// CHECK-NEXT: (('r_offset', 0x00000000) -// CHECK-NEXT: ('r_sym', 0x00000002) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) diff --git a/test/MC/ELF/section-quoting.s b/test/MC/ELF/section-quoting.s new file mode 100644 index 0000000..3751e72 --- /dev/null +++ b/test/MC/ELF/section-quoting.s @@ -0,0 +1,10 @@ +// RUN: llvm-mc -triple x86_64-pc-linux-gnu %s -o - | FileCheck %s + +// Test that we handle the strings like gas +.section bar-"foo" +.section "foo" +.section "foo bar" + +// CHECK: .section "bar-\"foo\"" +// CHECK: .section foo +// CHECK: .section "foo bar" diff --git a/test/MC/ELF/section.s b/test/MC/ELF/section.s index 861dc4f..5fb5525 100644 --- a/test/MC/ELF/section.s +++ b/test/MC/ELF/section.s @@ -7,10 +7,10 @@ .section .note.GNU-,"",@progbits .section -.note.GNU,"",@progbits -// CHECK: ('sh_name', 0x00000012) # '.note.GNU-stack' -// CHECK: ('sh_name', 0x00000022) # '.note.GNU-stack2' -// CHECK: ('sh_name', 0x00000033) # '.note.GNU-' -// CHECK: ('sh_name', 0x0000003e) # '-.note.GNU' +// CHECK: ('sh_name', 0x00000038) # '.note.GNU-stack' +// CHECK: ('sh_name', 0x0000008f) # '.note.GNU-stack2' +// CHECK: ('sh_name', 0x000000a0) # '.note.GNU-' +// CHECK: ('sh_name', 0x00000084) # '-.note.GNU' // Test that the defaults are used @@ -19,7 +19,7 @@ .section .rodata .section zed, "" -// CHECK: (('sh_name', 0x00000049) # '.init' +// CHECK: (('sh_name', 0x00000012) # '.init' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000006) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -31,7 +31,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x0000000b -// CHECK-NEXT: (('sh_name', 0x0000004f) # '.fini' +// CHECK-NEXT: (('sh_name', 0x00000048) # '.fini' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000006) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -43,7 +43,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x0000000c -// CHECK-NEXT: (('sh_name', 0x00000055) # '.rodata' +// CHECK-NEXT: (('sh_name', 0x00000076) # '.rodata' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -55,7 +55,7 @@ // CHECK-NEXT: ('sh_entsize', 0x00000000) // CHECK-NEXT: ), // CHECK-NEXT: # Section 0x0000000d -// CHECK-NEXT: (('sh_name', 0x0000005d) # 'zed' +// CHECK-NEXT: (('sh_name', 0x00000058) # 'zed' // CHECK-NEXT: ('sh_type', 0x00000001) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -68,7 +68,7 @@ // CHECK-NEXT: ), .section .note.test,"",@note -// CHECK: (('sh_name', 0x00000061) # '.note.test' +// CHECK: (('sh_name', 0x00000007) # '.note.test' // CHECK-NEXT: ('sh_type', 0x00000007) // CHECK-NEXT: ('sh_flags', 0x00000000) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -90,7 +90,7 @@ bar: .section .eh_frame,"a",@unwind -// CHECK: (('sh_name', 0x00000080) # '.eh_frame' +// CHECK: (('sh_name', 0x0000004e) # '.eh_frame' // CHECK-NEXT: ('sh_type', 0x70000001) // CHECK-NEXT: ('sh_flags', 0x00000002) // CHECK-NEXT: ('sh_addr', 0x00000000) @@ -106,5 +106,5 @@ bar: .section bar-"foo" .section "foo" -// CHECK: ('sh_name', 0x0000008a) # 'bar-"foo"' -// CHECK: ('sh_name', 0x00000094) # 'foo' +// CHECK: ('sh_name', 0x000000ab) # 'bar-"foo"' +// CHECK: ('sh_name', 0x00000034) # 'foo' diff --git a/test/MC/ELF/symref.s b/test/MC/ELF/symref.s index b99e71b..d945c82 100644 --- a/test/MC/ELF/symref.s +++ b/test/MC/ELF/symref.s @@ -22,6 +22,38 @@ defined3: global1: +// CHECK: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000000) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: # Relocation 0x00000001 +// CHECK-NEXT: (('r_offset', 0x00000004) +// CHECK-NEXT: ('r_sym', 0x0000000b) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: # Relocation 0x00000002 +// CHECK-NEXT: (('r_offset', 0x00000008) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: # Relocation 0x00000003 +// CHECK-NEXT: (('r_offset', 0x0000000c) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT: # Relocation 0x00000004 +// CHECK-NEXT: (('r_offset', 0x00000010) +// CHECK-NEXT: ('r_sym', 0x0000000c) +// CHECK-NEXT: ('r_type', 0x0000000a) +// CHECK-NEXT: ('r_addend', 0x00000000) +// CHECK-NEXT: ), +// CHECK-NEXT:]) + // CHECK: # Symbol 0x00000001 // CHECK-NEXT: (('st_name', 0x00000013) # 'bar1@zed' // CHECK-NEXT: ('st_bind', 0x00000000) @@ -81,7 +113,7 @@ global1: // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000003) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000002) +// CHECK-NEXT: ('st_shndx', 0x00000003) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), @@ -90,7 +122,7 @@ global1: // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000003) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000003) +// CHECK-NEXT: ('st_shndx', 0x00000004) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), @@ -131,35 +163,3 @@ global1: // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), // CHECK-NEXT:]) - -// CHECK: # Relocation 0x00000000 -// CHECK-NEXT: (('r_offset', 0x00000000) -// CHECK-NEXT: ('r_sym', 0x00000006) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), -// CHECK-NEXT: # Relocation 0x00000001 -// CHECK-NEXT: (('r_offset', 0x00000004) -// CHECK-NEXT: ('r_sym', 0x0000000b) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), -// CHECK-NEXT: # Relocation 0x00000002 -// CHECK-NEXT: (('r_offset', 0x00000008) -// CHECK-NEXT: ('r_sym', 0x00000006) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), -// CHECK-NEXT: # Relocation 0x00000003 -// CHECK-NEXT: (('r_offset', 0x0000000c) -// CHECK-NEXT: ('r_sym', 0x00000006) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), -// CHECK-NEXT: # Relocation 0x00000004 -// CHECK-NEXT: (('r_offset', 0x00000010) -// CHECK-NEXT: ('r_sym', 0x0000000c) -// CHECK-NEXT: ('r_type', 0x0000000a) -// CHECK-NEXT: ('r_addend', 0x00000000) -// CHECK-NEXT: ), -// CHECK-NEXT:]) diff --git a/test/MC/ELF/tls-i386.s b/test/MC/ELF/tls-i386.s index 459d4cc..c754121 100644 --- a/test/MC/ELF/tls-i386.s +++ b/test/MC/ELF/tls-i386.s @@ -8,6 +8,7 @@ movl foo4@TLSLDM(%eax), %eax movl foo5@TPOFF(%eax), %eax movl foo6@DTPOFF(%eax), %eax + movl foo7@INDNTPOFF, %eax // CHECK: (('st_name', 0x00000001) # 'foo1' // CHECK-NEXT: ('st_value', 0x00000000) @@ -62,3 +63,12 @@ // CHECK-NEXT: ('st_other', 0x00000000) // CHECK-NEXT: ('st_shndx', 0x00000000) // CHECK-NEXT: ), +// CHECK-NEXT: # Symbol 0x0000000b +// CHECK-NEXT: (('st_name', 0x0000001f) # 'foo7' +// CHECK-NEXT: ('st_value', 0x00000000) +// CHECK-NEXT: ('st_size', 0x00000000) +// CHECK-NEXT: ('st_bind', 0x00000001) +// CHECK-NEXT: ('st_type', 0x00000006) +// CHECK-NEXT: ('st_other', 0x00000000) +// CHECK-NEXT: ('st_shndx', 0x00000000) +// CHECK-NEXT: ), diff --git a/test/MC/ELF/tls.s b/test/MC/ELF/tls.s index 2517a5b..f9d6425 100644 --- a/test/MC/ELF/tls.s +++ b/test/MC/ELF/tls.s @@ -14,7 +14,7 @@ foobar: // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000006) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000004) +// CHECK-NEXT: ('st_shndx', 0x00000005) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), diff --git a/test/MC/ELF/undef2.s b/test/MC/ELF/undef2.s index 9544fbc..6ce269b 100644 --- a/test/MC/ELF/undef2.s +++ b/test/MC/ELF/undef2.s @@ -7,4 +7,4 @@ // CHECK: ('_symbols', [ // CHECK: (('st_name', 0x00000001) # '.Lfoo' // CHECK-NEXT: ('st_bind', 0x00000001) -// CHECK: (('sh_name', 0x00000024) # '.strtab' +// CHECK: (('sh_name', 0x0000001b) # '.strtab' diff --git a/test/MC/ELF/weak-relocation.s b/test/MC/ELF/weak-relocation.s new file mode 100644 index 0000000..ef331d7 --- /dev/null +++ b/test/MC/ELF/weak-relocation.s @@ -0,0 +1,15 @@ +// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump | FileCheck %s + +// Test that weak symbols always produce relocations + + .weak foo +foo: +bar: + call foo + +//CHECK: # Relocation 0x00000000 +//CHECK-NEXT: (('r_offset', 0x00000001) +//CHECK-NEXT: ('r_sym', 0x00000005) +//CHECK-NEXT: ('r_type', 0x00000002) +//CHECK-NEXT: ('r_addend', 0xfffffffc) +//CHECK-NEXT: ), diff --git a/test/MC/ELF/weakref-reloc.s b/test/MC/ELF/weakref-reloc.s index c7cd764..63c1f5e 100644 --- a/test/MC/ELF/weakref-reloc.s +++ b/test/MC/ELF/weakref-reloc.s @@ -7,6 +7,19 @@ call zed@PLT call bar +// CHECK: # Relocation 0x00000000 +// CHECK-NEXT: (('r_offset', 0x00000001) +// CHECK-NEXT: ('r_sym', 0x00000006) +// CHECK-NEXT: ('r_type', 0x00000004) +// CHECK-NEXT: ('r_addend', 0xfffffffc) +// CHECK-NEXT: ), +// CHECK-NEXT: # Relocation 0x00000001 +// CHECK-NEXT: (('r_offset', 0x00000006) +// CHECK-NEXT: ('r_sym', 0x00000005) +// CHECK-NEXT: ('r_type', 0x00000002) +// CHECK-NEXT: ('r_addend', 0xfffffffc) +// CHECK-NEXT: ), + // CHECK: # Symbol 0x00000004 // CHECK-NEXT: (('st_name', 0x00000009) # '_GLOBAL_OFFSET_TABLE_' // CHECK-NEXT: ('st_bind', 0x00000001) @@ -34,16 +47,3 @@ // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), - -// CHECK: # Relocation 0x00000000 -// CHECK-NEXT: (('r_offset', 0x00000001) -// CHECK-NEXT: ('r_sym', 0x00000006) -// CHECK-NEXT: ('r_type', 0x00000004) -// CHECK-NEXT: ('r_addend', 0xfffffffc) -// CHECK-NEXT: ), -// CHECK-NEXT: # Relocation 0x00000001 -// CHECK-NEXT: (('r_offset', 0x00000006) -// CHECK-NEXT: ('r_sym', 0x00000005) -// CHECK-NEXT: ('r_type', 0x00000002) -// CHECK-NEXT: ('r_addend', 0xfffffffc) -// CHECK-NEXT: ), diff --git a/test/MC/ELF/weakref.s b/test/MC/ELF/weakref.s index aea10d1..9100073 100644 --- a/test/MC/ELF/weakref.s +++ b/test/MC/ELF/weakref.s @@ -128,7 +128,7 @@ bar15: // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000003) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000002) +// CHECK-NEXT: ('st_shndx', 0x00000003) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), @@ -137,7 +137,7 @@ bar15: // CHECK-NEXT: ('st_bind', 0x00000000) // CHECK-NEXT: ('st_type', 0x00000003) // CHECK-NEXT: ('st_other', 0x00000000) -// CHECK-NEXT: ('st_shndx', 0x00000003) +// CHECK-NEXT: ('st_shndx', 0x00000004) // CHECK-NEXT: ('st_value', 0x0000000000000000) // CHECK-NEXT: ('st_size', 0x0000000000000000) // CHECK-NEXT: ), |