summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimm Bäder <tbaeder@redhat.com>2021-02-17 09:43:45 +0100
committerMark Wielaard <mark@klomp.org>2021-03-01 17:47:20 +0100
commit2daab4e7661eee6fe8701800a8e54d2448471cbd (patch)
treecbc2b0dca0b397e6fb5407e428389bc197f7ca56
parentec5d1a47e3b9e73a849ed40f94e9ec8017b75b72 (diff)
unstrip: Pull check_match() into file scope
Get rid of a nested function this way. Signed-off-by: Timm Bäder <tbaeder@redhat.com>
-rw-r--r--src/ChangeLog7
-rw-r--r--src/unstrip.c28
2 files changed, 23 insertions, 12 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index ea8250c5..9e7d6cb9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,12 @@
2021-02-17 Timm Bäder <tbaeder@redhat.com>
+ * unstrip.c (find_alloc_sections_prelink): Move check_match to...
+ (check_match): Adjusted to return whether there was no match,
+ which indicates a failure. So callers are adjusted to or the
+ result into a local fail boolean.
+
+2021-02-17 Timm Bäder <tbaeder@redhat.com>
+
* unstrip.c (adjust_relocs): Move adjust_reloc function to...
(adjust_reloc): ... here as static top-level function taking
a map array and size as extra arguments.
diff --git a/src/unstrip.c b/src/unstrip.c
index 6e874c3a..72fabac8 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -1065,6 +1065,20 @@ get_group_sig (Elf *elf, GElf_Shdr *shdr)
return sig;
}
+static inline bool
+check_match (bool match, Elf_Scn *scn, const char *name)
+{
+ if (!match)
+ {
+ error (0, 0, _("cannot find matching section for [%zu] '%s'"),
+ elf_ndxscn (scn), name);
+ return true;
+ }
+
+ return false;
+}
+
+
/* Fix things up when prelink has moved some allocated sections around
and the debuginfo file's section headers no longer match up.
This fills in SECTIONS[0..NALLOC-1].outscn or exits.
@@ -1200,16 +1214,6 @@ find_alloc_sections_prelink (Elf *debug, Elf_Data *debug_shstrtab,
}
bool fail = false;
- inline void check_match (bool match, Elf_Scn *scn, const char *name)
- {
- if (!match)
- {
- fail = true;
- error (0, 0, _("cannot find matching section for [%zu] '%s'"),
- elf_ndxscn (scn), name);
- }
- }
-
Elf_Scn *scn = NULL;
while ((scn = elf_nextscn (debug, scn)) != NULL)
{
@@ -1240,7 +1244,7 @@ find_alloc_sections_prelink (Elf *debug, Elf_Data *debug_shstrtab,
for (size_t i = 0; shdr != NULL && i < nalloc; ++i)
if (sections[i].outscn == scn)
shdr = NULL;
- check_match (shdr == NULL, scn, name);
+ fail |= check_match (shdr == NULL, scn, name);
}
if (fail)
@@ -1296,7 +1300,7 @@ find_alloc_sections_prelink (Elf *debug, Elf_Data *debug_shstrtab,
}
}
- check_match (undo_sec == NULL, scn, name);
+ fail |= check_match (undo_sec == NULL, scn, name);
}
free (undo_sections);