debugedit: Simplify and extend .debug_line tests
authorMark Wielaard <mark@klomp.org>
Fri, 24 Mar 2023 23:49:36 +0000 (00:49 +0100)
committerMark Wielaard <mark@klomp.org>
Fri, 21 Apr 2023 12:43:56 +0000 (14:43 +0200)
The debugedit .debug_line tests were only checking the directory
table, skipping the file name table assuming those would not be
include a directory element. But some compilers output the file
names as absolute paths (so ignoring the directory table entries,
which is slightly inefficient). Check both tables now using sed
to replace the directory strings.

Signed-off-by: Mark Wielaard <mark@klomp.org>
tests/debugedit.at

index 873e525d070964bb844979835c0da6599d20a5ff..90e8ed36f335cfa28e61c1cfecbf28ab4233520e 100644 (file)
@@ -468,18 +468,17 @@ AT_SETUP([debugedit .debug_line objects DWARF4])
 AT_KEYWORDS([debuginfo] [debugedit])
 DEBUGEDIT_SETUP([-gdwarf-4])
 
-AT_DATA([expout],
-[/foo/bar/baz
-/foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line foo.o subdir_bar/bar.o baz.o \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[1234]]" \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foo.o]])
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./subdir_bar/bar.o]])
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./baz.o]])
 AT_CHECK([[
 $READELF --debug-dump=line foo.o subdir_bar/bar.o baz.o \
-        | grep -A3 "The Directory Table" | grep "^  [123]" \
-       | grep /foo/ | cut -c5- | sort
+        | grep -E -A5 "The (Directory|File Name) Table" | grep "^  [1234]"
 ]],[0],[expout])
 
 AT_CLEANUP
@@ -494,19 +493,18 @@ AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"])
 AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"])
 DEBUGEDIT_SETUP([-gdwarf-5])
 
-AT_DATA([expout],
-[foo/bar/baz
-foo/bar/baz/subdir_bar
-foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line foo.o subdir_bar/bar.o baz.o \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[01234]]" | cut -f3 -d: \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foo.o]])
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./subdir_bar/bar.o]])
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./baz.o]])
 AT_CHECK([[
 $READELF --debug-dump=line foo.o subdir_bar/bar.o baz.o \
-       | grep -A5 "The Directory Table" | grep "^  [0123]" \
-       | cut -f2- -d/ | grep ^foo/ | sort -u
+       | grep -E -A5 "The (Directory|File Name) Table" \
+       | grep "^  [01234]" | cut -f3 -d:
 ]],[0],[expout])
 
 AT_CLEANUP
@@ -519,16 +517,16 @@ AT_SETUP([debugedit .debug_line partial DWARF4])
 AT_KEYWORDS([debuginfo] [debugedit])
 DEBUGEDIT_SETUP([-gdwarf-4])
 
-AT_DATA([expout],
-[/foo/bar/baz
-/foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line ./foobarbaz.part.o \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[1234]]" \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.part.o]])
 AT_CHECK([[
 $READELF --debug-dump=line ./foobarbaz.part.o \
-        | grep -A3 "The Directory Table" | grep "^  [123]" \
-       | grep /foo/ | cut -c5- | sort
+        | grep -E -A5 "The (Directory|File Name) Table" \
+       | grep "^  [1234]"
 ]],[0],[expout])
 
 AT_CLEANUP
@@ -543,17 +541,16 @@ AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"])
 AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"])
 DEBUGEDIT_SETUP([-gdwarf-5])
 
-AT_DATA([expout],
-[foo/bar/baz
-foo/bar/baz/subdir_bar
-foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line ./foobarbaz.part.o \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[01234]]" | cut -f3 -d: \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.part.o]])
 AT_CHECK([[
 $READELF --debug-dump=line ./foobarbaz.part.o \
-       | grep -A5 "The Directory Table" | grep "^  [0123]" \
-       | cut -f2- -d/ | grep ^foo/ | sort -u
+       | grep -E -A5 "The (Directory|File Name) Table" \
+       | grep "^  [01234]" | cut -f3 -d:
 ]],[0],[expout])
 
 AT_CLEANUP
@@ -566,16 +563,16 @@ AT_SETUP([debugedit .debug_line exe DWARF4])
 AT_KEYWORDS([debuginfo] [debugedit])
 DEBUGEDIT_SETUP([-gdwarf-4])
 
-AT_DATA([expout],
-[/foo/bar/baz
-/foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line ./foobarbaz.exe \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[1234]]" \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.exe]])
 AT_CHECK([[
 $READELF --debug-dump=line ./foobarbaz.exe \
-        | grep -A3 "The Directory Table" | grep "^  [123]" \
-       | grep /foo/ | cut -c5- | sort
+        | grep -E -A5 "The (Directory|File Name) Table" \
+       | grep "^  [1234]"
 ]],[0],[expout])
 
 AT_CLEANUP
@@ -590,17 +587,16 @@ AT_SKIP_IF([test "$GDWARF_5_FLAG" = "no"])
 AT_SKIP_IF([test "$DWARF_5_DEBUGLINE" = "no"])
 DEBUGEDIT_SETUP([-gdwarf-5])
 
-AT_DATA([expout],
-[foo/bar/baz
-foo/bar/baz/subdir_bar
-foo/bar/baz/subdir_headers
-])
+$READELF --debug-dump=line ./foobarbaz.exe \
+        | grep -E -A5 "The (Directory|File Name) Table" \
+        | grep "^  [[01234]]" | cut -f3 -d: \
+        | sed -e "s@$(pwd)@/foo/bar/baz@" | tee expout
 
 AT_CHECK([[debugedit -b $(pwd) -d /foo/bar/baz ./foobarbaz.exe]])
 AT_CHECK([[
 $READELF --debug-dump=line ./foobarbaz.exe \
-       | grep -A5 "The Directory Table" | grep "^  [0123]" \
-       | cut -f2- -d/ | grep ^foo/ | sort -u
+       | grep -E -A5 "The (Directory|File Name) Table" \
+       | grep "^  [01234]" | cut -f3 -d:
 ]],[0],[expout])
 
 AT_CLEANUP
This page took 0.064683 seconds and 5 git commands to generate.