You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			278 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			278 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| # RUN: llvm-mc %s -filetype obj -triple x86_64-linux-elf -o - \
 | |
| # RUN: | llvm-dwarfdump --debug-loc - \
 | |
| # RUN: | FileCheck %s
 | |
| 
 | |
| # CHECK: .debug_loc contents:
 | |
| 
 | |
| # CHECK: 0x00000000:
 | |
| # CHECK-NEXT: 0x0000000000000000 - 0x0000000000000003: DW_OP_reg5 RDI
 | |
| # CHECK-NEXT: 0x0000000000000003 - 0x0000000000000004: DW_OP_reg0 RAX
 | |
| 
 | |
| # CHECK: 0x00000036:
 | |
| # CHECK-NEXT: 0x0000000000000010 - 0x0000000000000013: DW_OP_reg5 RDI
 | |
| # CHECK-NEXT: 0x0000000000000013 - 0x0000000000000014: DW_OP_reg0 RAX
 | |
| 
 | |
| # Source:
 | |
| #   int* foo(int* i) { return i; }
 | |
| #   int* bar(int* i) { return i; }
 | |
| # Compile with:
 | |
| #   clang -g -O3 test.c -S -o debugloc.s
 | |
| 
 | |
| 	.text
 | |
| 	.file	"test.c"
 | |
| 	.globl	foo
 | |
| 	.align	16, 0x90
 | |
| 	.type	foo,@function
 | |
| foo:                                    # @foo
 | |
| .Lfunc_begin0:
 | |
| 	.file	1 "test.c"
 | |
| 	.loc	1 1 0                   # test.c:1:0
 | |
| 	.cfi_startproc
 | |
| # %bb.0:
 | |
| 	#DEBUG_VALUE: foo:i <- %RDI
 | |
| 	.loc	1 2 3 prologue_end      # test.c:2:3
 | |
| 	movq	%rdi, %rax
 | |
| .Ltmp0:
 | |
| 	#DEBUG_VALUE: foo:i <- %RAX
 | |
| 	retq
 | |
| .Ltmp1:
 | |
| .Lfunc_end0:
 | |
| 	.size	foo, .Lfunc_end0-foo
 | |
| 	.cfi_endproc
 | |
| 
 | |
| 	.globl	bar
 | |
| 	.align	16, 0x90
 | |
| 	.type	bar,@function
 | |
| bar:                                    # @bar
 | |
| .Lfunc_begin1:
 | |
| 	.loc	1 5 0                   # test.c:5:0
 | |
| 	.cfi_startproc
 | |
| # %bb.0:
 | |
| 	#DEBUG_VALUE: bar:i <- %RDI
 | |
| 	.loc	1 6 3 prologue_end      # test.c:6:3
 | |
| 	movq	%rdi, %rax
 | |
| .Ltmp2:
 | |
| 	#DEBUG_VALUE: bar:i <- %RAX
 | |
| 	retq
 | |
| .Ltmp3:
 | |
| .Lfunc_end1:
 | |
| 	.size	bar, .Lfunc_end1-bar
 | |
| 	.cfi_endproc
 | |
| 
 | |
| 	.section	.debug_str,"MS",@progbits,1
 | |
| .Linfo_string0:
 | |
| 	.asciz	"clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)" # string offset=0
 | |
| .Linfo_string1:
 | |
| 	.asciz	"test.c"                # string offset=54
 | |
| .Linfo_string2:
 | |
| 	.asciz	"/tmp"                  # string offset=61
 | |
| .Linfo_string3:
 | |
| 	.asciz	"foo"                   # string offset=66
 | |
| .Linfo_string4:
 | |
| 	.asciz	"int"                   # string offset=70
 | |
| .Linfo_string5:
 | |
| 	.asciz	"bar"                   # string offset=74
 | |
| .Linfo_string6:
 | |
| 	.asciz	"i"                     # string offset=78
 | |
| 	.section	.debug_loc,"",@progbits
 | |
| .Ldebug_loc0:
 | |
