When printing section headers, also include a key to what each flag
is at the end of the section header output.

Signed-off-by: Samuel Zeter <samuelze...@gmail.com>
--- Updates tests to fix issues from the first patch.
 src/readelf.c                  | 11 ++++++
 tests/run-copyadd-sections.sh  |  4 +--
 tests/run-large-elf-file.sh    |  2 +-
 tests/run-readelf-z.sh         | 32 +++++++++++++++++
 tests/run-retain.sh            |  4 +++
 tests/run-strip-remove-keep.sh | 64 ++++++++++++++++++++++++++++++++++
 tests/test-copymany-subr.sh    |  2 +-
 7 files changed, 115 insertions(+), 4 deletions(-)

diff --git a/src/readelf.c b/src/readelf.c
index 12d85472..f9c1c742 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -341,6 +341,7 @@ static void print_strings (Ebl *ebl);
 static void dump_archive_index (Elf *, const char *);
 static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size,
                              Dwarf_Addr address, Dwarf_Addr raw);
+static void print_flag_info(void);
 
 enum dyn_idx
 {
@@ -1406,9 +1407,19 @@ There are %zd section headers, starting at offset %#" 
PRIx64 ":\n\
        }
     }
 
+  print_flag_info();
   fputc ('\n', stdout);
 }
 
