diff --git a/ChangeLog b/ChangeLog
index 53a1d292..eed54421 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2023-02-23  Guillermo E. Martinez  <guillermo.e.martinez@oracle.com>
+
+	* libebl/eblsectionstripp.c (ebl_section_strip_p): Use
+	remove_ctf argument.
+	(SECTION_STRIP_P): Likewise.
+	* libebl/libebl.h (ebl_section_strip_p): Likewise.
+	* libelf/elf-knowledge.h (SECTION_STRIP_P): Update macro
+	definition to use remove_ctf to determine whether .ctf
+	section is stripped out.
+	* libelf/elf32_checksum.c (elfw2): Use false value for
+	remove_ctf parameter.
+	* src/elfcmp.c (main): Likewise.
+	* src/strip.c (options): Add --remove-ctf option set by
+	remove_ctf variable.
+	(set_remove_special_section_opt): Add new function.
+	(erratic_special_section_opt): Likewise.
+	(parse_opt): Parse new --remove-ctf option.
+	(handle_elf): Adjust .comment and use remove_ctf argument.
+	* tests/Makefile.am (TEST): Add run-strip-remove-keep-ctf.sh
+	and testfile-ctf.bz2.
+	* tests/run-strip-remove-keep-ctf.sh: Add new testcase.
+	* tests/testfile-ctf.bz2: Add new test harness.
+
 2023-02-23  Mark Wielaard  <mark@klomp.org>
 
 	* NEWS: Add old version code names.
diff --git a/libebl/eblsectionstripp.c b/libebl/eblsectionstripp.c
index a5624ffe..f26cc170 100644
--- a/libebl/eblsectionstripp.c
+++ b/libebl/eblsectionstripp.c
@@ -37,7 +37,7 @@
 bool
 ebl_section_strip_p (Ebl *ebl, const GElf_Shdr *shdr,
 		     const char *name, bool remove_comment,
-		     bool only_remove_debug)
+		     bool only_remove_debug, bool remove_ctf)
 {
   /* If only debug information should be removed check the name.  There
      is unfortunately no other way.  */
@@ -66,5 +66,5 @@ ebl_section_strip_p (Ebl *ebl, const GElf_Shdr *shdr,
       return false;
     }
 
-  return SECTION_STRIP_P (shdr, name, remove_comment);
+  return SECTION_STRIP_P (shdr, name, remove_comment, remove_ctf);
 }
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 731001d3..067b769e 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -205,7 +205,7 @@ extern bool ebl_relative_reloc_p (Ebl *ebl, int reloc);
 /* Check whether section should be stripped.  */
 extern bool ebl_section_strip_p (Ebl *ebl,
 				 const GElf_Shdr *shdr, const char *name,
-				 bool remove_comment, bool only_remove_debug);
+				 bool remove_comment, bool only_remove_debug, bool remove_ctf);
 
 /* Check if backend uses a bss PLT in this file.  */
 extern bool ebl_bss_plt_p (Ebl *ebl);
diff --git a/libelf/elf-knowledge.h b/libelf/elf-knowledge.h
index 6e005fa5..903a0f4f 100644
--- a/libelf/elf-knowledge.h
+++ b/libelf/elf-knowledge.h
@@ -34,7 +34,7 @@
 
 
 /* Test whether a section can be stripped or not.  */
