Skip to content

Commit

Permalink
[llvm-readobj][ELF] Test multivalued rpath entries and alter the outp…
Browse files Browse the repository at this point in the history
…ut for readobj to emphasize the single valued nature of NEEDED, SONAME, USED etc. (llvm#96562)

In the context of llvm#95976 it became clear that the output for readobj
implied multi valued entries in several cases in the elf headers that
the documentation only allowed for a single value. DT_NEEDED is the
example here where the value is an offset into the string table without
any sort of separator that could give you multiple entries. This patch
alters the LLVM output so that the single valued nature is emphasized.
For example the output was:
```
DynamicSection [ (35 entries)
  Tag                Type         Name/Value
  0x000000000000001D RUNPATH      Library runpath: [$ORIGIN/../lib:]
  0x0000000000000001 NEEDED       Shared library: [libm.so.6]
  0x0000000000000001 NEEDED       Shared library: [libz.so.1]
  0x0000000000000001 NEEDED       Shared library: [libzstd.so.1]
```
and is now
```
  Tag                Type         Name/Value
  0x000000000000001D RUNPATH      Library runpath: [$ORIGIN/../lib:]
  0x0000000000000001 NEEDED       Shared library: libm.so.6
  0x0000000000000001 NEEDED       Shared library: libz.so.1
  0x0000000000000001 NEEDED       Shared library: libzstd.so.1
```
This pr also tests that multi-valued rpaths are handled correctly in the
JSON case (i.e. they become proper lists) like:
```
{
    "Tag": 15,
    "Type": "RPATH",
    "Value": 9,
    "Path": [
        "x",
        "w",
        "U"
    ]
},
```
when separated by :
  • Loading branch information
feg208 committed Jun 26, 2024
1 parent e5e0d87 commit 161e168
Show file tree
Hide file tree
Showing 19 changed files with 106 additions and 105 deletions.
2 changes: 1 addition & 1 deletion lld/test/ELF/as-needed-no-reloc.s
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

# There must be a NEEDED entry for each undefined

# CHECK: (NEEDED) Shared library: [{{.*}}as-needed-no-reloc{{.*}}2.so]
# CHECK: (NEEDED) Shared library: {{.*}}as-needed-no-reloc{{.*}}2.so
# CHECK: UND bar

.globl _start
Expand Down
12 changes: 6 additions & 6 deletions lld/test/ELF/as-needed.s
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
// RUN: ld.lld %t.o %t.script -o %t2
// RUN: llvm-readobj --dynamic-table %t2 | FileCheck -check-prefix=CHECK2 %s

// CHECK: NEEDED Shared library: [shared1]
// CHECK: NEEDED Shared library: [shared2]
// CHECK: NEEDED Shared library: [shared3]
// CHECK: NEEDED Shared library: shared1
// CHECK: NEEDED Shared library: shared2
// CHECK: NEEDED Shared library: shared3

// CHECK2: NEEDED Shared library: [shared1]
// CHECK2-NOT: NEEDED Shared library: [shared2]
// CHECK2-NOT: NEEDED Shared library: [shared3]
// CHECK2: NEEDED Shared library: shared1
// CHECK2-NOT: NEEDED Shared library: shared2
// CHECK2-NOT: NEEDED Shared library: shared3

.global _start
_start:
Expand Down
4 changes: 2 additions & 2 deletions lld/test/ELF/auxiliary.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

# CHECK: DynamicSection [
# CHECK-NEXT: Tag Type Name/Value
# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [aaa]
# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [bbb]
# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: aaa
# CHECK-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: bbb

# RUN: not ld.lld %t.o -f aaa --auxiliary bbb -o /dev/null 2>&1 \
# RUN: | FileCheck -check-prefix=ERR %s
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/dynamic-reloc.s
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

// CHECK: DynamicSection [
// CHECK-NEXT: Tag Type Name/Value
// CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: [so]
// CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: so
// CHECK-NEXT: 0x0000000000000015 DEBUG 0x0
// CHECK-NEXT: 0x0000000000000017 JMPREL
// CHECK-NEXT: 0x0000000000000002 PLTRELSZ 24 (bytes)
Expand Down
4 changes: 2 additions & 2 deletions lld/test/ELF/filter.s
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

# CHECK: DynamicSection [
# CHECK-NEXT: Tag Type Name/Value
# CHECK-NEXT: 0x000000007FFFFFFF FILTER Filter library: [foo.so]
# CHECK-NEXT: 0x000000007FFFFFFF FILTER Filter library: [boo.so]
# CHECK-NEXT: 0x000000007FFFFFFF FILTER Filter library: foo.so
# CHECK-NEXT: 0x000000007FFFFFFF FILTER Filter library: boo.so

# RUN: not ld.lld %t.o -F x -o /dev/null 2>&1 | FileCheck -check-prefix=ERR %s
# ERR: -F may not be used without -shared
2 changes: 1 addition & 1 deletion lld/test/ELF/gc-sections-shared.s
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
# this case is checked with symbol qux and %t4.so.

# CHECK-NOT: NEEDED
# CHECK: (NEEDED) Shared library: [{{.*}}3.so]
# CHECK: (NEEDED) Shared library: {{.*}}3.so
# CHECK-NOT: NEEDED

# CHECK-DAG: FUNC WEAK DEFAULT UND qux
Expand Down
8 changes: 4 additions & 4 deletions lld/test/ELF/no-soname.s
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@
// RUN: ld.lld %t.o %t.dir/no-soname/libfoo.so -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s

// CHECK: 0x0000000000000001 NEEDED Shared library: [{{.*}}/no-soname/libfoo.so]
// CHECK: 0x0000000000000001 NEEDED Shared library: {{.*}}/no-soname/libfoo.so
// CHECK-NOT: NEEDED

// RUN: ld.lld %t.o %t.dir/no-soname/../no-soname/libfoo.so -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK2

// CHECK2: 0x0000000000000001 NEEDED Shared library: [{{.*}}/no-soname/../no-soname/libfoo.so]
// CHECK2: 0x0000000000000001 NEEDED Shared library: {{.*}}/no-soname/../no-soname/libfoo.so
// CHECK2-NOT: NEEDED

// RUN: ld.lld %t.o -L%t.dir/no-soname/../no-soname -lfoo -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK3

// CHECK3: 0x0000000000000001 NEEDED Shared library: [libfoo.so]
// CHECK3: 0x0000000000000001 NEEDED Shared library: libfoo.so
// CHECK3-NOT: NEEDED

// RUN: ld.lld %t.o -shared -soname libbar.so -o %t.dir/no-soname/libbar.so
// RUN: ld.lld %t.o %t.dir/no-soname/libbar.so -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s --check-prefix=CHECK4

// CHECK4: 0x0000000000000001 NEEDED Shared library: [libbar.so]
// CHECK4: 0x0000000000000001 NEEDED Shared library: libbar.so
// CHECK4-NOT: NEEDED

.global _start
Expand Down
8 changes: 4 additions & 4 deletions lld/test/ELF/partition-synthetic-sections.s
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@

// CHECK: Dynamic section
// CHECK-NEXT: Tag
// CHECK-NEXT: 0x0000000000000001 (NEEDED) Shared library: [verneed1.so.0]
// PART0-NEXT: 0x000000000000000e (SONAME) Library soname: [main.so]
// PART1-NEXT: 0x0000000000000001 (NEEDED) Shared library: [main.so]
// PART1-NEXT: 0x000000000000000e (SONAME) Library soname: [part1]
// CHECK-NEXT: 0x0000000000000001 (NEEDED) Shared library: verneed1.so.0
// PART0-NEXT: 0x000000000000000e (SONAME) Library soname: main.so
// PART1-NEXT: 0x0000000000000001 (NEEDED) Shared library: main.so
// PART1-NEXT: 0x000000000000000e (SONAME) Library soname: part1
// CHECK-NEXT: 0x0000000000000007 (RELA) 0x[[RELA_DYN_ADDR]]
// CHECK-NEXT: 0x0000000000000008 (RELASZ)
// CHECK-NEXT: 0x0000000000000009 (RELAENT) 24 (bytes)
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/push-state.s
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@

// RUN: ld.lld -o %t.exe -push-state -as-needed -pop-state %t.so %t1.o
// RUN: llvm-readobj --dynamic-table %t.exe | FileCheck -check-prefix=NO-AS-NEEDED %s
// NO-AS-NEEDED: NEEDED Shared library: [libfoo]
// NO-AS-NEEDED: NEEDED Shared library: libfoo


// RUN: mkdir -p %t.dir
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/shared-ppc64.s
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
// CHECK: DynamicSection [
// CHECK-NEXT: Tag Type Name/Value
// CHECK-NEXT: 0x000000000000001D RUNPATH Library runpath: [foo:bar]
// CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: [{{.*}}2.so]
// CHECK-NEXT: 0x0000000000000001 NEEDED Shared library: {{.*}}2.so
// CHECK-NEXT: 0x0000000000000015 DEBUG 0x0
// CHECK-NEXT: 0x0000000000000007 RELA [[RELADDR]]
// CHECK-NEXT: 0x0000000000000008 RELASZ [[RELSIZE]] (bytes)
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/shared.s
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
// CHECK: DynamicSection [
// CHECK-NEXT: Tag Type Name/Value
// CHECK-NEXT: 0x0000001D RUNPATH Library runpath: [foo:bar]
// CHECK-NEXT: 0x00000001 NEEDED Shared library: [{{.*}}2.so]
// CHECK-NEXT: 0x00000001 NEEDED Shared library: {{.*}}2.so
// CHECK-NEXT: 0x00000015 DEBUG 0x0
// CHECK-NEXT: 0x00000011 REL [[RELADDR]]
// CHECK-NEXT: 0x00000012 RELSZ [[RELSIZE]] (bytes)
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/soname.s
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
// RUN: ld.lld %t.o %t.so %t2.so -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s

// CHECK: 0x0000000000000001 NEEDED Shared library: [bar]
// CHECK: 0x0000000000000001 NEEDED Shared library: bar
// CHECK-NOT: NEEDED

.global _start
Expand Down
2 changes: 1 addition & 1 deletion lld/test/ELF/soname2.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// RUN: ld.lld %t.o -shared -soname=foo.so -o %t
// RUN: llvm-readobj --dynamic-table %t | FileCheck %s

// CHECK: 0x000000000000000E SONAME Library soname: [foo.so]
// CHECK: 0x000000000000000E SONAME Library soname: foo.so

.global _start
_start:
4 changes: 2 additions & 2 deletions lld/test/ELF/wrap-drop-shared-original.s
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
# RUN: llvm-readelf --dynamic --dyn-syms %t/libref-with-original-and-wrapped.so | \
# RUN: FileCheck --check-prefix=ORIGINAL-AND-WRAPPED %s

# ORIGINAL-NOT: (NEEDED) Shared library: [liboriginal.so]
# ORIGINAL-NOT: (NEEDED) Shared library: liboriginal.so
# ORIGINAL: Symbol table '.dynsym' contains 3 entries:
# ORIGINAL: NOTYPE LOCAL DEFAULT UND
# ORIGINAL-NEXT: NOTYPE GLOBAL DEFAULT UND __wrap_foo
# ORIGINAL-NEXT: NOTYPE GLOBAL DEFAULT 6 ref

# ORIGINAL-AND-WRAPPED: (NEEDED) Shared library: [liboriginal-and-wrapped.so]
# ORIGINAL-AND-WRAPPED: (NEEDED) Shared library: liboriginal-and-wrapped.so
# ORIGINAL-AND-WRAPPED: Symbol table '.dynsym' contains 3 entries:
# ORIGINAL-AND-WRAPPED: NOTYPE LOCAL DEFAULT UND
# ORIGINAL-AND-WRAPPED-NEXT: NOTYPE GLOBAL DEFAULT UND __wrap_foo
Expand Down
2 changes: 1 addition & 1 deletion llvm/test/tools/llvm-ifs/write-stub.test
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ Symbols:
# CHECK-NEXT: 0x[[DYNTABZ]]0000006 SYMTAB
# CHECK-NEXT: 0x[[DYNTABZ]]0000005 STRTAB
# CHECK-NEXT: 0x[[DYNTABZ]]000000A STRSZ
# CHECK-NEXT: 0x[[DYNTABZ]]0000001 NEEDED Shared library: [libc.so.6]
# CHECK-NEXT: 0x[[DYNTABZ]]0000001 NEEDED Shared library: libc.so.6
# CHECK-NEXT: 0x[[DYNTABZ]]0000000 NULL
# CHECK-NEXT: ]

Expand Down
54 changes: 27 additions & 27 deletions llvm/test/tools/llvm-readobj/ELF/dynamic-malformed.test
Original file line number Diff line number Diff line change
Expand Up @@ -100,15 +100,15 @@ ProgramHeaders:
# BAD-STRING-LLVM-NEXT: 0x0000000000000005 STRTAB 0x1000
# BAD-STRING-LLVM-NEXT: 0x000000000000000A STRSZ 1 (bytes)
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1)
# BAD-STRING-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: [<?>]
# BAD-STRING-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: <?>
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1)
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: [<?>]
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFF FILTER Filter library: <?>
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1)
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: [<?>]
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFD AUXILIARY Auxiliary library: <?>
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1)
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: [<?>]
# BAD-STRING-LLVM-NEXT: 0x000000007FFFFFFE USED Not needed object: <?>
## Note: there is no "string table at offset 0xb0..." warning here, because it was printed earlier.
# BAD-STRING-LLVM-NEXT: 0x000000000000000E SONAME Library soname: [<?>]
# BAD-STRING-LLVM-NEXT: 0x000000000000000E SONAME Library soname: <?>
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1)
# BAD-STRING-LLVM-NEXT: 0x000000000000000F RPATH Library rpath: [<?>]
# BAD-STRING-LLVM-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1)
Expand All @@ -121,15 +121,15 @@ ProgramHeaders:
# BAD-STRING-GNU-NEXT: 0x0000000000000005 (STRTAB) 0x1000
# BAD-STRING-GNU-NEXT: 0x000000000000000a (STRSZ) 1 (bytes)
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: [<?>]
# BAD-STRING-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: <?>
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: [<?>]
# BAD-STRING-GNU-NEXT: 0x000000007fffffff (FILTER) Filter library: <?>
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: [<?>]
# BAD-STRING-GNU-NEXT: 0x000000007ffffffd (AUXILIARY) Auxiliary library: <?>
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: [<?>]
# BAD-STRING-GNU-NEXT: 0x000000007ffffffe (USED) Not needed object: <?>
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: [<?>]
# BAD-STRING-GNU-NEXT: 0x000000000000000e (SONAME) Library soname: <?>
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb7: it goes past the end of the table (0xb1)
# BAD-STRING-GNU-NEXT: 0x000000000000000f (RPATH) Library rpath: [<?>]
# BAD-STRING-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb8: it goes past the end of the table (0xb1)
Expand Down Expand Up @@ -199,8 +199,8 @@ ProgramHeaders:
# BAD-STRTAB-ERR2: warning: '[[FILE]]': unable to parse DT_STRTAB: virtual address is not in any segment: 0x2000000
# BAD-STRTAB-LLVM: LoadName: <Not found>
# BAD-STRTAB: warning: '[[FILE]]': string table was not found
# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: [<?>]
# BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: [<?>]
# BAD-STRTAB-LLVM-NEXT: 0x0000000000000001 NEEDED Shared library: <?>
# BAD-STRTAB-GNU-NEXT: 0x0000000000000001 (NEEDED) Shared library: <?>
# BAD-STRTAB: NeededLibraries [
# BAD-STRTAB: <?>
# BAD-STRTAB: ]
Expand Down Expand Up @@ -313,15 +313,15 @@ ProgramHeaders:

