Repository: gimli-rs/addr2line
Pull request #333 (2024-10-03 06:04:34)

Replace output_equivalence test with regression tests
Bug fixes require us to have different output from binutils addr2line, but we don't exactly match llvm-addr2line either, so there is no good way to compare our output against existing tools. Switch to using a regression test for our output instead.


Patch:
diff --git a/Cargo.toml b/Cargo.toml
index 46acc95..666be76 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -70,11 +70,6 @@ cargo-all = []
 # stable interface of this crate.
 rustc-dep-of-std = ['core', 'alloc', 'compiler_builtins', 'gimli/rustc-dep-of-std']
 
-[[test]]
-name = "output_equivalence"
-harness = false
-required-features = ["bin"]
-
 [[test]]
 name = "testinput"
 harness = false


Test patch:
diff --git a/testoutput/flags/base-a b/testoutput/flags/base-a
new file mode 100644
index 0000000..a2ec1b0
--- /dev/null
+++ b/testoutput/flags/base-a
@@ -0,0 +1,48 @@
+0x0000000000001060
+/object/testfiles/dwarf/base.cpp:26
+0x0000000000001068
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000106a
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000107a
+/object/testfiles/dwarf/base.cpp:28
+0x000000000000107f
+/object/testfiles/dwarf/base.cpp:28
+0x0000000000001084
+/object/testfiles/dwarf/base.cpp:30
+0x0000000000001190
+/object/testfiles/dwarf/base.cpp:12
+0x0000000000001194
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0
+/object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0
+/object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4
+/object/testfiles/dwarf/base.cpp:20
+0x0000000000001200
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001203
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001207
+/object/testfiles/dwarf/base.cpp:15
+0x000000000000120b
+/object/testfiles/dwarf/base.cpp:14
+0x0000000000001230
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001233
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001237
+/object/testfiles/dwarf/base.cpp:15
+0x000000000000123b
+/object/testfiles/dwarf/base.cpp:14
+0x0000000000001240
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-af b/testoutput/flags/base-af
new file mode 100644
index 0000000..0751a0d
--- /dev/null
+++ b/testoutput/flags/base-af
@@ -0,0 +1,72 @@
+0x0000000000001060
+main
+/object/testfiles/dwarf/base.cpp:26
+0x0000000000001068
+main
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000106a
+main
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000107a
+main
+/object/testfiles/dwarf/base.cpp:28
+0x000000000000107f
+main
+/object/testfiles/dwarf/base.cpp:28
+0x0000000000001084
+main
+/object/testfiles/dwarf/base.cpp:30
+0x0000000000001190
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:12
+0x0000000000001194
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:20
+0x0000000000001200
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001203
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001207
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x000000000000120b
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x0000000000001230
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001233
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x0000000000001237
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x000000000000123b
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x0000000000001240
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-ai b/testoutput/flags/base-ai
new file mode 100644
index 0000000..4a1a58d
--- /dev/null
+++ b/testoutput/flags/base-ai
@@ -0,0 +1,56 @@
+0x0000000000001060
+/object/testfiles/dwarf/base.cpp:26
+0x0000000000001068
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000106a
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000107a
+/object/testfiles/dwarf/base.cpp:28
+0x000000000000107f
+/object/testfiles/dwarf/base.cpp:28
+0x0000000000001084
+/object/testfiles/dwarf/base.cpp:30
+0x0000000000001190
+/object/testfiles/dwarf/base.cpp:12
+0x0000000000001194
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0
+/object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0
+/object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4
+/object/testfiles/dwarf/base.cpp:20
+0x0000000000001200
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001203
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001207
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+0x000000000000120b
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001230
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001233
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001237
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+0x000000000000123b
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001240
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-aif b/testoutput/flags/base-aif
new file mode 100644
index 0000000..ce78900
--- /dev/null
+++ b/testoutput/flags/base-aif
@@ -0,0 +1,88 @@
+0x0000000000001060
+main
+/object/testfiles/dwarf/base.cpp:26
+0x0000000000001068
+main
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000106a
+main
+/object/testfiles/dwarf/base.cpp:26
+0x000000000000107a
+main
+/object/testfiles/dwarf/base.cpp:28
+0x000000000000107f
+main
+/object/testfiles/dwarf/base.cpp:28
+0x0000000000001084
+main
+/object/testfiles/dwarf/base.cpp:30
+0x0000000000001190
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:12
+0x0000000000001194
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:20
+0x0000000000001200
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001203
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001207
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+0x000000000000120b
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+0x0000000000001230
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001233
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001237
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+0x000000000000123b
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+0x0000000000001240
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-aip b/testoutput/flags/base-aip
new file mode 100644
index 0000000..df63493
--- /dev/null
+++ b/testoutput/flags/base-aip
@@ -0,0 +1,32 @@
+0x0000000000001060: /object/testfiles/dwarf/base.cpp:26
+0x0000000000001068: /object/testfiles/dwarf/base.cpp:26
+0x000000000000106a: /object/testfiles/dwarf/base.cpp:26
+0x000000000000107a: /object/testfiles/dwarf/base.cpp:28
+0x000000000000107f: /object/testfiles/dwarf/base.cpp:28
+0x0000000000001084: /object/testfiles/dwarf/base.cpp:30
+0x0000000000001190: /object/testfiles/dwarf/base.cpp:12
+0x0000000000001194: /object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb: /object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0: /object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0: /object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4: /object/testfiles/dwarf/base.cpp:20
+0x0000000000001200: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+0x0000000000001203: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+0x0000000000001207: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+0x000000000000120b: /object/testfiles/dwarf/base.cpp:14
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+0x0000000000001230: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+0x0000000000001233: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+0x0000000000001237: /object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+0x000000000000123b: /object/testfiles/dwarf/base.cpp:14
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+0x0000000000001240: /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-aipf b/testoutput/flags/base-aipf
new file mode 100644
index 0000000..0e36795
--- /dev/null
+++ b/testoutput/flags/base-aipf
@@ -0,0 +1,32 @@
+0x0000000000001060: main at /object/testfiles/dwarf/base.cpp:26
+0x0000000000001068: main at /object/testfiles/dwarf/base.cpp:26
+0x000000000000106a: main at /object/testfiles/dwarf/base.cpp:26
+0x000000000000107a: main at /object/testfiles/dwarf/base.cpp:28
+0x000000000000107f: main at /object/testfiles/dwarf/base.cpp:28
+0x0000000000001084: main at /object/testfiles/dwarf/base.cpp:30
+0x0000000000001190: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:12
+0x0000000000001194: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:20
+0x0000000000001200: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+0x0000000000001203: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+0x0000000000001207: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+0x000000000000120b: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+0x0000000000001230: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+0x0000000000001233: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+0x0000000000001237: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+0x000000000000123b: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+0x0000000000001240: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-aips b/testoutput/flags/base-aips
new file mode 100644
index 0000000..1818c3e
--- /dev/null
+++ b/testoutput/flags/base-aips
@@ -0,0 +1,32 @@
+0x0000000000001060: base.cpp:26
+0x0000000000001068: base.cpp:26
+0x000000000000106a: base.cpp:26
+0x000000000000107a: base.cpp:28
+0x000000000000107f: base.cpp:28
+0x0000000000001084: base.cpp:30
+0x0000000000001190: base.cpp:12
+0x0000000000001194: base.cpp:14
+0x00000000000011b0: base.cpp:15
+0x00000000000011b3: base.cpp:15
+0x00000000000011b7: base.cpp:15
+0x00000000000011bb: base.cpp:14
+0x00000000000011c0: base.cpp:16
+0x00000000000011d0: base.cpp:19
+0x00000000000011d4: base.cpp:20
+0x0000000000001200: base.cpp:15
+ (inlined by) base.cpp:21
+0x0000000000001203: base.cpp:15
+ (inlined by) base.cpp:21
+0x0000000000001207: base.cpp:15
+ (inlined by) base.cpp:21
+0x000000000000120b: base.cpp:14
+ (inlined by) base.cpp:21
+0x0000000000001230: base.cpp:15
+ (inlined by) base.cpp:23
+0x0000000000001233: base.cpp:15
+ (inlined by) base.cpp:23
+0x0000000000001237: base.cpp:15
+ (inlined by) base.cpp:23
+0x000000000000123b: base.cpp:14
+ (inlined by) base.cpp:23
+0x0000000000001240: base.cpp:24
diff --git a/testoutput/flags/base-aipsf b/testoutput/flags/base-aipsf
new file mode 100644
index 0000000..9e22f99
--- /dev/null
+++ b/testoutput/flags/base-aipsf
@@ -0,0 +1,32 @@
+0x0000000000001060: main at base.cpp:26
+0x0000000000001068: main at base.cpp:26
+0x000000000000106a: main at base.cpp:26
+0x000000000000107a: main at base.cpp:28
+0x000000000000107f: main at base.cpp:28
+0x0000000000001084: main at base.cpp:30
+0x0000000000001190: _ZN3Foo3barEPKc at base.cpp:12
+0x0000000000001194: _ZN3Foo3barEPKc at base.cpp:14
+0x00000000000011b0: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011b3: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011b7: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011bb: _ZN3Foo3barEPKc at base.cpp:14
+0x00000000000011c0: _ZN3Foo3barEPKc at base.cpp:16
+0x00000000000011d0: _ZN3Foo3fooEi at base.cpp:19
+0x00000000000011d4: _ZN3Foo3fooEi at base.cpp:20
+0x0000000000001200: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+0x0000000000001203: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+0x0000000000001207: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+0x000000000000120b: _ZN3Foo3barEPKc at base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+0x0000000000001230: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+0x0000000000001233: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+0x0000000000001237: _ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+0x000000000000123b: _ZN3Foo3barEPKc at base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+0x0000000000001240: _ZN3Foo3fooEi at base.cpp:24
diff --git a/testoutput/flags/base-ais b/testoutput/flags/base-ais
new file mode 100644
index 0000000..35d9630
--- /dev/null
+++ b/testoutput/flags/base-ais
@@ -0,0 +1,56 @@
+0x0000000000001060
+base.cpp:26
+0x0000000000001068
+base.cpp:26
+0x000000000000106a
+base.cpp:26
+0x000000000000107a
+base.cpp:28
+0x000000000000107f
+base.cpp:28
+0x0000000000001084
+base.cpp:30
+0x0000000000001190
+base.cpp:12
+0x0000000000001194
+base.cpp:14
+0x00000000000011b0
+base.cpp:15
+0x00000000000011b3
+base.cpp:15
+0x00000000000011b7
+base.cpp:15
+0x00000000000011bb
+base.cpp:14
+0x00000000000011c0
+base.cpp:16
+0x00000000000011d0
+base.cpp:19
+0x00000000000011d4
+base.cpp:20
+0x0000000000001200
+base.cpp:15
+base.cpp:21
+0x0000000000001203
+base.cpp:15
+base.cpp:21
+0x0000000000001207
+base.cpp:15
+base.cpp:21
+0x000000000000120b
+base.cpp:14
+base.cpp:21
+0x0000000000001230
+base.cpp:15
+base.cpp:23
+0x0000000000001233
+base.cpp:15
+base.cpp:23
+0x0000000000001237
+base.cpp:15
+base.cpp:23
+0x000000000000123b
+base.cpp:14
+base.cpp:23
+0x0000000000001240
+base.cpp:24
diff --git a/testoutput/flags/base-aisf b/testoutput/flags/base-aisf
new file mode 100644
index 0000000..6820e11
--- /dev/null
+++ b/testoutput/flags/base-aisf
@@ -0,0 +1,88 @@
+0x0000000000001060
+main
+base.cpp:26
+0x0000000000001068
+main
+base.cpp:26
+0x000000000000106a
+main
+base.cpp:26
+0x000000000000107a
+main
+base.cpp:28
+0x000000000000107f
+main
+base.cpp:28
+0x0000000000001084
+main
+base.cpp:30
+0x0000000000001190
+_ZN3Foo3barEPKc
+base.cpp:12
+0x0000000000001194
+_ZN3Foo3barEPKc
+base.cpp:14
+0x00000000000011b0
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011b3
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011b7
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011bb
+_ZN3Foo3barEPKc
+base.cpp:14
+0x00000000000011c0
+_ZN3Foo3barEPKc
+base.cpp:16
+0x00000000000011d0
+_ZN3Foo3fooEi
+base.cpp:19
+0x00000000000011d4
+_ZN3Foo3fooEi
+base.cpp:20
+0x0000000000001200
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+0x0000000000001203
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+0x0000000000001207
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+0x000000000000120b
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3fooEi
+base.cpp:21
+0x0000000000001230
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+0x0000000000001233
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+0x0000000000001237
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+0x000000000000123b
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3fooEi
+base.cpp:23
+0x0000000000001240
+_ZN3Foo3fooEi
+base.cpp:24
diff --git a/testoutput/flags/base-ap b/testoutput/flags/base-ap
new file mode 100644
index 0000000..48fd071
--- /dev/null
+++ b/testoutput/flags/base-ap
@@ -0,0 +1,24 @@
+0x0000000000001060: /object/testfiles/dwarf/base.cpp:26
+0x0000000000001068: /object/testfiles/dwarf/base.cpp:26
+0x000000000000106a: /object/testfiles/dwarf/base.cpp:26
+0x000000000000107a: /object/testfiles/dwarf/base.cpp:28
+0x000000000000107f: /object/testfiles/dwarf/base.cpp:28
+0x0000000000001084: /object/testfiles/dwarf/base.cpp:30
+0x0000000000001190: /object/testfiles/dwarf/base.cpp:12
+0x0000000000001194: /object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7: /object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb: /object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0: /object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0: /object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4: /object/testfiles/dwarf/base.cpp:20
+0x0000000000001200: /object/testfiles/dwarf/base.cpp:15
+0x0000000000001203: /object/testfiles/dwarf/base.cpp:15
+0x0000000000001207: /object/testfiles/dwarf/base.cpp:15
+0x000000000000120b: /object/testfiles/dwarf/base.cpp:14
+0x0000000000001230: /object/testfiles/dwarf/base.cpp:15
+0x0000000000001233: /object/testfiles/dwarf/base.cpp:15
+0x0000000000001237: /object/testfiles/dwarf/base.cpp:15
+0x000000000000123b: /object/testfiles/dwarf/base.cpp:14
+0x0000000000001240: /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-apf b/testoutput/flags/base-apf
new file mode 100644
index 0000000..193ba77
--- /dev/null
+++ b/testoutput/flags/base-apf
@@ -0,0 +1,24 @@
+0x0000000000001060: main at /object/testfiles/dwarf/base.cpp:26
+0x0000000000001068: main at /object/testfiles/dwarf/base.cpp:26
+0x000000000000106a: main at /object/testfiles/dwarf/base.cpp:26
+0x000000000000107a: main at /object/testfiles/dwarf/base.cpp:28
+0x000000000000107f: main at /object/testfiles/dwarf/base.cpp:28
+0x0000000000001084: main at /object/testfiles/dwarf/base.cpp:30
+0x0000000000001190: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:12
+0x0000000000001194: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x00000000000011b0: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b3: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011b7: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x00000000000011bb: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x00000000000011c0: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:16
+0x00000000000011d0: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:19
+0x00000000000011d4: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:20
+0x0000000000001200: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x0000000000001203: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x0000000000001207: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x000000000000120b: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x0000000000001230: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x0000000000001233: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x0000000000001237: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+0x000000000000123b: _ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+0x0000000000001240: _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-aps b/testoutput/flags/base-aps
new file mode 100644
index 0000000..ede61cf
--- /dev/null
+++ b/testoutput/flags/base-aps
@@ -0,0 +1,24 @@
+0x0000000000001060: base.cpp:26
+0x0000000000001068: base.cpp:26
+0x000000000000106a: base.cpp:26
+0x000000000000107a: base.cpp:28
+0x000000000000107f: base.cpp:28
+0x0000000000001084: base.cpp:30
+0x0000000000001190: base.cpp:12
+0x0000000000001194: base.cpp:14
+0x00000000000011b0: base.cpp:15
+0x00000000000011b3: base.cpp:15
+0x00000000000011b7: base.cpp:15
+0x00000000000011bb: base.cpp:14
+0x00000000000011c0: base.cpp:16
+0x00000000000011d0: base.cpp:19
+0x00000000000011d4: base.cpp:20
+0x0000000000001200: base.cpp:15
+0x0000000000001203: base.cpp:15
+0x0000000000001207: base.cpp:15
+0x000000000000120b: base.cpp:14
+0x0000000000001230: base.cpp:15
+0x0000000000001233: base.cpp:15
+0x0000000000001237: base.cpp:15
+0x000000000000123b: base.cpp:14
+0x0000000000001240: base.cpp:24
diff --git a/testoutput/flags/base-apsf b/testoutput/flags/base-apsf
new file mode 100644
index 0000000..15880e1
--- /dev/null
+++ b/testoutput/flags/base-apsf
@@ -0,0 +1,24 @@
+0x0000000000001060: main at base.cpp:26
+0x0000000000001068: main at base.cpp:26
+0x000000000000106a: main at base.cpp:26
+0x000000000000107a: main at base.cpp:28
+0x000000000000107f: main at base.cpp:28
+0x0000000000001084: main at base.cpp:30
+0x0000000000001190: _ZN3Foo3barEPKc at base.cpp:12
+0x0000000000001194: _ZN3Foo3barEPKc at base.cpp:14
+0x00000000000011b0: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011b3: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011b7: _ZN3Foo3barEPKc at base.cpp:15
+0x00000000000011bb: _ZN3Foo3barEPKc at base.cpp:14
+0x00000000000011c0: _ZN3Foo3barEPKc at base.cpp:16
+0x00000000000011d0: _ZN3Foo3fooEi at base.cpp:19
+0x00000000000011d4: _ZN3Foo3fooEi at base.cpp:20
+0x0000000000001200: _ZN3Foo3barEPKc at base.cpp:15
+0x0000000000001203: _ZN3Foo3barEPKc at base.cpp:15
+0x0000000000001207: _ZN3Foo3barEPKc at base.cpp:15
+0x000000000000120b: _ZN3Foo3barEPKc at base.cpp:14
+0x0000000000001230: _ZN3Foo3barEPKc at base.cpp:15
+0x0000000000001233: _ZN3Foo3barEPKc at base.cpp:15
+0x0000000000001237: _ZN3Foo3barEPKc at base.cpp:15
+0x000000000000123b: _ZN3Foo3barEPKc at base.cpp:14
+0x0000000000001240: _ZN3Foo3fooEi at base.cpp:24
diff --git a/testoutput/flags/base-as b/testoutput/flags/base-as
new file mode 100644
index 0000000..21e07a1
--- /dev/null
+++ b/testoutput/flags/base-as
@@ -0,0 +1,48 @@
+0x0000000000001060
+base.cpp:26
+0x0000000000001068
+base.cpp:26
+0x000000000000106a
+base.cpp:26
+0x000000000000107a
+base.cpp:28
+0x000000000000107f
+base.cpp:28
+0x0000000000001084
+base.cpp:30
+0x0000000000001190
+base.cpp:12
+0x0000000000001194
+base.cpp:14
+0x00000000000011b0
+base.cpp:15
+0x00000000000011b3
+base.cpp:15
+0x00000000000011b7
+base.cpp:15
+0x00000000000011bb
+base.cpp:14
+0x00000000000011c0
+base.cpp:16
+0x00000000000011d0
+base.cpp:19
+0x00000000000011d4
+base.cpp:20
+0x0000000000001200
+base.cpp:15
+0x0000000000001203
+base.cpp:15
+0x0000000000001207
+base.cpp:15
+0x000000000000120b
+base.cpp:14
+0x0000000000001230
+base.cpp:15
+0x0000000000001233
+base.cpp:15
+0x0000000000001237
+base.cpp:15
+0x000000000000123b
+base.cpp:14
+0x0000000000001240
+base.cpp:24
diff --git a/testoutput/flags/base-asf b/testoutput/flags/base-asf
new file mode 100644
index 0000000..817c2ba
--- /dev/null
+++ b/testoutput/flags/base-asf
@@ -0,0 +1,72 @@
+0x0000000000001060
+main
+base.cpp:26
+0x0000000000001068
+main
+base.cpp:26
+0x000000000000106a
+main
+base.cpp:26
+0x000000000000107a
+main
+base.cpp:28
+0x000000000000107f
+main
+base.cpp:28
+0x0000000000001084
+main
+base.cpp:30
+0x0000000000001190
+_ZN3Foo3barEPKc
+base.cpp:12
+0x0000000000001194
+_ZN3Foo3barEPKc
+base.cpp:14
+0x00000000000011b0
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011b3
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011b7
+_ZN3Foo3barEPKc
+base.cpp:15
+0x00000000000011bb
+_ZN3Foo3barEPKc
+base.cpp:14
+0x00000000000011c0
+_ZN3Foo3barEPKc
+base.cpp:16
+0x00000000000011d0
+_ZN3Foo3fooEi
+base.cpp:19
+0x00000000000011d4
+_ZN3Foo3fooEi
+base.cpp:20
+0x0000000000001200
+_ZN3Foo3barEPKc
+base.cpp:15
+0x0000000000001203
+_ZN3Foo3barEPKc
+base.cpp:15
+0x0000000000001207
+_ZN3Foo3barEPKc
+base.cpp:15
+0x000000000000120b
+_ZN3Foo3barEPKc
+base.cpp:14
+0x0000000000001230
+_ZN3Foo3barEPKc
+base.cpp:15
+0x0000000000001233
+_ZN3Foo3barEPKc
+base.cpp:15
+0x0000000000001237
+_ZN3Foo3barEPKc
+base.cpp:15
+0x000000000000123b
+_ZN3Foo3barEPKc
+base.cpp:14
+0x0000000000001240
+_ZN3Foo3fooEi
+base.cpp:24
diff --git a/testoutput/flags/base-f b/testoutput/flags/base-f
new file mode 100644
index 0000000..c0856a7
--- /dev/null
+++ b/testoutput/flags/base-f
@@ -0,0 +1,48 @@
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:28
+main
+/object/testfiles/dwarf/base.cpp:28
+main
+/object/testfiles/dwarf/base.cpp:30
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:12
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:16
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:19
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:20
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-i b/testoutput/flags/base-i
new file mode 100644
index 0000000..385fcd7
--- /dev/null
+++ b/testoutput/flags/base-i
@@ -0,0 +1,32 @@
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:30
+/object/testfiles/dwarf/base.cpp:12
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:16
+/object/testfiles/dwarf/base.cpp:19
+/object/testfiles/dwarf/base.cpp:20
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-if b/testoutput/flags/base-if
new file mode 100644
index 0000000..37b4ef7
--- /dev/null
+++ b/testoutput/flags/base-if
@@ -0,0 +1,64 @@
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:26
+main
+/object/testfiles/dwarf/base.cpp:28
+main
+/object/testfiles/dwarf/base.cpp:28
+main
+/object/testfiles/dwarf/base.cpp:30
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:12
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:16
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:19
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:20
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc
+/object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3fooEi
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-ip b/testoutput/flags/base-ip
new file mode 100644
index 0000000..c63126c
--- /dev/null
+++ b/testoutput/flags/base-ip
@@ -0,0 +1,32 @@
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:30
+/object/testfiles/dwarf/base.cpp:12
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:16
+/object/testfiles/dwarf/base.cpp:19
+/object/testfiles/dwarf/base.cpp:20
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:14
+ (inlined by) /object/testfiles/dwarf/base.cpp:21
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:15
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:14
+ (inlined by) /object/testfiles/dwarf/base.cpp:23
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-ipf b/testoutput/flags/base-ipf
new file mode 100644
index 0000000..50185a8
--- /dev/null
+++ b/testoutput/flags/base-ipf
@@ -0,0 +1,32 @@
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:28
+main at /object/testfiles/dwarf/base.cpp:28
+main at /object/testfiles/dwarf/base.cpp:30
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:12
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:16
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:19
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:20
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:21
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:23
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-ips b/testoutput/flags/base-ips
new file mode 100644
index 0000000..467a05f
--- /dev/null
+++ b/testoutput/flags/base-ips
@@ -0,0 +1,32 @@
+base.cpp:26
+base.cpp:26
+base.cpp:26
+base.cpp:28
+base.cpp:28
+base.cpp:30
+base.cpp:12
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:16
+base.cpp:19
+base.cpp:20
+base.cpp:15
+ (inlined by) base.cpp:21
+base.cpp:15
+ (inlined by) base.cpp:21
+base.cpp:15
+ (inlined by) base.cpp:21
+base.cpp:14
+ (inlined by) base.cpp:21
+base.cpp:15
+ (inlined by) base.cpp:23
+base.cpp:15
+ (inlined by) base.cpp:23
+base.cpp:15
+ (inlined by) base.cpp:23
+base.cpp:14
+ (inlined by) base.cpp:23
+base.cpp:24
diff --git a/testoutput/flags/base-ipsf b/testoutput/flags/base-ipsf
new file mode 100644
index 0000000..b9c03db
--- /dev/null
+++ b/testoutput/flags/base-ipsf
@@ -0,0 +1,32 @@
+main at base.cpp:26
+main at base.cpp:26
+main at base.cpp:26
+main at base.cpp:28
+main at base.cpp:28
+main at base.cpp:30
+_ZN3Foo3barEPKc at base.cpp:12
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3barEPKc at base.cpp:16
+_ZN3Foo3fooEi at base.cpp:19
+_ZN3Foo3fooEi at base.cpp:20
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+_ZN3Foo3barEPKc at base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at base.cpp:21
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+_ZN3Foo3barEPKc at base.cpp:15
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+_ZN3Foo3barEPKc at base.cpp:14
+ (inlined by) _ZN3Foo3fooEi at base.cpp:23
+_ZN3Foo3fooEi at base.cpp:24
diff --git a/testoutput/flags/base-is b/testoutput/flags/base-is
new file mode 100644
index 0000000..8ac1fe3
--- /dev/null
+++ b/testoutput/flags/base-is
@@ -0,0 +1,32 @@
+base.cpp:26
+base.cpp:26
+base.cpp:26
+base.cpp:28
+base.cpp:28
+base.cpp:30
+base.cpp:12
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:16
+base.cpp:19
+base.cpp:20
+base.cpp:15
+base.cpp:21
+base.cpp:15
+base.cpp:21
+base.cpp:15
+base.cpp:21
+base.cpp:14
+base.cpp:21
+base.cpp:15
+base.cpp:23
+base.cpp:15
+base.cpp:23
+base.cpp:15
+base.cpp:23
+base.cpp:14
+base.cpp:23
+base.cpp:24
diff --git a/testoutput/flags/base-isf b/testoutput/flags/base-isf
new file mode 100644
index 0000000..306d4f5
--- /dev/null
+++ b/testoutput/flags/base-isf
@@ -0,0 +1,64 @@
+main
+base.cpp:26
+main
+base.cpp:26
+main
+base.cpp:26
+main
+base.cpp:28
+main
+base.cpp:28
+main
+base.cpp:30
+_ZN3Foo3barEPKc
+base.cpp:12
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3barEPKc
+base.cpp:16
+_ZN3Foo3fooEi
+base.cpp:19
+_ZN3Foo3fooEi
+base.cpp:20
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:21
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3fooEi
+base.cpp:21
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3fooEi
+base.cpp:23
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3fooEi
+base.cpp:23
+_ZN3Foo3fooEi
+base.cpp:24
diff --git a/testoutput/flags/base-p b/testoutput/flags/base-p
new file mode 100644
index 0000000..8ce91e1
--- /dev/null
+++ b/testoutput/flags/base-p
@@ -0,0 +1,24 @@
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:26
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:28
+/object/testfiles/dwarf/base.cpp:30
+/object/testfiles/dwarf/base.cpp:12
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:16
+/object/testfiles/dwarf/base.cpp:19
+/object/testfiles/dwarf/base.cpp:20
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:15
+/object/testfiles/dwarf/base.cpp:14
+/object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-pf b/testoutput/flags/base-pf
new file mode 100644
index 0000000..0a19824
--- /dev/null
+++ b/testoutput/flags/base-pf
@@ -0,0 +1,24 @@
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:26
+main at /object/testfiles/dwarf/base.cpp:28
+main at /object/testfiles/dwarf/base.cpp:28
+main at /object/testfiles/dwarf/base.cpp:30
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:12
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:16
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:19
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:20
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:15
+_ZN3Foo3barEPKc at /object/testfiles/dwarf/base.cpp:14
+_ZN3Foo3fooEi at /object/testfiles/dwarf/base.cpp:24
diff --git a/testoutput/flags/base-ps b/testoutput/flags/base-ps
new file mode 100644
index 0000000..c0de280
--- /dev/null
+++ b/testoutput/flags/base-ps
@@ -0,0 +1,24 @@
+base.cpp:26
+base.cpp:26
+base.cpp:26
+base.cpp:28
+base.cpp:28
+base.cpp:30
+base.cpp:12
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:16
+base.cpp:19
+base.cpp:20
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:24
diff --git a/testoutput/flags/base-psf b/testoutput/flags/base-psf
new file mode 100644
index 0000000..faf84ca
--- /dev/null
+++ b/testoutput/flags/base-psf
@@ -0,0 +1,24 @@
+main at base.cpp:26
+main at base.cpp:26
+main at base.cpp:26
+main at base.cpp:28
+main at base.cpp:28
+main at base.cpp:30
+_ZN3Foo3barEPKc at base.cpp:12
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3barEPKc at base.cpp:16
+_ZN3Foo3fooEi at base.cpp:19
+_ZN3Foo3fooEi at base.cpp:20
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:15
+_ZN3Foo3barEPKc at base.cpp:14
+_ZN3Foo3fooEi at base.cpp:24
diff --git a/testoutput/flags/base-s b/testoutput/flags/base-s
new file mode 100644
index 0000000..c0de280
--- /dev/null
+++ b/testoutput/flags/base-s
@@ -0,0 +1,24 @@
+base.cpp:26
+base.cpp:26
+base.cpp:26
+base.cpp:28
+base.cpp:28
+base.cpp:30
+base.cpp:12
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:16
+base.cpp:19
+base.cpp:20
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:15
+base.cpp:15
+base.cpp:15
+base.cpp:14
+base.cpp:24
diff --git a/testoutput/flags/base-sf b/testoutput/flags/base-sf
new file mode 100644
index 0000000..ba8e3b6
--- /dev/null
+++ b/testoutput/flags/base-sf
@@ -0,0 +1,48 @@
+main
+base.cpp:26
+main
+base.cpp:26
+main
+base.cpp:26
+main
+base.cpp:28
+main
+base.cpp:28
+main
+base.cpp:30
+_ZN3Foo3barEPKc
+base.cpp:12
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3barEPKc
+base.cpp:16
+_ZN3Foo3fooEi
+base.cpp:19
+_ZN3Foo3fooEi
+base.cpp:20
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:15
+_ZN3Foo3barEPKc
+base.cpp:14
+_ZN3Foo3fooEi
+base.cpp:24
diff --git a/tests/output_equivalence.rs b/tests/output_equivalence.rs
deleted file mode 100644
index 092a433..0000000
--- a/tests/output_equivalence.rs
+++ /dev/null
@@ -1,134 +0,0 @@
-use std::env;
-use std::ffi::OsStr;
-use std::path::Path;
-use std::process::Command;
-
-use backtrace::Backtrace;
-use findshlibs::{IterationControl, SharedLibrary, TargetSharedLibrary};
-use libtest_mimic::{Arguments, Failed, Trial};
-
-#[inline(never)]
-fn make_trace() -> Vec<String> {
-    fn foo() -> Backtrace {
-        bar()
-    }
-    #[inline(never)]
-    fn bar() -> Backtrace {
-        baz()
-    }
-    #[inline(always)]
-    fn baz() -> Backtrace {
-        Backtrace::new_unresolved()
-    }
-
-    let mut base_addr = None;
-    TargetSharedLibrary::each(|lib| {
-        base_addr = Some(lib.virtual_memory_bias().0 as isize);
-        IterationControl::Break
-    });
-    let addrfix = -base_addr.unwrap();
-
-    let trace = foo();
-    trace
-        .frames()
-        .iter()
-        .take(5)
-        .map(|x| format!("{:p}", (x.ip() as *const u8).wrapping_offset(addrfix)))
-        .collect()
-}
-
-fn run_cmd<P: AsRef<OsStr>>(exe: P, me: &Path, flags: Option<&str>, trace: &str) -> String {
-    let mut cmd = Command::new(exe);
-    cmd.env("LC_ALL", "C"); // GNU addr2line is localized, we aren't
-    cmd.env("RUST_BACKTRACE", "1"); // if a child crashes, we want to know why
-
-    if let Some(flags) = flags {
-        cmd.arg(flags);
-    }
-    cmd.arg("--exe").arg(me).arg(trace);
-
-    let output = cmd.output().unwrap();
-
-    assert!(output.status.success());
-    String::from_utf8(output.stdout).unwrap()
-}
-
-fn run_test(flags: Option<&str>) -> Result<(), Failed> {
-    let me = env::current_exe().unwrap();
-    let mut exe = me.clone();
-    assert!(exe.pop());
-    if exe.file_name().unwrap().to_str().unwrap() == "deps" {
-        assert!(exe.pop());
-    }
-    exe.push("addr2line");
-
-    assert!(exe.is_file());
-
-    let trace = make_trace();
-
-    // HACK: GNU addr2line has a bug where looking up multiple addresses can cause the second
-    // lookup to fail. Workaround by doing one address at a time.
-    for addr in &trace {
-        let theirs = run_cmd("addr2line", &me, flags, addr);
-        let ours = run_cmd(&exe, &me, flags, addr);
-
-        // HACK: GNU addr2line does not tidy up paths properly, causing double slashes to be printed.
-        // We consider our behavior to be correct, so we fix their output to match ours.
-        let theirs = theirs.replace("//", "/");
-
-        assert!(
-            theirs == ours,
-            "Output not equivalent:
-
-$ addr2line {0} --exe {1} {2}
-{4}
-$ {3} {0} --exe {1} {2}
-{5}
-
-
-",
-            flags.unwrap_or(""),
-            me.display(),
-            trace.join(" "),
-            exe.display(),
-            theirs,
-            ours
-        );
-    }
-    Ok(())
-}
-
-static FLAGS: &str = "aipsf";
-
-fn make_tests() -> Vec<Trial> {
-    (0..(1 << FLAGS.len()))
-        .map(|bits| {
-            if bits == 0 {
-                None
-            } else {
-                let mut param = String::new();
-                param.push('-');
-                for (i, flag) in FLAGS.chars().enumerate() {
-                    if (bits & (1 << i)) != 0 {
-                        param.push(flag);
-                    }
-                }
-                Some(param)
-            }
-        })
-        .map(|param| {
-            Trial::test(
-                format!("addr2line {}", param.as_deref().unwrap_or_default()),
-                move || run_test(param.as_deref()),
-            )
-        })
-        .collect()
-}
-
-fn main() {
-    if !cfg!(target_os = "linux") {
-        return;
-    }
-    let args = Arguments::from_args();
-    libtest_mimic::run(&args, make_tests()).exit();
-}
diff --git a/tests/testinput.rs b/tests/testinput.rs
index 6c33f5b..09b8191 100644
--- a/tests/testinput.rs
+++ b/tests/testinput.rs
@@ -33,15 +33,32 @@ fn make_tests() -> Vec<Trial> {
             } else if file_type.is_file() {
                 tests.push(Trial::test(
                     format!("addr2line -e {}", in_path.display()),
-                    move || run_test(in_path, out_path),
+                    move || run_test(in_path, out_path, "-afi"),
                 ));
             }
         }
     }