| 	.quad	.Lfunc_begin0-.Lfunc_begin0
 | |
| 	.quad	.Ltmp0-.Lfunc_begin0
 | |
| 	.short	1                       # Loc expr size
 | |
| 	.byte	85                      # DW_OP_reg5
 | |
| 	.quad	.Ltmp0-.Lfunc_begin0
 | |
| 	.quad	.Lfunc_end0-.Lfunc_begin0
 | |
| 	.short	1                       # Loc expr size
 | |
| 	.byte	80                      # DW_OP_reg0
 | |
| 	.quad	0
 | |
| 	.quad	0
 | |
| .Ldebug_loc1:
 | |
| 	.quad	.Lfunc_begin1-.Lfunc_begin0
 | |
| 	.quad	.Ltmp2-.Lfunc_begin0
 | |
| 	.short	1                       # Loc expr size
 | |
| 	.byte	85                      # DW_OP_reg5
 | |
| 	.quad	.Ltmp2-.Lfunc_begin0
 | |
| 	.quad	.Lfunc_end1-.Lfunc_begin0
 | |
| 	.short	1                       # Loc expr size
 | |
| 	.byte	80                      # DW_OP_reg0
 | |
| 	.quad	0
 | |
| 	.quad	0
 | |
| 	.section	.debug_abbrev,"",@progbits
 | |
| .Lsection_abbrev:
 | |
| 	.byte	1                       # Abbreviation Code
 | |
| 	.byte	17                      # DW_TAG_compile_unit
 | |
| 	.byte	1                       # DW_CHILDREN_yes
 | |
| 	.byte	37                      # DW_AT_producer
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.byte	19                      # DW_AT_language
 | |
| 	.byte	5                       # DW_FORM_data2
 | |
| 	.byte	3                       # DW_AT_name
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.byte	16                      # DW_AT_stmt_list
 | |
| 	.byte	23                      # DW_FORM_sec_offset
 | |
| 	.byte	27                      # DW_AT_comp_dir
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.ascii	"\341\177"              # DW_AT_APPLE_optimized
 | |
| 	.byte	25                      # DW_FORM_flag_present
 | |
| 	.byte	17                      # DW_AT_low_pc
 | |
| 	.byte	1                       # DW_FORM_addr
 | |
| 	.byte	18                      # DW_AT_high_pc
 | |
| 	.byte	6                       # DW_FORM_data4
 | |
| 	.byte	0                       # EOM(1)
 | |
| 	.byte	0                       # EOM(2)
 | |
| 	.byte	2                       # Abbreviation Code
 | |
| 	.byte	46                      # DW_TAG_subprogram
 | |
| 	.byte	1                       # DW_CHILDREN_yes
 | |
| 	.byte	17                      # DW_AT_low_pc
 | |
| 	.byte	1                       # DW_FORM_addr
 | |
| 	.byte	18                      # DW_AT_high_pc
 | |
| 	.byte	6                       # DW_FORM_data4
 | |
| 	.ascii	"\347\177"              # DW_AT_APPLE_omit_frame_ptr
 | |
| 	.byte	25                      # DW_FORM_flag_present
 | |
| 	.byte	64                      # DW_AT_frame_base
 | |
| 	.byte	24                      # DW_FORM_exprloc
 | |
| 	.byte	3                       # DW_AT_name
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.byte	58                      # DW_AT_decl_file
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	59                      # DW_AT_decl_line
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	39                      # DW_AT_prototyped
 | |
| 	.byte	25                      # DW_FORM_flag_present
 | |
| 	.byte	73                      # DW_AT_type
 | |
| 	.byte	19                      # DW_FORM_ref4
 | |
| 	.byte	63                      # DW_AT_external
 | |
| 	.byte	25                      # DW_FORM_flag_present
 | |
| 	.ascii	"\341\177"              # DW_AT_APPLE_optimized
 | |
| 	.byte	25                      # DW_FORM_flag_present
 | |
| 	.byte	0                       # EOM(1)
 | |