-#define SECTION_STRIP_P(shdr, name, remove_comment) \
+#define SECTION_STRIP_P(shdr, name, remove_comment, remove_ctf) \
   /* Sections which are allocated are not removed.  */			      \
   (((shdr)->sh_flags & SHF_ALLOC) == 0					      \
    /* We never remove .note sections.  */				      \
@@ -45,7 +45,10 @@
 	   && strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) != 0\
 	   /* We remove .comment sections only if explicitly told to do so. */\
 	   && (remove_comment						      \
-	       || strcmp (name, ".comment") != 0))))
+	       || strcmp (name, ".comment") != 0)  \
+	   /* We remove .ctf sections only if explicitly told to do so. */\
+	   && (remove_ctf						      \
+	       || strcmp (name, ".ctf") != 0))))
 
 
 /* Test whether `sh_info' field in section header contains a section
diff --git a/libelf/elf32_checksum.c b/libelf/elf32_checksum.c
index a47b307d..8482eb07 100644
--- a/libelf/elf32_checksum.c
+++ b/libelf/elf32_checksum.c
@@ -104,7 +104,7 @@ elfw2(LIBELFBITS,checksum) (Elf *elf)
 
       if (SECTION_STRIP_P (shdr,
 			   INTUSE(elf_strptr) (elf, shstrndx, shdr->sh_name),
-			   true))
+			   true, false))
 	/* The section can be stripped.  Don't use it.  */
 	continue;
 
diff --git a/src/elfcmp.c b/src/elfcmp.c
index fba67e02..66d1b4b9 100644
--- a/src/elfcmp.c
+++ b/src/elfcmp.c
@@ -269,7 +269,7 @@ main (int argc, char *argv[])
 	    sname1 = elf_strptr (elf1, shstrndx1, shdr1->sh_name);
 	}
       while (scn1 != NULL && shdr1 != NULL
-	     && ebl_section_strip_p (ebl1, shdr1, sname1, true, false));
+	     && ebl_section_strip_p (ebl1, shdr1, sname1, true, false, false));
 
       GElf_Shdr shdr2_mem;
       GElf_Shdr *shdr2;
@@ -282,7 +282,7 @@ main (int argc, char *argv[])
 	    sname2 = elf_strptr (elf2, shstrndx2, shdr2->sh_name);
 	}
       while (scn2 != NULL && shdr2 != NULL
-	     && ebl_section_strip_p (ebl2, shdr2, sname2, true, false));
+	     && ebl_section_strip_p (ebl2, shdr2, sname2, true, false, false));
 
       if (scn1 == NULL || scn2 == NULL || shdr1 == NULL || shdr2 == NULL)
 	break;
diff --git a/src/strip.c b/src/strip.c
index 2a2cc801..68dfdc1f 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -61,6 +61,7 @@ ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
 #define OPT_RELOC_DEBUG 	0x103
 #define OPT_KEEP_SECTION 	0x104
 #define OPT_RELOC_DEBUG_ONLY    0x105
+#define OPT_REMOVE_CTF	        0x106
 
 
 /* Definitions of arguments for argp functions.  */
@@ -86,6 +87,8 @@ static const struct argp_option options[] =
     N_("Similar to --reloc-debug-sections, but resolve all trivial relocations between debug sections in place.  No other stripping is performed (operation is not reversible, incompatible with -f, -g, --remove-comment and --remove-section)"), 0 },
   { "remove-comment", OPT_REMOVE_COMMENT, NULL, 0,
     N_("Remove .comment section"), 0 },
+  { "remove-ctf", OPT_REMOVE_CTF, NULL, 0,
+    N_("Remove .ctf section"), 0 },
   { "remove-section", 'R', "SECTION", 0, N_("Remove the named section.  SECTION is an extended wildcard pattern.  May be given more than once.  Only non-allocated sections can be removed."), 0 },
   { "keep-section", OPT_KEEP_SECTION, "SECTION", 0, N_("Keep the named section.  SECTION is an extended wildcard pattern.  May be given more than once."), 0 },
   { "permissive", OPT_PERMISSIVE, NULL, 0,
@@ -149,6 +152,9 @@ static bool preserve_dates;
 /* If true .comment sections will be removed.  */
 static bool remove_comment;
 
+/* If true .ctf sections will be removed.  */
+static bool remove_ctf;
+
 /* If true remove all debug sections.  */
 static bool remove_debug;
 
@@ -216,6 +222,48 @@ section_name_matches (struct section_pattern *patterns, const char *name)
   return false;
 }
 
