| // Copyright 2017 syzkaller project authors. All rights reserved. |
| // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. |
| |
| // +build |
| |
| #include <stdio.h> |
| |
| #define PRINT(x) \ |
| extern const unsigned char x[], x##_end[]; \ |
| print(#x, x, x##_end); |
| |
| void print(const char* name, const unsigned char* start, const unsigned char* end) |
| { |
| printf("const char %s[] = \"", name); |
| for (const unsigned char* p = start; p < end; p++) |
| printf("\\x%02x", *p); |
| printf("\";\n"); |
| } |
| |
| int main() |
| { |
| printf("// AUTOGENERATED FILE\n"); |
| PRINT(kvm_asm16_cpl3); |
| PRINT(kvm_asm32_paged); |
| PRINT(kvm_asm32_vm86); |
| PRINT(kvm_asm32_paged_vm86); |
| PRINT(kvm_asm64_vm86); |
| PRINT(kvm_asm64_enable_long); |
| PRINT(kvm_asm64_init_vm); |
| PRINT(kvm_asm64_vm_exit); |
| PRINT(kvm_asm64_cpl3); |
| return 0; |
| } |