From: Timm Bäder Date: Fri, 8 Jan 2021 08:04:46 +0000 (+0100) Subject: strip: Replace nested check_preserved function with loop X-Git-Tag: elfutils-0.183~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b076d4c219550ea30da89fc8f5839a139ac5353d;p=thirdparty%2Felfutils.git strip: Replace nested check_preserved function with loop Signed-off-by: Timm Bäder --- diff --git a/src/ChangeLog b/src/ChangeLog index bd76256e2..382a8f47d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2021-01-08 Timm Bäder + + * strip.c (handle_elf): Expand inlined function check_preserved. + 2021-01-12 Mark Wielaard * elflint.c (EXTRA_SHFLAGS): New define. diff --git a/src/strip.c b/src/strip.c index 7ce14ab86..c971b6c24 100644 --- a/src/strip.c +++ b/src/strip.c @@ -1535,25 +1535,30 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, files by setting the .debug_data pointer to the original file's .data pointer. Below, we'll copy the section contents. */ + size_t shdr_indices[2] = { shdr_info[cnt].shdr.sh_link, 0 }; + int n = 1; - inline void check_preserved (size_t i) - { - if (i != 0 && i < shnum + 2 && shdr_info[i].idx != 0 - && shdr_info[i].debug_data == NULL) - { - if (shdr_info[i].data == NULL) - shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL); - if (shdr_info[i].data == NULL) - INTERNAL_ERROR (fname); + if (SH_INFO_LINK_P (&shdr_info[cnt].shdr)) + { + shdr_indices[1] = shdr_info[cnt].shdr.sh_info; + n++; + } - shdr_info[i].debug_data = shdr_info[i].data; - changes |= i < cnt; - } - } + for (int j = 0; j < n; j++) + { + size_t i = shdr_indices[j]; + if (i != 0 && i < shnum + 2 && shdr_info[i].idx != 0 + && shdr_info[i].debug_data == NULL) + { + if (shdr_info[i].data == NULL) + shdr_info[i].data = elf_getdata (shdr_info[i].scn, NULL); + if (shdr_info[i].data == NULL) + INTERNAL_ERROR (fname); - check_preserved (shdr_info[cnt].shdr.sh_link); - if (SH_INFO_LINK_P (&shdr_info[cnt].shdr)) - check_preserved (shdr_info[cnt].shdr.sh_info); + shdr_info[i].debug_data = shdr_info[i].data; + changes |= i < cnt; + } + } } } }