| 	.byte	0                       # EOM(2)
 | |
| 	.byte	3                       # Abbreviation Code
 | |
| 	.byte	5                       # DW_TAG_formal_parameter
 | |
| 	.byte	0                       # DW_CHILDREN_no
 | |
| 	.byte	2                       # DW_AT_location
 | |
| 	.byte	23                      # DW_FORM_sec_offset
 | |
| 	.byte	3                       # DW_AT_name
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.byte	58                      # DW_AT_decl_file
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	59                      # DW_AT_decl_line
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	73                      # DW_AT_type
 | |
| 	.byte	19                      # DW_FORM_ref4
 | |
| 	.byte	0                       # EOM(1)
 | |
| 	.byte	0                       # EOM(2)
 | |
| 	.byte	4                       # Abbreviation Code
 | |
| 	.byte	15                      # DW_TAG_pointer_type
 | |
| 	.byte	0                       # DW_CHILDREN_no
 | |
| 	.byte	73                      # DW_AT_type
 | |
| 	.byte	19                      # DW_FORM_ref4
 | |
| 	.byte	0                       # EOM(1)
 | |
| 	.byte	0                       # EOM(2)
 | |
| 	.byte	5                       # Abbreviation Code
 | |
| 	.byte	36                      # DW_TAG_base_type
 | |
| 	.byte	0                       # DW_CHILDREN_no
 | |
| 	.byte	3                       # DW_AT_name
 | |
| 	.byte	14                      # DW_FORM_strp
 | |
| 	.byte	62                      # DW_AT_encoding
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	11                      # DW_AT_byte_size
 | |
| 	.byte	11                      # DW_FORM_data1
 | |
| 	.byte	0                       # EOM(1)
 | |
| 	.byte	0                       # EOM(2)
 | |
| 	.byte	0                       # EOM(3)
 | |
| 	.section	.debug_info,"",@progbits
 | |
| .Lsection_info:
 | |
| .Lcu_begin0:
 | |
| 	.long	133                     # Length of Unit
 | |
| 	.short	4                       # DWARF version number
 | |
| 	.long	.Lsection_abbrev        # Offset Into Abbrev. Section
 | |
| 	.byte	8                       # Address Size (in bytes)
 | |
| 	.byte	1                       # Abbrev [1] 0xb:0x7e DW_TAG_compile_unit
 | |
| 	.long	.Linfo_string0          # DW_AT_producer
 | |
| 	.short	12                      # DW_AT_language
 | |
| 	.long	.Linfo_string1          # DW_AT_name
 | |
| 	.long	.Lline_table_start0     # DW_AT_stmt_list
 | |
| 	.long	.Linfo_string2          # DW_AT_comp_dir
 | |
|                                         # DW_AT_APPLE_optimized
 | |
| 	.quad	.Lfunc_begin0           # DW_AT_low_pc
 | |
| 	.long	.Lfunc_end1-.Lfunc_begin0 # DW_AT_high_pc
 | |
| 	.byte	2                       # Abbrev [2] 0x2a:0x29 DW_TAG_subprogram
 | |
| 	.quad	.Lfunc_begin0           # DW_AT_low_pc
 | |
| 	.long	.Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
 | |
|                                         # DW_AT_APPLE_omit_frame_ptr
 | |
| 	.byte	1                       # DW_AT_frame_base
 | |
| 	.byte	87
 | |
| 	.long	.Linfo_string3          # DW_AT_name
 | |
| 	.byte	1                       # DW_AT_decl_file
 | |
| 	.byte	1                       # DW_AT_decl_line
 | |
|                                         # DW_AT_prototyped
 | |
| 	.long	124                     # DW_AT_type
 | |
|                                         # DW_AT_external
 | |
|                                         # DW_AT_APPLE_optimized
 | |
| 	.byte	3                       # Abbrev [3] 0x43:0xf DW_TAG_formal_parameter
 | |
| 	.long	.Ldebug_loc0            # DW_AT_location
 | |
| 	.long	.Linfo_string6          # DW_AT_name
 | |
