From a9b90127e864d0cac1b7b803cb2af4eab01dbdab Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 6 Mar 2020 10:33:10 +1030 Subject: [PATCH] PR25637, objcopy : SIGSEGV in copy_object PR 25637 * objcopy.c (filter_symbols): Correct rem_leading_char logic. --- binutils/ChangeLog | 5 +++++ binutils/objcopy.c | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 7ce0326ac49..1fe7f154192 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-03-06 Alan Modra + + PR 25637 + * objcopy.c (filter_symbols): Correct rem_leading_char logic. + 2020-03-05 Alan Modra PR 25629 diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 3b9f1b73ca9..16affa9960f 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -1549,12 +1549,13 @@ filter_symbols (bfd *abfd, bfd *obfd, asymbol **osyms, /* Check if we will remove the current leading character. */ rem_leading_char = - (name[0] == bfd_get_symbol_leading_char (abfd)) - && (change_leading_char - || (remove_leading_char - && ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0 - || undefined - || bfd_is_com_section (bfd_asymbol_section (sym))))); + (name[0] != '\0' + && name[0] == bfd_get_symbol_leading_char (abfd) + && (change_leading_char + || (remove_leading_char + && ((flags & (BSF_GLOBAL | BSF_WEAK)) != 0 + || undefined + || bfd_is_com_section (bfd_asymbol_section (sym)))))); /* Check if we will add a new leading character. */ add_leading_char = -- 2.30.2