1*1f35d7b5SJayson Yan## Test how we output JSON file summaries. 2*1f35d7b5SJayson Yan 3*1f35d7b5SJayson Yan# RUN: rm -rf %t.dir 4*1f35d7b5SJayson Yan# RUN: mkdir -p %t.dir 5*1f35d7b5SJayson Yan# RUN: yaml2obj %s -o %t.dir/obj 6*1f35d7b5SJayson Yan 7*1f35d7b5SJayson Yan## Test outputting file summary for a single file. 8*1f35d7b5SJayson Yan# RUN: llvm-readobj --elf-output-style=JSON --pretty-print %t.dir/obj | \ 9*1f35d7b5SJayson Yan# RUN: FileCheck %s --check-prefix=SINGLE \ 10*1f35d7b5SJayson Yan# RUN: --match-full-lines --strict-whitespace --implicit-check-not={{.}} 11*1f35d7b5SJayson Yan 12*1f35d7b5SJayson Yan# SINGLE:[ 13*1f35d7b5SJayson Yan# SINGLE-NEXT: { 14*1f35d7b5SJayson Yan# SINGLE-NEXT: "FileSummary": { 15*1f35d7b5SJayson Yan# SINGLE-NEXT: "File": "{{.*}}/obj", 16*1f35d7b5SJayson Yan# SINGLE-NEXT: "Format": "elf64-x86-64", 17*1f35d7b5SJayson Yan# SINGLE-NEXT: "Arch": "x86_64", 18*1f35d7b5SJayson Yan# SINGLE-NEXT: "AddressSize": "64bit", 19*1f35d7b5SJayson Yan# SINGLE-NEXT: "LoadName": "<Not found>" 20*1f35d7b5SJayson Yan# SINGLE-NEXT: } 21*1f35d7b5SJayson Yan# SINGLE-NEXT: } 22*1f35d7b5SJayson Yan# SINGLE-NEXT:] 23*1f35d7b5SJayson Yan 24*1f35d7b5SJayson Yan## Test outputting file summary for multiple files. 25*1f35d7b5SJayson Yan# RUN: llvm-readobj --elf-output-style=JSON --pretty-print %t.dir/obj %t.dir/obj | \ 26*1f35d7b5SJayson Yan# RUN: FileCheck %s --check-prefix=MULTI \ 27*1f35d7b5SJayson Yan# RUN: --match-full-lines --strict-whitespace --implicit-check-not={{.}} 28*1f35d7b5SJayson Yan 29*1f35d7b5SJayson Yan# MULTI:[ 30*1f35d7b5SJayson Yan# MULTI-NEXT: { 31*1f35d7b5SJayson Yan# MULTI-NEXT: "FileSummary": { 32*1f35d7b5SJayson Yan# MULTI-NEXT: "File": "{{.*}}/obj", 33*1f35d7b5SJayson Yan# MULTI-NEXT: "Format": "elf64-x86-64", 34*1f35d7b5SJayson Yan# MULTI-NEXT: "Arch": "x86_64", 35*1f35d7b5SJayson Yan# MULTI-NEXT: "AddressSize": "64bit", 36*1f35d7b5SJayson Yan# MULTI-NEXT: "LoadName": "<Not found>" 37*1f35d7b5SJayson Yan# MULTI-NEXT: } 38*1f35d7b5SJayson Yan# MULTI-NEXT: }, 39*1f35d7b5SJayson Yan# MULTI-NEXT: { 40*1f35d7b5SJayson Yan# MULTI-NEXT: "FileSummary": { 41*1f35d7b5SJayson Yan# MULTI-NEXT: "File": "{{.*}}/obj", 42*1f35d7b5SJayson Yan# MULTI-NEXT: "Format": "elf64-x86-64", 43*1f35d7b5SJayson Yan# MULTI-NEXT: "Arch": "x86_64", 44*1f35d7b5SJayson Yan# MULTI-NEXT: "AddressSize": "64bit", 45*1f35d7b5SJayson Yan# MULTI-NEXT: "LoadName": "<Not found>" 46*1f35d7b5SJayson Yan# MULTI-NEXT: } 47*1f35d7b5SJayson Yan# MULTI-NEXT: } 48*1f35d7b5SJayson Yan# MULTI-NEXT:] 49*1f35d7b5SJayson Yan 50*1f35d7b5SJayson Yan## Test outputting file summary for an archive with a single file. 51*1f35d7b5SJayson Yan# RUN: rm -f %t.archive-single 52*1f35d7b5SJayson Yan# RUN: llvm-ar rc %t.archive-single %t.dir/obj 53*1f35d7b5SJayson Yan# RUN: llvm-readobj --elf-output-style=JSON --pretty-print %t.archive-single | \ 54*1f35d7b5SJayson Yan# RUN: FileCheck %s --check-prefix=ARCH-SINGLE \ 55*1f35d7b5SJayson Yan# RUN: --match-full-lines --strict-whitespace --implicit-check-not={{.}} 56*1f35d7b5SJayson Yan 57*1f35d7b5SJayson Yan# ARCH-SINGLE:[ 58*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: { 59*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "FileSummary": { 60*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "File": "{{.*}}.archive-single(obj)", 61*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "Format": "elf64-x86-64", 62*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "Arch": "x86_64", 63*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "AddressSize": "64bit", 64*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: "LoadName": "<Not found>" 65*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: } 66*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT: } 67*1f35d7b5SJayson Yan# ARCH-SINGLE-NEXT:] 68*1f35d7b5SJayson Yan 69*1f35d7b5SJayson Yan## Test outputting file summary for an archive with multiple files. 70*1f35d7b5SJayson Yan# RUN: rm -f %t.archive-multiple 71*1f35d7b5SJayson Yan# RUN: llvm-ar rc %t.archive-multiple %t.dir/obj %t.dir/obj 72*1f35d7b5SJayson Yan# RUN: llvm-readobj --elf-output-style=JSON --pretty-print %t.archive-multiple | \ 73*1f35d7b5SJayson Yan# RUN: FileCheck %s --check-prefix=ARCH-MULTI \ 74*1f35d7b5SJayson Yan# RUN: --match-full-lines --strict-whitespace --implicit-check-not={{.}} 75*1f35d7b5SJayson Yan 76*1f35d7b5SJayson Yan# ARCH-MULTI:[ 77*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: { 78*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "FileSummary": { 79*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "File": "{{.*}}.archive-multiple(obj)", 80*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "Format": "elf64-x86-64", 81*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "Arch": "x86_64", 82*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "AddressSize": "64bit", 83*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "LoadName": "<Not found>" 84*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: } 85*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: }, 86*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: { 87*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "FileSummary": { 88*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "File": "{{.*}}.archive-multiple(obj)", 89*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "Format": "elf64-x86-64", 90*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "Arch": "x86_64", 91*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "AddressSize": "64bit", 92*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: "LoadName": "<Not found>" 93*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: } 94*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT: } 95*1f35d7b5SJayson Yan# ARCH-MULTI-NEXT:] 96*1f35d7b5SJayson Yan 97*1f35d7b5SJayson Yan--- !ELF 98*1f35d7b5SJayson YanFileHeader: 99*1f35d7b5SJayson Yan Class: ELFCLASS64 100*1f35d7b5SJayson Yan Data: ELFDATA2LSB 101*1f35d7b5SJayson Yan Type: ET_REL 102*1f35d7b5SJayson Yan Machine: EM_X86_64 103