+static void
+set_remove_special_section_opt (const char *arg)
+{
+  if (fnmatch (arg, ".comment", FNM_EXTMATCH) == 0)
+    remove_comment = true;
+  else if (fnmatch (arg, ".ctf", FNM_EXTMATCH) == 0)
+    remove_ctf = true;
+}
+
+static error_t
+erratic_special_section_opt (struct argp_state *state)
+{
+  int s;
+  struct {
+    const char *name;
+    bool remove;
+  } special_secs[] = {
+      {
+        .name = ".comment",
+        .remove = remove_comment
+      },
+      {
+        .name = ".ctf",
+        .remove = remove_ctf
+      },
+      {
+        .name = NULL,
+      }
+  };
+
+  for (s = 0; special_secs[s].name; ++s)
+    if (special_secs[s].remove == true
+        && section_name_matches (keep_secs, special_secs[s].name))
+      {
+        argp_error (state,
+                    _("cannot both keep and remove %s section"),
+                    special_secs[s].name);
+        return EINVAL;
+      }
+
+  return 0;
+}
 
 int
 main (int argc, char *argv[])
@@ -324,9 +372,12 @@ parse_opt (int key, char *arg, struct argp_state *state)
       remove_comment = true;
       break;
 
+    case OPT_REMOVE_CTF:
+      remove_ctf = true;
+      break;
+
     case 'R':
-      if (fnmatch (arg, ".comment", FNM_EXTMATCH) == 0)
-	remove_comment = true;
+      set_remove_special_section_opt (arg);
       add_pattern (&remove_secs, arg);
       break;
 
@@ -352,13 +403,8 @@ parse_opt (int key, char *arg, struct argp_state *state)
       break;
 
     case ARGP_KEY_SUCCESS:
-      if (remove_comment == true
-	  && section_name_matches (keep_secs, ".comment"))
-	{
-	  argp_error (state,
-		      _("cannot both keep and remove .comment section"));
-	  return EINVAL;
-	}
+      if (erratic_special_section_opt (state))
+        return EINVAL;
       break;
 
     default:
@@ -1357,7 +1403,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
      all sections which are not used at runtime are stripped out.  But
      there are a few exceptions:
 
-     - special sections named ".comment" and ".note" are kept
+     - special sections named ".comment", ".note" and ".ctf" are kept
      - OS or architecture specific sections are kept since we might not
        know how to handle them
      - if a section is referred to from a section which is not removed
