diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 2ff9f4af87b..3da70d65c40 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2018-08-21  mephi42  <mephi42@gmail.com>
+
+	PR binutils/23315
+	* mach-o.c (bfd_mach_o_mangle_symbols): Update n_type even if
+	data is already considered filled.
+
 2018-08-21  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (HOW): Define.
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index ce72a3dd2c0..1b461f59887 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -2497,11 +2497,14 @@ bfd_mach_o_mangle_symbols (bfd *abfd)
 	    }
 	  else
 	    s->n_type = BFD_MACH_O_N_SECT;
-
-	  if (s->symbol.flags & BSF_GLOBAL)
-	    s->n_type |= BFD_MACH_O_N_EXT;
 	}
 
+      /* Update external symbol bit in case objcopy changed it.  */
+      if (s->symbol.flags & BSF_GLOBAL)
+	s->n_type |= BFD_MACH_O_N_EXT;
+      else
+	s->n_type &= ~BFD_MACH_O_N_EXT;
+
       /* Put the section index in, where required.  */
       if ((s->symbol.section != bfd_abs_section_ptr
 	  && s->symbol.section != bfd_und_section_ptr