# NOT-TERMINATED-LLVM: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated
# NOT-TERMINATED: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb0: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}} Shared library: [<?>]
# NOT-TERMINATED-NEXT: {{[(]?}}NEEDED{{[)]?}} Shared library: <?>
# NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb1: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [<?>]
# NOT-TERMINATED-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: <?>
# NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb2: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>]
# NOT-TERMINATED-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?>
# NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb3: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [<?>]
# NOT-TERMINATED-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: <?>
# NOT-TERMINATED-GNU-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb4: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [<?>]
# NOT-TERMINATED-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: <?>
# NOT-TERMINATED-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb5: the string table is not null-terminated
# NOT-TERMINATED-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [<?>]
# NOT-TERMINATED-GREQ-NEXT: warning: '[[FILE]]': string table at offset 0xb0: unable to read the string at 0xb6: the string table is not null-terminated
Expand Down Expand Up @@ -390,11 +390,11 @@ ProgramHeaders:
## as normal. Since the file ends with a zero byte, strings are dumped, but if it didn't,
## we'd get <?> printed instead. The important bit is that we don't get the past the end warning.

# BEFORE-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: [test.soabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [est.soabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [st.soabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [t.soabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [.soabc]
# BEFORE-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: test.soabc
# BEFORE-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: est.soabc
# BEFORE-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: st.soabc
# BEFORE-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: t.soabc
# BEFORE-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: .soabc
# BEFORE-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [soabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}} Library runpath: [oabc]
# BEFORE-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}} 0x0
Expand All @@ -406,11 +406,11 @@ ProgramHeaders:

# PAST-THE-EOF: warning: '[[FILE]]': the dynamic string table at 0xb0 goes past the end of the file (0x2c0) with DT_STRSZ = 0x211
# PAST-THE-EOF: warning: '[[FILE]]': string table was not found
# PAST-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: [<?>]
# PAST-THE-EOF: {{[(]?}}NEEDED{{[)]?}} Shared library: <?>
# PAST-THE-EOF-NEXT: {{[(]?}}FILTER{{[)]?}} Filter library: <?>
# PAST-THE-EOF-NEXT: {{[(]?}}AUXILIARY{{[)]?}} Auxiliary library: <?>
# PAST-THE-EOF-NEXT: {{[(]?}}USED{{[)]?}} Not needed object: <?>
# PAST-THE-EOF-NEXT: {{[(]?}}SONAME{{[)]?}} Library soname: <?>
# PAST-THE-EOF-NEXT: {{[(]?}}RPATH{{[)]?}} Library rpath: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}RUNPATH{{[)]?}} Library runpath: [<?>]
# PAST-THE-EOF-NEXT: {{[(]?}}NULL{{[)]?}} 0x0
Expand Down
Loading

0 comments on commit 161e168

Please sign in to comment.