| 	.byte	1                       # DW_AT_decl_file
 | |
| 	.byte	1                       # DW_AT_decl_line
 | |
| 	.long	124                     # DW_AT_type
 | |
| 	.byte	0                       # End Of Children Mark
 | |
| 	.byte	2                       # Abbrev [2] 0x53:0x29 DW_TAG_subprogram
 | |
| 	.quad	.Lfunc_begin1           # DW_AT_low_pc
 | |
| 	.long	.Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
 | |
|                                         # DW_AT_APPLE_omit_frame_ptr
 | |
| 	.byte	1                       # DW_AT_frame_base
 | |
| 	.byte	87
 | |
| 	.long	.Linfo_string5          # DW_AT_name
 | |
| 	.byte	1                       # DW_AT_decl_file
 | |
| 	.byte	5                       # DW_AT_decl_line
 | |
|                                         # DW_AT_prototyped
 | |
| 	.long	124                     # DW_AT_type
 | |
|                                         # DW_AT_external
 | |
|                                         # DW_AT_APPLE_optimized
 | |
| 	.byte	3                       # Abbrev [3] 0x6c:0xf DW_TAG_formal_parameter
 | |
| 	.long	.Ldebug_loc1            # DW_AT_location
 | |
| 	.long	.Linfo_string6          # DW_AT_name
 | |
| 	.byte	1                       # DW_AT_decl_file
 | |
| 	.byte	5                       # DW_AT_decl_line
 | |
| 	.long	124                     # DW_AT_type
 | |
| 	.byte	0                       # End Of Children Mark
 | |
| 	.byte	4                       # Abbrev [4] 0x7c:0x5 DW_TAG_pointer_type
 | |
| 	.long	129                     # DW_AT_type
 | |
| 	.byte	5                       # Abbrev [5] 0x81:0x7 DW_TAG_base_type
 | |
| 	.long	.Linfo_string4          # DW_AT_name
 | |
| 	.byte	5                       # DW_AT_encoding
 | |
| 	.byte	4                       # DW_AT_byte_size
 | |
| 	.byte	0                       # End Of Children Mark
 | |
| 	.section	.debug_ranges,"",@progbits
 | |
| .Ldebug_range:
 | |
| 	.section	.debug_macinfo,"",@progbits
 | |
| 	.byte	0                       # End Of Macro List Mark
 | |
| 	.section	.debug_pubnames,"",@progbits
 | |
| 	.long	.LpubNames_end0-.LpubNames_begin0 # Length of Public Names Info
 | |
| .LpubNames_begin0:
 | |
| 	.short	2                       # DWARF Version
 | |
| 	.long	.Lcu_begin0             # Offset of Compilation Unit Info
 | |
| 	.long	137                     # Compilation Unit Length
 | |
| 	.long	42                      # DIE offset
 | |
| 	.asciz	"foo"                   # External Name
 | |
| 	.long	83                      # DIE offset
 | |
| 	.asciz	"bar"                   # External Name
 | |
| 	.long	0                       # End Mark
 | |
| .LpubNames_end0:
 | |
| 	.section	.debug_pubtypes,"",@progbits
 | |
| 	.long	.LpubTypes_end0-.LpubTypes_begin0 # Length of Public Types Info
 | |
| .LpubTypes_begin0:
 | |
| 	.short	2                       # DWARF Version
 | |
| 	.long	.Lcu_begin0             # Offset of Compilation Unit Info
 | |
| 	.long	137                     # Compilation Unit Length
 | |
| 	.long	129                     # DIE offset
 | |
| 	.asciz	"int"                   # External Name
 | |
| 	.long	0                       # End Mark
 | |
| .LpubTypes_end0:
 | |
| 
 | |
| 	.ident	"clang version 3.8.0-2ubuntu4 (tags/RELEASE_380/final)"
 | |
| 	.section	".note.GNU-stack","",@progbits
 | |
| 	.section	.debug_line,"",@progbits
 | |
| .Lline_table_start0:
 |