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