| // This test checks that the unwind data is dumped by llvm-objdump. | |
| // RUN: llvm-objdump -u %p/Inputs/win64-unwind.exe.coff-x86_64.obj \ | |
| // RUN: | FileCheck -check-prefix=OBJ %s | |
| // RUN: llvm-objdump -u %p/Inputs/win64-unwind.exe.coff-x86_64.exe \ | |
| // RUN: | FileCheck -check-prefix=EXE %s | |
| OBJ: Unwind info: | |
| OBJ: Function Table: | |
| OBJ-NEXT: Start Address: func | |
| OBJ-NEXT: End Address: func + 0x001b | |
| OBJ-NEXT: Unwind Info Address: .xdata | |
| OBJ-NEXT: Version: 1 | |
| OBJ-NEXT: Flags: 1 UNW_ExceptionHandler | |
| OBJ-NEXT: Size of prolog: 18 | |
| OBJ-NEXT: Number of Codes: 8 | |
| OBJ-NEXT: Frame register: RBX | |
| OBJ-NEXT: Frame offset: 0 | |
| OBJ-NEXT: Unwind Codes: | |
| OBJ-NEXT: 0x12: UOP_SetFPReg | |
| OBJ-NEXT: 0x0f: UOP_PushNonVol RBX | |
| OBJ-NEXT: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] | |
| OBJ-NEXT: 0x09: UOP_SaveNonVol RSI [0x0010] | |
| OBJ-NEXT: 0x04: UOP_AllocSmall 24 | |
| OBJ-NEXT: 0x00: UOP_PushMachFrame w/o error code | |
| OBJ: Function Table: | |
| OBJ-NEXT: Start Address: func + 0x0012 | |
| OBJ-NEXT: End Address: func + 0x0012 | |
| OBJ-NEXT: Unwind Info Address: .xdata + 0x001c | |
| OBJ-NEXT: Version: 1 | |
| OBJ-NEXT: Flags: 4 UNW_ChainInfo | |
| OBJ-NEXT: Size of prolog: 0 | |
| OBJ-NEXT: Number of Codes: 0 | |
| OBJ-NEXT: No frame pointer used | |
| OBJ: Function Table: | |
| OBJ-NEXT: Start Address: smallFunc | |
| OBJ-NEXT: End Address: smallFunc + 0x0001 | |
| OBJ-NEXT: Unwind Info Address: .xdata + 0x002c | |
| OBJ-NEXT: Version: 1 | |
| OBJ-NEXT: Flags: 0 | |
| OBJ-NEXT: Size of prolog: 0 | |
| OBJ-NEXT: Number of Codes: 0 | |
| OBJ-NEXT: No frame pointer used | |
| OBJ: Function Table: | |
| OBJ-NEXT: Start Address: allocFunc | |
| OBJ-NEXT: End Address: allocFunc + 0x001d | |
| OBJ-NEXT: Unwind Info Address: .xdata + 0x0034 | |
| OBJ-NEXT: Version: 1 | |
| OBJ-NEXT: Flags: 0 | |
| OBJ-NEXT: Size of prolog: 14 | |
| OBJ-NEXT: Number of Codes: 6 | |
| OBJ-NEXT: No frame pointer used | |
| OBJ-NEXT: Unwind Codes: | |
| OBJ-NEXT: 0x0e: UOP_AllocLarge 8454128 | |
| OBJ-NEXT: 0x07: UOP_AllocLarge 8190 | |
| OBJ-NEXT: 0x00: UOP_PushMachFrame w/o error code | |
| EXE: Function Table: | |
| EXE-NEXT: Start Address: 0x1000 | |
| EXE-NEXT: End Address: 0x101b | |
| EXE-NEXT: Unwind Info Address: 0x2000 | |
| EXE-NEXT: Version: 1 | |
| EXE-NEXT: Flags: 1 UNW_ExceptionHandler | |
| EXE-NEXT: Size of prolog: 18 | |
| EXE-NEXT: Number of Codes: 8 | |
| EXE-NEXT: Frame register: RBX | |
| EXE-NEXT: Frame offset: 0 | |
| EXE-NEXT: Unwind Codes: | |
| EXE-NEXT: 0x12: UOP_SetFPReg | |
| EXE-NEXT: 0x0f: UOP_PushNonVol RBX | |
| EXE-NEXT: 0x0e: UOP_SaveXMM128 XMM8 [0x0000] | |
| EXE-NEXT: 0x09: UOP_SaveNonVol RSI [0x0010] | |
| EXE-NEXT: 0x04: UOP_AllocSmall 24 | |
| EXE-NEXT: 0x00: UOP_PushMachFrame w/o error code | |
| EXE: Function Table: | |
| EXE-NEXT: Start Address: 0x1012 | |
| EXE-NEXT: End Address: 0x1012 | |
| EXE-NEXT: Unwind Info Address: 0x201c | |
| EXE-NEXT: Version: 1 | |
| EXE-NEXT: Flags: 4 UNW_ChainInfo | |
| EXE-NEXT: Size of prolog: 0 | |
| EXE-NEXT: Number of Codes: 0 | |
| EXE-NEXT: No frame pointer used | |
| EXE: Function Table: | |
| EXE-NEXT: Start Address: 0x101b | |
| EXE-NEXT: End Address: 0x101c | |
| EXE-NEXT: Unwind Info Address: 0x202c | |
| EXE-NEXT: Version: 1 | |
| EXE-NEXT: Flags: 0 | |
| EXE-NEXT: Size of prolog: 0 | |
| EXE-NEXT: Number of Codes: 0 | |
| EXE-NEXT: No frame pointer used | |
| EXE: Function Table: | |
| EXE-NEXT: Start Address: 0x101c | |
| EXE-NEXT: End Address: 0x1039 | |
| EXE-NEXT: Unwind Info Address: 0x2034 | |
| EXE-NEXT: Version: 1 | |
| EXE-NEXT: Flags: 0 | |
| EXE-NEXT: Size of prolog: 14 | |
| EXE-NEXT: Number of Codes: 6 | |
| EXE-NEXT: No frame pointer used | |
| EXE-NEXT: Unwind Codes: | |
| EXE-NEXT: 0x0e: UOP_AllocLarge 8454128 | |
| EXE-NEXT: 0x07: UOP_AllocLarge 8190 | |
| EXE-NEXT: 0x00: UOP_PushMachFrame w/o error code |