+/* Print flag information.  */
+static void
+print_flag_info (void)
+{
+       puts ("Key to Flags:");
+       puts ("  W (write), A (alloc), X (execute), M (merge), S (strings), I 
(info),");
+       puts ("  L (link order), N (extra OS processing required), G (group), T 
(TLS),");
+       puts ("  C (compressed), O (ordered), R (GNU retain), E (exclude)");
+}
 
 /* Print the program header.  */
 static void
diff --git a/tests/run-copyadd-sections.sh b/tests/run-copyadd-sections.sh
index bc20f6ee..f8304926 100755
--- a/tests/run-copyadd-sections.sh
+++ b/tests/run-copyadd-sections.sh
@@ -33,7 +33,7 @@ test_copy_and_add ()
   # Can we add a section (in-place)?
   testrun ${abs_builddir}/addsections 3 ${out_file}
   testrun ${abs_top_builddir}/src/readelf -S ${out_file} > readelf.out
-  nr=$(grep '.extra' readelf.out | wc -l)
+  nr=$(grep '\.extra' readelf.out | wc -l)
   if test ${nr} != 3; then
     # Show what went wrong
     testrun ${abs_top_builddir}/src/readelf -S ${out_file}
@@ -49,7 +49,7 @@ test_copy_and_add ()
   # because mremap cannot extend too much.
   testrun ${abs_builddir}/addsections --mmap 1 ${out_file_mmap}
   testrun ${abs_top_builddir}/src/readelf -S ${out_file_mmap} > readelf.out
-  nr=$(grep '.extra' readelf.out | wc -l)
+  nr=$(grep '\.extra' readelf.out | wc -l)
   if test ${nr} != 1; then
     # Show what went wrong
     testrun ${abs_top_builddir}/src/readelf -S ${out_file_mmap}
diff --git a/tests/run-large-elf-file.sh b/tests/run-large-elf-file.sh
index 8108cb4b..249ecd99 100755
--- a/tests/run-large-elf-file.sh
+++ b/tests/run-large-elf-file.sh
@@ -84,7 +84,7 @@ test_file ()
   echo "addsections 2 ${in_file} 2147483648"
   testrun ${abs_builddir}/addsections 2 ${in_file} 2147483648
   testrun ${abs_top_builddir}/src/readelf -S ${in_file} > ${readelf_out}
-  nr=$(grep '.extra' ${readelf_out} | wc -l)
+  nr=$(grep '\.extra' ${readelf_out} | wc -l)
   if test ${nr} != 2; then
     # Show what went wrong
     cat ${readelf_out}
diff --git a/tests/run-readelf-z.sh b/tests/run-readelf-z.sh
index 6dbd2f14..859d801e 100755
--- a/tests/run-readelf-z.sh
+++ b/tests/run-readelf-z.sh
@@ -38,6 +38,10 @@ Section Headers:
 [ 6] .shstrtab            STRTAB       0000000000000000 00000384 00000059  0   
     0   0  1
 [ 7] .symtab              SYMTAB       0000000000000000 000000a8 00000168 24   
     8   8  8
 [ 8] .strtab              STRTAB       0000000000000000 00000210 0000004b  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -61,6 +65,10 @@ Section Headers:
 [ 7] .shstrtab            STRTAB       0000000000000000 000003d0 00000063  0   
     0   0  1
 [ 8] .symtab              SYMTAB       0000000000000000 000000f0 00000180 24   
     9   9  8
 [ 9] .strtab              STRTAB       0000000000000000 00000270 00000044  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -83,6 +91,10 @@ Section Headers:
 [ 6] .shstrtab            STRTAB       0000000000000000 000003a8 00000056  0   
     0   0  1
 [ 7] .symtab              SYMTAB       0000000000000000 000000a8 00000168 24   
     8   8  8
 [ 8] .strtab              STRTAB       0000000000000000 00000210 0000004b  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -106,6 +118,10 @@ Section Headers:
 [ 7] .shstrtab            STRTAB       0000000000000000 000003f4 00000060  0   
     0   0  1
 [ 8] .symtab              SYMTAB       0000000000000000 000000f0 00000180 24   
     9   9  8
 [ 9] .strtab              STRTAB       0000000000000000 00000270 00000044  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -128,6 +144,10 @@ Section Headers:
 [ 6] .shstrtab            STRTAB       00000000 0002e2 000059  0        0   0  
1
 [ 7] .symtab              SYMTAB       00000000 000080 0000f0 16        8   8  
4
 [ 8] .strtab              STRTAB       00000000 000170 00004b  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -151,6 +171,10 @@ Section Headers:
 [ 7] .shstrtab            STRTAB       00000000 00032c 000063  0        0   0  
1
 [ 8] .symtab              SYMTAB       00000000 0000c8 000110 16        9   9  
4
 [ 9] .strtab              STRTAB       00000000 0001d8 000045  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -173,6 +197,10 @@ Section Headers:
 [ 6] .shstrtab            STRTAB       00000000 0002e2 000056  0        0   0  
1
 [ 7] .symtab              SYMTAB       00000000 000080 0000f0 16        8   8  
4
 [ 8] .strtab              STRTAB       00000000 000170 00004b  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -196,6 +224,10 @@ Section Headers:
 [ 7] .shstrtab            STRTAB       00000000 00032c 000060  0        0   0  
1
 [ 8] .symtab              SYMTAB       00000000 0000c8 000110 16        9   9  
4
 [ 9] .strtab              STRTAB       00000000 0001d8 000045  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
diff --git a/tests/run-retain.sh b/tests/run-retain.sh
index c5376de4..ac39a65b 100755
--- a/tests/run-retain.sh
+++ b/tests/run-retain.sh
@@ -38,6 +38,10 @@ Section Headers:
 [ 6] .symtab              SYMTAB       0000000000000000 00000078 00000090 24   
     7   6  8
 [ 7] .strtab              STRTAB       0000000000000000 00000108 00000001  0   
     0   0  1
 [ 8] .shstrtab            STRTAB       0000000000000000 00000109 0000004c  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
diff --git a/tests/run-strip-remove-keep.sh b/tests/run-strip-remove-keep.sh
index 92647fa7..c2bd63f4 100755
--- a/tests/run-strip-remove-keep.sh
+++ b/tests/run-strip-remove-keep.sh
@@ -63,6 +63,10 @@ Section Headers:
 [24] .strtab              STRTAB       00000000 0007d8 000235  0        0   0  
1
 [25] .gnu_debuglink       PROGBITS     00000000 000a10 000014  0        0   0  
4
 [26] .shstrtab            STRTAB       00000000 000a24 0000d1  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -106,6 +110,10 @@ Section Headers:
 [32] .shstrtab            STRTAB       00000000 003d36 00012e  0        0   0  
1
 [33] .symtab              SYMTAB       00000000 003e64 0005a0 16       34  68  
4
 [34] .strtab              STRTAB       00000000 004404 000235  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -150,6 +158,10 @@ Section Headers:
 [25] .strtab              STRTAB       00000000 000ce8 000235  0        0   0  
1
 [26] .gnu_debuglink       PROGBITS     00000000 000f20 000014  0        0   0  
4
 [27] .shstrtab            STRTAB       00000000 000f34 0000d9  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -193,6 +205,10 @@ Section Headers:
 [32] .shstrtab            STRTAB       00000000 003d36 00012e  0        0   0  
1
 [33] .symtab              NOBITS       00000000 003e64 0005a0 16       34  68  
4
 [34] .strtab              NOBITS       00000000 003e64 000235  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -238,6 +254,10 @@ Section Headers:
 [24] .strtab              STRTAB       0000000000000000 0000085c 00000175  0   
     0   0  1
 [25] .gnu_debuglink       PROGBITS     0000000000000000 000009d4 00000014  0   
     0   0  4
 [26] .shstrtab            STRTAB       0000000000000000 000009e8 000000ee  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -273,6 +293,10 @@ Section Headers:
 [24] .shstrtab            STRTAB       0000000000000000 000001c0 000000e7  0   
     0   0  1
 [25] .symtab              SYMTAB       0000000000000000 000002a8 000004f8 24   
    26  44  8
 [26] .strtab              STRTAB       0000000000000000 000007a0 00000175  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -317,6 +341,10 @@ Section Headers:
 [24] .strtab              STRTAB       0000000000000000 00000d10 00000175  0   
     0   0  1
 [25] .gnu_debuglink       PROGBITS     0000000000000000 00000e88 00000014  0   
     0   0  4
 [26] .shstrtab            STRTAB       0000000000000000 00000e9c 000000ed  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -352,6 +380,10 @@ Section Headers:
 [24] .shstrtab            STRTAB       0000000000000000 000001ec 000000e7  0   
     0   0  1
 [25] .symtab              NOBITS       0000000000000000 000002d8 000004f8 24   
    26  44  8
 [26] .strtab              NOBITS       0000000000000000 000002d8 00000175  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -396,6 +428,10 @@ Section Headers:
 [25] .strtab              STRTAB       00000000 0007d8 000235  0        0   0  
1
 [26] .gnu_debuglink       PROGBITS     00000000 000a10 000014  0        0   0  
4
 [27] .shstrtab            STRTAB       00000000 000a24 0000d7  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -439,6 +475,10 @@ Section Headers:
 [32] .shstrtab            STRTAB       00000000 003d36 00012e  0        0   0  
1
 [33] .symtab              SYMTAB       00000000 003e64 0005a0 16       34  68  
4
 [34] .strtab              STRTAB       00000000 004404 000235  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -484,6 +524,10 @@ Section Headers:
 [26] .note                NOTE         00000000 00278c 0000a0  0        0   0  
1
 [27] .gnu_debuglink       PROGBITS     00000000 00282c 000014  0        0   0  
4
 [28] .shstrtab            STRTAB       00000000 002840 0000de  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -527,6 +571,10 @@ Section Headers:
 [32] .shstrtab            STRTAB       00000000 001ce2 00012e  0        0   0  
1
 [33] .symtab              SYMTAB       00000000 001e10 0005a0 16       34  68  
4
 [34] .strtab              STRTAB       00000000 0023b0 000235  0        0   0  
1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -570,6 +618,10 @@ Section Headers:
 [24] .strtab              STRTAB       0000000000000000 0000085c 00000175  0   
     0   0  1
 [25] .gnu_debuglink       PROGBITS     0000000000000000 000009d4 00000014  0   
     0   0  4
 [26] .shstrtab            STRTAB       0000000000000000 000009e8 000000ee  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -605,6 +657,10 @@ Section Headers:
 [24] .shstrtab            STRTAB       0000000000000000 000001c0 000000e7  0   
     0   0  1
 [25] .symtab              SYMTAB       0000000000000000 000002a8 000004f8 24   
    26  44  8
 [26] .strtab              STRTAB       0000000000000000 000007a0 00000175  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
@@ -647,6 +703,10 @@ Section Headers:
 [23] .comment             PROGBITS     0000000000000000 00000830 0000002c  1 
MS     0   0  1
 [24] .gnu_debuglink       PROGBITS     0000000000000000 0000085c 00000014  0   
     0   0  4
 [25] .shstrtab            STRTAB       0000000000000000 00000870 000000e6  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 echo readelf testfile.debug
@@ -682,6 +742,10 @@ Section Headers:
 [24] .shstrtab            STRTAB       0000000000000000 000001c0 000000e7  0   
     0   0  1
 [25] .symtab              SYMTAB       0000000000000000 000002a8 000004f8 24   
    26  44  8
 [26] .strtab              STRTAB       0000000000000000 000007a0 00000175  0   
     0   0  1
+Key to Flags:
+  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
+  L (link order), N (extra OS processing required), G (group), T (TLS),
+  C (compressed), O (ordered), R (GNU retain), E (exclude)
 
 EOF
 
diff --git a/tests/test-copymany-subr.sh b/tests/test-copymany-subr.sh
index 054103b4..ed39a69b 100755
--- a/tests/test-copymany-subr.sh
+++ b/tests/test-copymany-subr.sh
@@ -37,7 +37,7 @@ test_copy_and_add ()
   # Can we add a section (in-place)?
   testrun ${abs_builddir}/addsections 32768 ${out_file}
   testrun ${abs_top_builddir}/src/readelf -S ${out_file} > readelf.out
-  nr=$(grep '.extra' readelf.out | wc -l)
+  nr=$(grep '\.extra' readelf.out | wc -l)
   # We try twice...
   if test ${nr} != 32768 -a ${nr} != 65536; then
     # Show what went wrong
-- 
2.49.0

Reply via email to