[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [livepatch-build-tools part2 2/6] common: Add is_referenced_section() helper function



On 4/16/19 1:07 PM, Pawel Wieczorkiewicz wrote:
This function checks if given section has an included corresponding
RELA section and/or any of the symbols table symbols references the
section. Section associated symbols are ignored here as there is
always such a symbol for every section.

Signed-off-by: Pawel Wieczorkiewicz <wipawel@xxxxxxxxx>
Reviewed-by: Andra-Irina Paraschiv <andraprs@xxxxxxxxxx>
Reviewed-by: Bjoern Doebel <doebel@xxxxxxxxx>
Reviewed-by: Norbert Manthey <nmanthey@xxxxxxxxx>
---
  common.c | 22 +++++++++++++++++++++-
  common.h |  1 +
  2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/common.c b/common.c
index 1fb07cb..c968299 100644
--- a/common.c
+++ b/common.c
@@ -15,7 +15,7 @@
int is_rela_section(struct section *sec)
  {
-       return (sec->sh.sh_type == SHT_RELA);
+       return sec && (sec->sh.sh_type == SHT_RELA);
  }
int is_local_sym(struct symbol *sym)
@@ -270,6 +270,26 @@ int is_standard_section(struct section *sec)
        }
  }
+int is_referenced_section(const struct section *sec, const struct kpatch_elf *kelf)

Let's keep to 80 chars where practical (and throughout the rest of the patches).

+{
+       struct symbol *sym;
+
+       if (is_rela_section(sec->rela) && sec->rela->include)
+               return true;
+
+       list_for_each_entry(sym, &kelf->symbols, list) {
+               if (!sym->include || !sym->sec)
+                       continue;
+               /* Ignore section associated sections */
+               if (sym->type == STT_SECTION)
+                       continue;
+               if (sym->sec->index == sec->index)
+                       return true;

You can simplify this check to `sym->sec == sec` like the rest of the code does.

--
Ross Lagerwall

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.