From e3e8411bec4ef30d331d6185bd2650a3fc56ea09 Mon Sep 17 00:00:00 2001
From: Nick Alcock <nick.alcock@oracle.com>
Date: Fri, 5 Jun 2020 22:52:41 +0100
Subject: [PATCH] libctf, link: add CTF_LINK_OMIT_VARIABLES_SECTION

This flag (not used anywhere yet) causes the variables section to be
omitted from the output CTF dict.

include/
	* ctf-api.h (CTF_LINK_OMIT_VARIABLES_SECTION): New.
libctf/
	* ctf-link.c (ctf_link_one_input_archive_member): Check
	CTF_LINK_OMIT_VARIABLES_SECTION.
---
 include/ChangeLog | 4 ++++
 include/ctf-api.h | 3 +++
 libctf/ChangeLog  | 5 +++++
 libctf/ctf-link.c | 3 ++-
 4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/ChangeLog b/include/ChangeLog
index daf0fe2a564..896f33387b4 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
+
+	* ctf-api.h (CTF_LINK_OMIT_VARIABLES_SECTION): New.
+
 2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
 
 	* ctf-api.h (CTF_LINK_SHARE_DUPLICATED): No longer unimplemented.
diff --git a/include/ctf-api.h b/include/ctf-api.h
index c3683db0996..f034f9859dd 100644
--- a/include/ctf-api.h
+++ b/include/ctf-api.h
@@ -90,6 +90,9 @@ typedef struct ctf_link_sym
    emitted into them.  */
 #define CTF_LINK_EMPTY_CU_MAPPINGS 0x4
 
+/* Omit the content of the variables section.  */
+#define CTF_LINK_OMIT_VARIABLES_SECTION 0x8
+
 /* Symbolic names for CTF sections.  */
 
 typedef enum ctf_sect_names
diff --git a/libctf/ChangeLog b/libctf/ChangeLog
index 58eb2f61de3..4ec74427e51 100644
--- a/libctf/ChangeLog
+++ b/libctf/ChangeLog
@@ -1,3 +1,8 @@
+2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
+
+	* ctf-link.c (ctf_link_one_input_archive_member): Check
+	CTF_LINK_OMIT_VARIABLES_SECTION.
+
 2020-07-22  Nick Alcock  <nick.alcock@oracle.com>
 
 	* ctf-impl.h (ctf_type_id_key): New, the key in the
diff --git a/libctf/ctf-link.c b/libctf/ctf-link.c
index 886106cb478..043d6a2f530 100644
--- a/libctf/ctf-link.c
+++ b/libctf/ctf-link.c
@@ -685,7 +685,8 @@ ctf_link_one_input_archive_member (ctf_file_t *in_fp, const char *name, void *ar
   arg->in_fp = in_fp;
 
   if ((err = ctf_type_iter_all (in_fp, ctf_link_one_type, arg)) > -1)
-    err = ctf_variable_iter (in_fp, ctf_link_one_variable, arg);
+    if (!(in_fp->ctf_link_flags & CTF_LINK_OMIT_VARIABLES_SECTION))
+      err = ctf_variable_iter (in_fp, ctf_link_one_variable, arg);
 
   arg->in_input_cu_file = 0;