113 lines · plain
1## In this test we check the --needed-libs option.2 3# RUN: yaml2obj %s --docnum=1 -o %t14# RUN: llvm-readobj --needed-libs %t1 2>&1 \5# RUN: | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS6# RUN: llvm-readelf --needed-libs %t1 2>&1 \7# RUN: | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --strict-whitespace --check-prefix=NEEDED-LIBS8# RUN: llvm-readobj --elf-output-style=JSON --needed-libs --pretty-print %t1 2>&1 \9# RUN: | FileCheck %s -DFILE=%t1 --implicit-check-not=warning: --match-full-lines --strict-whitespace --check-prefix=JSON10 11## Check that library names are sorted when printed.12## Document that we also sort error entries.13 14# NEEDED-LIBS:{{^}}NeededLibraries [{{$}}15# NEEDED-LIBS-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x9999a11: it goes past the end of the table (0x85){{$}}16# NEEDED-LIBS-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x1111189: it goes past the end of the table (0x85){{$}}17# NEEDED-LIBS-NEXT:{{^}} <?>{{$}}18# NEEDED-LIBS-NEXT:{{^}} <?>{{$}}19# NEEDED-LIBS-NEXT:{{^}} aaa{{$}}20# NEEDED-LIBS-NEXT:{{^}} bbb{{$}}21# NEEDED-LIBS-NEXT:{{^}} ccc{{$}}22# NEEDED-LIBS-NEXT:{{^}}]{{$}}23 24# JSON: "FileSummary": {25# JSON: "NeededLibraries": [{{.*}}warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x9999a11: it goes past the end of the table (0x85)26# JSON-NEXT:{{.*}}warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x1111189: it goes past the end of the table (0x85)27# JSON-EMPTY:28# JSON-NEXT: "<?>",29# JSON-NEXT: "<?>",30# JSON-NEXT: "aaa",31# JSON-NEXT: "bbb",32# JSON-NEXT: "ccc"33# JSON-NEXT: ]34 35--- !ELF36FileHeader:37 Class: ELFCLASS6438 Data: ELFDATA2LSB39 Type: ET_EXEC40Sections:41 - Name: .dynstr42 Type: SHT_STRTAB43 Flags: [ SHF_ALLOC ]44 Content: '00616161006262620063636300' ## 0,a,a,a,0,b,b,b,0,c,c,c,045 - Name: .dynamic46 Type: SHT_DYNAMIC47 Entries:48 - Tag: DT_STRTAB49 Value: 0x000000000000000050 - Tag: DT_NEEDED51 Value: 0x999999952 - Tag: DT_NEEDED53 Value: 954 - Tag: DT_NEEDED55 Value: 156 - Tag: DT_NEEDED57 Value: 558 - Tag: DT_NEEDED59 Value: 0x111111160 - Tag: DT_STRSZ61 Value: [[SIZE=0xD]]62 - Tag: DT_NULL63 Value: 0x064ProgramHeaders:65 - Type: PT_LOAD66 VAddr: 0x067 FirstSec: .dynstr68 LastSec: .dynamic69 70## Check what we print when the dynamic string table is empty.71# RUN: yaml2obj %s --docnum=2 -o %t272# RUN: llvm-readobj --needed-libs %t2 2>&1 | \73# RUN: FileCheck %s -DFILE=%t2 --implicit-check-not=warning: --check-prefix=EMPTY-DYNSTR74# RUN: llvm-readelf --needed-libs %t2 2>&1 | \75# RUN: FileCheck %s -DFILE=%t2 --implicit-check-not=warning: --check-prefix=EMPTY-DYNSTR76 77# EMPTY-DYNSTR: NeededLibraries [78# EMPTY-DYNSTR-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x79: it goes past the end of the table (0x78)79# EMPTY-DYNSTR-NEXT: warning: '[[FILE]]': string table at offset 0x78: unable to read the string at 0x7a: it goes past the end of the table (0x78)80# EMPTY-DYNSTR-NEXT: <?>81# EMPTY-DYNSTR-NEXT: <?>82# EMPTY-DYNSTR-NEXT: ]83 84--- !ELF85FileHeader:86 Class: ELFCLASS6487 Data: ELFDATA2LSB88 Type: ET_EXEC89Sections:90 - Name: .dynstr91 Type: SHT_STRTAB92 Flags: [ SHF_ALLOC ]93 Size: 094 - Name: .dynamic95 Type: SHT_DYNAMIC96 Address: 0x100097 Entries:98 - Tag: DT_STRTAB99 Value: 0x0000000000000000100 - Tag: DT_NEEDED101 Value: 1102 - Tag: DT_NEEDED103 Value: 2104 - Tag: DT_STRSZ105 Value: 0x0106 - Tag: DT_NULL107 Value: 0x0108ProgramHeaders:109 - Type: PT_LOAD110 VAddr: 0x0111 FirstSec: .dynstr112 LastSec: .dynamic113