+
+    let in_path = PathBuf::from("testinput/dwarf/base-gcc-g2");
+    const FLAGS: &str = "aipsf";
+    for bits in 1..(1 << FLAGS.len()) {
+        let mut flags = String::new();
+        flags.push('-');
+        for (i, flag) in FLAGS.chars().enumerate() {
+            if (bits & (1 << i)) != 0 {
+                flags.push(flag);
+            }
+        }
+        let in_path = in_path.clone();
+        let out_path = PathBuf::from(format!("testoutput/flags/base{}", flags));
+        tests.push(Trial::test(format!("addr2line {}", flags), move || {
+            run_test(in_path, out_path, &flags)
+        }));
+    }
     tests
 }
 
-fn run_test(in_path: PathBuf, out_path: PathBuf) -> Result<(), Failed> {
+fn run_test(in_path: PathBuf, out_path: PathBuf, flags: &str) -> Result<(), Failed> {
     let mut exe = env::current_exe().unwrap();
     assert!(exe.pop());
     if exe.file_name().unwrap().to_str().unwrap() == "deps" {
@@ -52,7 +69,7 @@ fn run_test(in_path: PathBuf, out_path: PathBuf) -> Result<(), Failed> {
 
     let mut cmd = Command::new(exe);
     cmd.env("RUST_BACKTRACE", "1");
-    cmd.arg("--exe").arg(in_path).arg("--all").arg("-afi");
+    cmd.arg("--exe").arg(in_path).arg("--all").arg(flags);
 
     let output = cmd.output().unwrap();
     assert!(output.status.success());