xref: /llvm-project/llvm/test/tools/llvm-objdump/X86/start-stop-address.test (revision 75cdab6dc2453a508157a9c383b93373a93078d6)
1// RUN: yaml2obj -o %t.out %p/Inputs/simple-executable-x86_64.yaml
2// RUN: llvm-objdump --no-print-imm-hex -d %t.out --start-address=0x18 --stop-address=0x2f | FileCheck %s
3// RUN: llvm-objdump --no-print-imm-hex -d %t.out --start-address=0xc --stop-address=0x11 | FileCheck %s --check-prefix CROSSSECTION
4// RUN: llvm-objdump --no-print-imm-hex -d %t.out --start-address=0x40 --stop-address=0x47 | FileCheck %s --check-prefix CROSSDATA
5// RUN: llvm-objdump --no-print-imm-hex -d %t.out --start-address=0x40 | FileCheck %s --check-prefix START
6// RUN: llvm-objdump --no-print-imm-hex -d %t.out --stop-address=0x11 | FileCheck %s --check-prefix STOP
7// RUN: llvm-objdump --no-print-imm-hex -d %t.out --start-address=0xffffffff | FileCheck %s --check-prefix OUT-OF-RANGE
8
9// CHECK-NOT:          Disassembly
10// CHECK:              Disassembly of section .anothertext:
11// CHECK-EMPTY:
12// CHECK-NEXT:         <main>:
13// CHECK-NEXT:         18:	48 8d 04 25 a8 00 00 00 	leaq	168, %rax
14// CHECK-NEXT:         20:	c7 45 fc 00 00 00 00 	movl	$0, -4(%rbp)
15// CHECK-NEXT:         27:	48 89 45 f0 	movq	%rax, -16(%rbp)
16// CHECK-NEXT:         2b:	48 8b 45 f0 	movq	-16(%rbp), %rax
17// CHECK-NOT:          {{.}}
18
19// CROSSECTION-NOT:    Disassembly
20// CROSSSECTION:       Disassembly of section .text:
21// CROSSSECTION-EMPTY:
22// CROSSSECTION-NEXT:  <foo>:
23// CROSSSECTION-NEXT:  c:	c3 	retq
24// CROSSSECTION-NEXT:  d:	0f 1f 00 	nopl	(%rax)
25// CROSSSECTION-EMPTY:
26// CROSSSECTION-NEXT:  Disassembly of section .anothertext:
27// CROSSSECTION-EMPTY:
28// CROSSSECTION-NEXT:  <main>:
29// CROSSSECTION-NEXT:  10:	55 	pushq	%rbp
30// CROSSSECTION-NOT:   {{.}}
31
32// CROSSDATA-NOT:      Disassembly
33// CROSSDATA:          Disassembly of section .anothertext:
34// CROSSDATA:          <main>:
35// CROSSDATA:          40:	48 83 c4 20 	addq	$32, %rsp
36// CROSSDATA:          44:	5d 	popq	%rbp
37// CROSSDATA-DAG:      <somedata>:
38// CROSSDATA-NEXT:     45:	 74 65                           te
39// CROSSDATA-NOT:      {{.}}
40
41// START-NOT:   Disassembly
42// START:       Disassembly of section .anothertext:
43// START-EMPTY:
44// START-NEXT:  0000000000000010 <main>:
45// START-NEXT:        40: 48 83 c4 20                   addq    $32, %rsp
46// START-NEXT:        44: 5d                            popq    %rbp
47// START-EMPTY:
48// START-NEXT:  0000000000000045 <somedata>:
49// START-NEXT:        45:        74 65 73 74 20 73 74 72         test str
50// START-NEXT:        4d:        00 c3                           ..
51
52// STOP:       Disassembly of section .text:
53// STOP-EMPTY:
54// STOP-NEXT:       0000000000000000 <foo>:
55// STOP-NEXT:       0: 55                            pushq   %rbp
56// STOP-NEXT:       1: 48 89 e5                      movq    %rsp, %rbp
57// STOP-NEXT:       4: 8b 04 25 a8 00 00 00          movl    168, %eax
58// STOP-NEXT:       b: 5d                            popq    %rbp
59// STOP-NEXT:       c: c3                            retq
60// STOP-NEXT:       d: 0f 1f 00                      nopl    (%rax)
61// STOP-EMPTY:
62// STOP-NEXT:  Disassembly of section .anothertext:
63// STOP-EMPTY:
64// STOP-NEXT:  0000000000000010 <main>:
65// STOP-NEXT:      10: 55                            pushq   %rbp
66// STOP-NOT:       {{.}}
67
68// OUT-OF-RANGE-NOT: Disassembly
69
70// RUN: not llvm-objdump %t.out --start-address=0x40 --stop-address=0x3f 2>&1 | FileCheck %s --check-prefix ERRMSG
71// RUN: not llvm-objdump %t.out --start-address=0x40 --stop-address=0x40 2>&1 | FileCheck %s --check-prefix ERRMSG
72// ERRMSG: start address should be less than stop address
73