diff --git a/include/abg-ir.h b/include/abg-ir.h
index d81de217702b..5766385c8b73 100644
--- a/include/abg-ir.h
+++ b/include/abg-ir.h
@@ -851,8 +851,9 @@ private:
 	     bool		d,
 	     bool		c,
 	     const version&	ve,
-	     visibility	vi,
-	     bool		is_linux_string_cst = false);
+	     visibility		vi,
+	     bool		is_linux_string_cst = false,
+	     bool		is_in_ksymtab = false);
 
   elf_symbol(const elf_symbol&);
 
@@ -865,17 +866,18 @@ public:
   create();
 
   static elf_symbol_sptr
-  create(const environment*	e,
-	 size_t		i,
-	 size_t		s,
-	 const string&		n,
-	 type			t,
-	 binding		b,
-	 bool			d,
-	 bool			c,
-	 const version&	ve,
-	 visibility		vi,
-	 bool			is_linux_string_cst = false);
+  create(const environment* e,
+	 size_t		    i,
+	 size_t		    s,
+	 const string&	    n,
+	 type		    t,
+	 binding	    b,
+	 bool		    d,
+	 bool		    c,
+	 const version&	    ve,
+	 visibility	    vi,
+	 bool		    is_linux_string_cst = false,
+	 bool		    is_in_ksymtab = false);
 
   const environment*
   get_environment() const;
@@ -943,6 +945,12 @@ public:
   bool
   is_variable() const;
 
+  bool
+  is_in_ksymtab() const;
+
+  void
+  set_is_in_ksymtab(bool is_in_ksymtab);
+
   const elf_symbol_sptr
   get_main_symbol() const;
 
diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 4813035e5935..00fc00b064d1 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -1300,6 +1300,7 @@ struct elf_symbol::priv
   //     STT_COMMON definition of that name that has the largest size.
   bool			is_common_;
   bool			is_linux_string_cst_;
+  bool			is_in_ksymtab_;
   elf_symbol_wptr	main_symbol_;
   elf_symbol_wptr	next_alias_;
   elf_symbol_wptr	next_common_instance_;
@@ -1314,20 +1315,22 @@ struct elf_symbol::priv
       visibility_(elf_symbol::DEFAULT_VISIBILITY),
       is_defined_(false),
       is_common_(false),
-      is_linux_string_cst_(false)
+      is_linux_string_cst_(false),
+      is_in_ksymtab_(false)
   {}
 
-  priv(const environment*		e,
-       size_t				i,
-       size_t				s,
-       const string&			n,
-       elf_symbol::type		t,
-       elf_symbol::binding		b,
-       bool				d,
-       bool				c,
-       const elf_symbol::version&	ve,
-       elf_symbol::visibility		vi,
-       bool				is_linux_string_cst)
+  priv(const environment*	  e,
+       size_t			  i,
+       size_t			  s,
+       const string&		  n,
+       elf_symbol::type		  t,
+       elf_symbol::binding	  b,
+       bool			  d,
+       bool			  c,
+       const elf_symbol::version& ve,
+       elf_symbol::visibility	  vi,
+       bool			  is_linux_string_cst,
+       bool			  is_in_ksymtab)
     : env_(e),
       index_(i),
       size_(s),
@@ -1338,7 +1341,8 @@ struct elf_symbol::priv
       visibility_(vi),
       is_defined_(d),
       is_common_(c),
-      is_linux_string_cst_(is_linux_string_cst)
+      is_linux_string_cst_(is_linux_string_cst),
+      is_in_ksymtab_(is_in_ksymtab)
   {
     if (!is_common_)
       is_common_ = type_ == COMMON_TYPE;
@@ -1384,19 +1388,30 @@ elf_symbol::elf_symbol()
 ///
 /// @param is_linux_string_cst true if the symbol is a Linux Kernel
 /// string constant defined in the __ksymtab_strings section.
-elf_symbol::elf_symbol(const environment*	e,
-		       size_t			i,
-		       size_t			s,
-		       const string&		n,
-		       type			t,
-		       binding			b,
-		       bool			d,
-		       bool			c,
-		       const version&		ve,
-		       visibility		vi,
-		       bool			is_linux_string_cst)
-  : priv_(new priv(e, i, s, n, t, b, d,
-		   c, ve, vi, is_linux_string_cst))
+elf_symbol::elf_symbol(const environment* e,
+		       size_t		  i,
+		       size_t		  s,
+		       const string&	  n,
+		       type		  t,
+		       binding		  b,
+		       bool		  d,
+		       bool		  c,
+		       const version&	  ve,
+		       visibility	  vi,
+		       bool		  is_linux_string_cst,
+		       bool		  is_in_ksymtab)
+  : priv_(new priv(e,
+		   i,
+		   s,
+		   n,
+		   t,
+		   b,
+		   d,
+		   c,
+		   ve,
+		   vi,
+		   is_linux_string_cst,
+		   is_in_ksymtab))
 {}
 
 /// Factory of instances of @ref elf_symbol.
@@ -1443,20 +1458,22 @@ elf_symbol::create()
 /// @return a (smart) pointer to a newly created instance of @ref
 /// elf_symbol.
 elf_symbol_sptr
-elf_symbol::create(const environment*	e,
-		   size_t		i,
-		   size_t		s,
-		   const string&	n,
-		   type		t,
-		   binding		b,
-		   bool		d,
-		   bool		c,
-		   const version&	ve,
-		   visibility		vi,
-		   bool		is_linux_string_cst)
-{
-  elf_symbol_sptr sym(new elf_symbol(e, i, s, n, t, b, d, c, ve,
-				     vi, is_linux_string_cst));
+elf_symbol::create(const environment* e,
+		   size_t	      i,
+		   size_t	      s,
+		   const string&      n,
+		   type		      t,
+		   binding	      b,
+		   bool		      d,
+		   bool		      c,
+		   const version&     ve,
+		   visibility	      vi,
+		   bool		      is_linux_string_cst,
+		   bool		      is_in_ksymtab)
+{
+  elf_symbol_sptr sym(new elf_symbol(e, i, s, n, t, b, d, c, ve, vi,
+				     is_linux_string_cst,
+				     is_in_ksymtab));
   sym->priv_->main_symbol_ = sym;
   return sym;
 }
@@ -1676,6 +1693,14 @@ bool
 elf_symbol::is_variable() const
 {return get_type() == OBJECT_TYPE || get_type() == TLS_TYPE;}
 
+bool
+elf_symbol::is_in_ksymtab() const
+{return priv_->is_in_ksymtab_;}
+
+void
+elf_symbol::set_is_in_ksymtab(bool is_in_ksymtab)
+{priv_->is_in_ksymtab_ = is_in_ksymtab;}
+
 /// @name Elf symbol aliases
 ///
 /// An alias A for an elf symbol S is a symbol that is defined at the