@@ -1370,7 +1416,7 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
     if (remove_shdrs ? !(shdr_info[cnt].shdr.sh_flags & SHF_ALLOC)
 	: (ebl_section_strip_p (ebl, &shdr_info[cnt].shdr,
 				shdr_info[cnt].name, remove_comment,
-				remove_debug)
+				remove_debug, remove_ctf)
 	   || cnt == shstrndx
 	   || section_name_matches (remove_secs, shdr_info[cnt].name)))
       {
@@ -1533,7 +1579,8 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname,
 						    &shdr_info[scnidx].shdr,
 						    shdr_info[scnidx].name,
 						    remove_comment,
-						    remove_debug)
+						    remove_debug,
+						    remove_ctf)
 			       && ebl_data_marker_symbol (ebl, sym,
 					elf_strptr (elf,
 						    shdr_info[cnt].shdr.sh_link,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fd58bf84..2267a364 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -207,7 +207,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
 	$(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \
 	run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \
 	run-readelf-dw-form-indirect.sh run-strip-largealign.sh \
-	run-readelf-Dd.sh
+	run-readelf-Dd.sh run-strip-remove-keep-ctf.sh
 
 if !BIARCH
 export ELFUTILS_DISABLE_BIARCH = 1
@@ -619,7 +619,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \
 	     run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \
 	     testfile_nvidia_linemap.bz2 \
 	     testfile-largealign.o.bz2 run-strip-largealign.sh \
-	     run-funcretval++11.sh
+	     run-funcretval++11.sh \
+	     testfile-ctf.bz2 run-strip-remove-keep-ctf.sh
 
 
 if USE_VALGRIND
diff --git a/tests/run-strip-remove-keep-ctf.sh b/tests/run-strip-remove-keep-ctf.sh
new file mode 100755
index 00000000..9a4fde72
--- /dev/null
+++ b/tests/run-strip-remove-keep-ctf.sh
@@ -0,0 +1,212 @@
+#! /bin/sh
+# Copyright (C) 2022 Oracle, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# - testfile-ctf.c
+# int
+# main ()
+# {
+#   return 0;
+# }
+#
+# gcc -gctf -g -o testfile-ctf testfile-ctf.c
+# eu-strip testfile-ctf
+
+# strip -o output and -f debug files
+tempfiles testfile.elf testfile.debug
+
+# A random 32bit testfile
+testfiles testfile-ctf
+
+# strip should keep .ctf section
+echo strip testfile-ctf
+testrun ${abs_top_builddir}/src/strip -o testfile.elf -f testfile.debug testfile-ctf
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 28 section headers, starting at offset 0x31d8:
+
+Section Headers:
+[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
+[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
+[ 1] .interp              PROGBITS     0000000000400318 00000318 0000001c  0 A      0   0  1
+[ 2] .note.gnu.property   NOTE         0000000000400338 00000338 00000020  0 A      0   0  8
+[ 3] .note.ABI-tag        NOTE         0000000000400358 00000358 00000020  0 A      0   0  4
+[ 4] .hash                HASH         0000000000400378 00000378 00000018  4 A      6   0  8
+[ 5] .gnu.hash            GNU_HASH     0000000000400390 00000390 0000001c  0 A      6   0  8
+[ 6] .dynsym              DYNSYM       00000000004003b0 000003b0 00000048 24 A      7   1  8
+[ 7] .dynstr              STRTAB       00000000004003f8 000003f8 00000038  0 A      0   0  1
+[ 8] .gnu.version         GNU_versym   0000000000400430 00000430 00000006  2 A      6   0  2
+[ 9] .gnu.version_r       GNU_verneed  0000000000400438 00000438 00000020  0 A      7   1  8
+[10] .rela.dyn            RELA         0000000000400458 00000458 00000030 24 A      6   0  8
+[11] .init                PROGBITS     0000000000401000 00001000 00000017  0 AX     0   0  4
+[12] .text                PROGBITS     0000000000401020 00001020 00000191  0 AX     0   0 16
+[13] .fini                PROGBITS     00000000004011b4 000011b4 00000009  0 AX     0   0  4
+[14] .rodata              PROGBITS     0000000000402000 00002000 00000004  4 AM     0   0  4
+[15] .eh_frame_hdr        PROGBITS     0000000000402004 00002004 00000034  0 A      0   0  4
+[16] .eh_frame            PROGBITS     0000000000402038 00002038 000000d8  0 A      0   0  8
+[17] .init_array          INIT_ARRAY   0000000000403e40 00002e40 00000008  8 WA     0   0  8
+[18] .fini_array          FINI_ARRAY   0000000000403e48 00002e48 00000008  8 WA     0   0  8
+[19] .dynamic             DYNAMIC      0000000000403e50 00002e50 000001a0 16 WA     7   0  8
+[20] .got                 PROGBITS     0000000000403ff0 00002ff0 00000010  8 WA     0   0  8
+[21] .got.plt             PROGBITS     0000000000404000 00003000 00000018  8 WA     0   0  8
+[22] .data                PROGBITS     0000000000404018 00003018 00000010  0 WA     0   0  8
+[23] .bss                 NOBITS       0000000000404028 00003028 00000008  0 WA     0   0  1
+[24] .comment             PROGBITS     0000000000000000 00003028 0000002a  1 MS     0   0  1
+[25] .ctf                 PROGBITS     0000000000000000 00003052 00000071  0        0   0  1
+[26] .gnu_debuglink       PROGBITS     0000000000000000 000030c4 00000014  0        0   0  4
+[27] .shstrtab            STRTAB       0000000000000000 000030d8 000000fd  0        0   0  1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0xb80:
+
+Section Headers:
+[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
+[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
+[ 1] .interp              NOBITS       0000000000400318 00000318 0000001c  0 A      0   0  1
+[ 2] .note.gnu.property   NOTE         0000000000400338 00000318 00000020  0 A      0   0  8
+[ 3] .note.ABI-tag        NOTE         0000000000400358 00000338 00000020  0 A      0   0  4
+[ 4] .hash                NOBITS       0000000000400378 00000358 00000018  4 A      6   0  8
+[ 5] .gnu.hash            NOBITS       0000000000400390 00000358 0000001c  0 A      6   0  8
+[ 6] .dynsym              NOBITS       00000000004003b0 00000358 00000048 24 A      7   1  8
+[ 7] .dynstr              NOBITS       00000000004003f8 00000358 00000038  0 A      0   0  1
+[ 8] .gnu.version         NOBITS       0000000000400430 00000358 00000006  2 A      6   0  2
+[ 9] .gnu.version_r       NOBITS       0000000000400438 00000358 00000020  0 A      7   1  8
+[10] .rela.dyn            NOBITS       0000000000400458 00000358 00000030 24 A      6   0  8
+[11] .init                NOBITS       0000000000401000 00000358 00000017  0 AX     0   0  4
+[12] .text                NOBITS       0000000000401020 00000360 00000191  0 AX     0   0 16
+[13] .fini                NOBITS       00000000004011b4 00000360 00000009  0 AX     0   0  4
+[14] .rodata              NOBITS       0000000000402000 00000360 00000004  4 AM     0   0  4
+[15] .eh_frame_hdr        NOBITS       0000000000402004 00000360 00000034  0 A      0   0  4
+[16] .eh_frame            NOBITS       0000000000402038 00000360 000000d8  0 A      0   0  8
+[17] .init_array          NOBITS       0000000000403e40 00000360 00000008  8 WA     0   0  8
+[18] .fini_array          NOBITS       0000000000403e48 00000360 00000008  8 WA     0   0  8
+[19] .dynamic             NOBITS       0000000000403e50 00000360 000001a0 16 WA     7   0  8
+[20] .got                 NOBITS       0000000000403ff0 00000360 00000010  8 WA     0   0  8
+[21] .got.plt             NOBITS       0000000000404000 00000360 00000018  8 WA     0   0  8
+[22] .data                NOBITS       0000000000404018 00000360 00000010  0 WA     0   0  8
+[23] .bss                 NOBITS       0000000000404028 00000360 00000008  0 WA     0   0  1
+[24] .comment             NOBITS       0000000000000000 00000360 0000002a  1 MS     0   0  1
+[25] .ctf                 NOBITS       0000000000000000 00000360 00000071  0        0   0  1
+[26] .debug_aranges       PROGBITS     0000000000000000 00000360 00000030  0        0   0  1
+[27] .debug_info          PROGBITS     0000000000000000 00000390 00000054  0        0   0  1
+[28] .debug_abbrev        PROGBITS     0000000000000000 000003e4 00000038  0        0   0  1
+[29] .debug_line          PROGBITS     0000000000000000 0000041c 0000004f  0        0   0  1
+[30] .debug_str           PROGBITS     0000000000000000 0000046b 0000005f  1 MS     0   0  1
+[31] .debug_line_str      PROGBITS     0000000000000000 000004ca 0000001c  1 MS     0   0  1
+[32] .symtab              SYMTAB       0000000000000000 000004e8 00000378 24       33  20  8
+[33] .strtab              STRTAB       0000000000000000 00000860 000001cb  0        0   0  1
+[34] .shstrtab            STRTAB       0000000000000000 00000a2b 0000014e  0        0   0  1
+
+EOF
+
+# gcc -gctf -g -o testfile-ctf testfile-ctf.c
+# eu-strip --remove-ctf testfile-ctf
+
+# Explicitly removes .ctf section
+echo strip --remove-ctf testfile-ctf
+testrun ${abs_top_builddir}/src/strip --remove-ctf -o testfile.elf -f testfile.debug testfile-ctf
+echo elflint testfile.elf
+testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf
+echo elflint testfile.debug
+testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug
+echo readelf testfile.elf
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF
+There are 27 section headers, starting at offset 0x3160:
+
+Section Headers:
+[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
+[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
+[ 1] .interp              PROGBITS     0000000000400318 00000318 0000001c  0 A      0   0  1
+[ 2] .note.gnu.property   NOTE         0000000000400338 00000338 00000020  0 A      0   0  8
+[ 3] .note.ABI-tag        NOTE         0000000000400358 00000358 00000020  0 A      0   0  4
+[ 4] .hash                HASH         0000000000400378 00000378 00000018  4 A      6   0  8
+[ 5] .gnu.hash            GNU_HASH     0000000000400390 00000390 0000001c  0 A      6   0  8
+[ 6] .dynsym              DYNSYM       00000000004003b0 000003b0 00000048 24 A      7   1  8
+[ 7] .dynstr              STRTAB       00000000004003f8 000003f8 00000038  0 A      0   0  1
+[ 8] .gnu.version         GNU_versym   0000000000400430 00000430 00000006  2 A      6   0  2
+[ 9] .gnu.version_r       GNU_verneed  0000000000400438 00000438 00000020  0 A      7   1  8
+[10] .rela.dyn            RELA         0000000000400458 00000458 00000030 24 A      6   0  8
+[11] .init                PROGBITS     0000000000401000 00001000 00000017  0 AX     0   0  4
+[12] .text                PROGBITS     0000000000401020 00001020 00000191  0 AX     0   0 16
+[13] .fini                PROGBITS     00000000004011b4 000011b4 00000009  0 AX     0   0  4
+[14] .rodata              PROGBITS     0000000000402000 00002000 00000004  4 AM     0   0  4
+[15] .eh_frame_hdr        PROGBITS     0000000000402004 00002004 00000034  0 A      0   0  4
+[16] .eh_frame            PROGBITS     0000000000402038 00002038 000000d8  0 A      0   0  8
+[17] .init_array          INIT_ARRAY   0000000000403e40 00002e40 00000008  8 WA     0   0  8
+[18] .fini_array          FINI_ARRAY   0000000000403e48 00002e48 00000008  8 WA     0   0  8
+[19] .dynamic             DYNAMIC      0000000000403e50 00002e50 000001a0 16 WA     7   0  8
+[20] .got                 PROGBITS     0000000000403ff0 00002ff0 00000010  8 WA     0   0  8
+[21] .got.plt             PROGBITS     0000000000404000 00003000 00000018  8 WA     0   0  8
+[22] .data                PROGBITS     0000000000404018 00003018 00000010  0 WA     0   0  8
+[23] .bss                 NOBITS       0000000000404028 00003028 00000008  0 WA     0   0  1
+[24] .comment             PROGBITS     0000000000000000 00003028 0000002a  1 MS     0   0  1
+[25] .gnu_debuglink       PROGBITS     0000000000000000 00003054 00000014  0        0   0  4
+[26] .shstrtab            STRTAB       0000000000000000 00003068 000000f8  0        0   0  1
+
+EOF
+echo readelf testfile.debug
+testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF
+There are 35 section headers, starting at offset 0xbf0:
+
+Section Headers:
+[Nr] Name                 Type         Addr             Off      Size     ES Flags Lk Inf Al
+[ 0]                      NULL         0000000000000000 00000000 00000000  0        0   0  0
+[ 1] .interp              NOBITS       0000000000400318 00000318 0000001c  0 A      0   0  1
+[ 2] .note.gnu.property   NOTE         0000000000400338 00000318 00000020  0 A      0   0  8
+[ 3] .note.ABI-tag        NOTE         0000000000400358 00000338 00000020  0 A      0   0  4
+[ 4] .hash                NOBITS       0000000000400378 00000358 00000018  4 A      6   0  8
+[ 5] .gnu.hash            NOBITS       0000000000400390 00000358 0000001c  0 A      6   0  8
+[ 6] .dynsym              NOBITS       00000000004003b0 00000358 00000048 24 A      7   1  8
+[ 7] .dynstr              NOBITS       00000000004003f8 00000358 00000038  0 A      0   0  1
+[ 8] .gnu.version         NOBITS       0000000000400430 00000358 00000006  2 A      6   0  2
+[ 9] .gnu.version_r       NOBITS       0000000000400438 00000358 00000020  0 A      7   1  8
+[10] .rela.dyn            NOBITS       0000000000400458 00000358 00000030 24 A      6   0  8
+[11] .init                NOBITS       0000000000401000 00000358 00000017  0 AX     0   0  4
+[12] .text                NOBITS       0000000000401020 00000360 00000191  0 AX     0   0 16
+[13] .fini                NOBITS       00000000004011b4 00000360 00000009  0 AX     0   0  4
+[14] .rodata              NOBITS       0000000000402000 00000360 00000004  4 AM     0   0  4
+[15] .eh_frame_hdr        NOBITS       0000000000402004 00000360 00000034  0 A      0   0  4
+[16] .eh_frame            NOBITS       0000000000402038 00000360 000000d8  0 A      0   0  8
+[17] .init_array          NOBITS       0000000000403e40 00000360 00000008  8 WA     0   0  8
+[18] .fini_array          NOBITS       0000000000403e48 00000360 00000008  8 WA     0   0  8
+[19] .dynamic             NOBITS       0000000000403e50 00000360 000001a0 16 WA     7   0  8
+[20] .got                 NOBITS       0000000000403ff0 00000360 00000010  8 WA     0   0  8
+[21] .got.plt             NOBITS       0000000000404000 00000360 00000018  8 WA     0   0  8
+[22] .data                NOBITS       0000000000404018 00000360 00000010  0 WA     0   0  8
+[23] .bss                 NOBITS       0000000000404028 00000360 00000008  0 WA     0   0  1
+[24] .comment             NOBITS       0000000000000000 00000360 0000002a  1 MS     0   0  1
+[25] .ctf                 PROGBITS     0000000000000000 00000360 00000071  0        0   0  1
+[26] .debug_aranges       PROGBITS     0000000000000000 000003d1 00000030  0        0   0  1
+[27] .debug_info          PROGBITS     0000000000000000 00000401 00000054  0        0   0  1
+[28] .debug_abbrev        PROGBITS     0000000000000000 00000455 00000038  0        0   0  1
+[29] .debug_line          PROGBITS     0000000000000000 0000048d 0000004f  0        0   0  1
+[30] .debug_str           PROGBITS     0000000000000000 000004dc 0000005f  1 MS     0   0  1
+[31] .debug_line_str      PROGBITS     0000000000000000 0000053b 0000001c  1 MS     0   0  1
+[32] .symtab              SYMTAB       0000000000000000 00000558 00000378 24       33  20  8
+[33] .strtab              STRTAB       0000000000000000 000008d0 000001cb  0        0   0  1
+[34] .shstrtab            STRTAB       0000000000000000 00000a9b 0000014e  0        0   0  1
+
+EOF
+
+exit 0
diff --git a/tests/testfile-ctf.bz2 b/tests/testfile-ctf.bz2
new file mode 100755
index 0000000000000000000000000000000000000000..f48bb9304f1e2194500f5091dbb3aa1a7b8806cc
GIT binary patch
-- 
2.39.1


