Use startswith more for strncmp function calls.

bfd/ChangeLog:

	* elf-bfd.h (bfd_section_is_ctf): Use startswith function.
	* elf.c (_bfd_elf_make_section_from_shdr): Likewise.
	(elf_get_reloc_section): Likewise.
	* elf32-arc.c (elf_arc_size_dynamic_sections): Likewise.
	* elf32-m32r.c (m32r_elf_section_flags): Likewise.
	* elf32-microblaze.c (microblaze_elf_size_dynamic_sections): Likewise.
	* elf32-nds32.c (nds32_elf_size_dynamic_sections): Likewise.
	(nds32_elf_relocate_section): Likewise.
	(nds32_elf_action_discarded): Likewise.
	(nds32_elf_check_relocs): Likewise.
	(nds32_elf_section_flags): Likewise.
	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
	* elf32-ppc.c (ppc_elf_section_from_shdr): Likewise.
	* elf32-rx.c (rx_table_find): Likewise.
	(rx_table_map): Likewise.
	* elf32-spu.c (spu_elf_backend_symbol_processing): Likewise.
	(spu_elf_find_overlays): Likewise.
	(needs_ovl_stub): Likewise.
	(allocate_spuear_stubs): Likewise.
	(build_spuear_stubs): Likewise.
	(mark_overlay_section): Likewise.
	(spu_elf_auto_overlay): Likewise.
	(spu_elf_output_symbol_hook): Likewise.
	* elf32-tilepro.c (tilepro_elf_size_dynamic_sections): Likewise.
	* elf32-xtensa.c (xtensa_property_section_name): Likewise.
	* elf64-ppc.c (ppc64_elf_section_flags): Likewise.
	(ppc64_elf_relocate_section): Likewise.
	* elflink.c (resolve_section): Likewise.
	(UNARY_OP): Likewise.
	(BINARY_OP_HEAD): Likewise.
	(elf_link_input_bfd): Likewise.
	* elfnn-riscv.c (riscv_elf_size_dynamic_sections): Likewise.
	* elfxx-riscv.c (riscv_parse_subset): Likewise.
	* elfxx-tilegx.c (tilegx_elf_size_dynamic_sections): Likewise.
	* opncls.c (get_build_id): Likewise.

binutils/ChangeLog:

	* dllwrap.c: Use startswith function.
	* objcopy.c (is_dwo_section): Likewise.
	(handle_remove_section_option): Likewise.
	(copy_main): Likewise.
	* objdump.c (is_significant_symbol_name): Likewise.
This commit is contained in:
Martin Liska 2021-03-18 15:16:54 +01:00
parent 24d127aa9f
commit 3f3328b816
23 changed files with 117 additions and 73 deletions

View File

@ -1,3 +1,41 @@
2021-04-01 Martin Liska <mliska@suse.cz>
* elf-bfd.h (bfd_section_is_ctf): Use startswith function.
* elf.c (_bfd_elf_make_section_from_shdr): Likewise.
(elf_get_reloc_section): Likewise.
* elf32-arc.c (elf_arc_size_dynamic_sections): Likewise.
* elf32-m32r.c (m32r_elf_section_flags): Likewise.
* elf32-microblaze.c (microblaze_elf_size_dynamic_sections): Likewise.
* elf32-nds32.c (nds32_elf_size_dynamic_sections): Likewise.
(nds32_elf_relocate_section): Likewise.
(nds32_elf_action_discarded): Likewise.
(nds32_elf_check_relocs): Likewise.
(nds32_elf_section_flags): Likewise.
* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
* elf32-ppc.c (ppc_elf_section_from_shdr): Likewise.
* elf32-rx.c (rx_table_find): Likewise.
(rx_table_map): Likewise.
* elf32-spu.c (spu_elf_backend_symbol_processing): Likewise.
(spu_elf_find_overlays): Likewise.
(needs_ovl_stub): Likewise.
(allocate_spuear_stubs): Likewise.
(build_spuear_stubs): Likewise.
(mark_overlay_section): Likewise.
(spu_elf_auto_overlay): Likewise.
(spu_elf_output_symbol_hook): Likewise.
* elf32-tilepro.c (tilepro_elf_size_dynamic_sections): Likewise.
* elf32-xtensa.c (xtensa_property_section_name): Likewise.
* elf64-ppc.c (ppc64_elf_section_flags): Likewise.
(ppc64_elf_relocate_section): Likewise.
* elflink.c (resolve_section): Likewise.
(UNARY_OP): Likewise.
(BINARY_OP_HEAD): Likewise.
(elf_link_input_bfd): Likewise.
* elfnn-riscv.c (riscv_elf_size_dynamic_sections): Likewise.
* elfxx-riscv.c (riscv_parse_subset): Likewise.
* elfxx-tilegx.c (tilegx_elf_size_dynamic_sections): Likewise.
* opncls.c (get_build_id): Likewise.
2021-03-31 Alan Modra <amodra@gmail.com> 2021-03-31 Alan Modra <amodra@gmail.com>
PR 27671 PR 27671

View File

@ -3093,7 +3093,7 @@ static inline bool
bfd_section_is_ctf (const asection *sec) bfd_section_is_ctf (const asection *sec)
{ {
const char *name = bfd_section_name (sec); const char *name = bfd_section_name (sec);
return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.'); return startswith (name, ".ctf") && (name[4] == 0 || name[4] == '.');
} }
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1084,19 +1084,19 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
not any sort of flag. Their SEC_ALLOC bits are cleared. */ not any sort of flag. Their SEC_ALLOC bits are cleared. */
if (name [0] == '.') if (name [0] == '.')
{ {
if (strncmp (name, ".debug", 6) == 0 if (startswith (name, ".debug")
|| strncmp (name, ".gnu.debuglto_.debug_", 21) == 0 || startswith (name, ".gnu.debuglto_.debug_")
|| strncmp (name, ".gnu.linkonce.wi.", 17) == 0 || startswith (name, ".gnu.linkonce.wi.")
|| strncmp (name, ".zdebug", 7) == 0) || startswith (name, ".zdebug"))
flags |= SEC_DEBUGGING | SEC_ELF_OCTETS; flags |= SEC_DEBUGGING | SEC_ELF_OCTETS;
else if (strncmp (name, GNU_BUILD_ATTRS_SECTION_NAME, 21) == 0 else if (startswith (name, GNU_BUILD_ATTRS_SECTION_NAME)
|| strncmp (name, ".note.gnu", 9) == 0) || startswith (name, ".note.gnu"))
{ {
flags |= SEC_ELF_OCTETS; flags |= SEC_ELF_OCTETS;
opb = 1; opb = 1;
} }
else if (strncmp (name, ".line", 5) == 0 else if (startswith (name, ".line")
|| strncmp (name, ".stab", 5) == 0 || startswith (name, ".stab")
|| strcmp (name, ".gdb_index") == 0) || strcmp (name, ".gdb_index") == 0)
flags |= SEC_DEBUGGING; flags |= SEC_DEBUGGING;
} }
@ -1277,8 +1277,7 @@ _bfd_elf_make_section_from_shdr (bfd *abfd,
/* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode information /* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode information
section. */ section. */
const char *lto_section_name = ".gnu.lto_.lto."; if (startswith (name, ".gnu.lto_.lto."))
if (strncmp (name, lto_section_name, strlen (lto_section_name)) == 0)
{ {
struct lto_section lsection; struct lto_section lsection;
if (bfd_get_section_contents (abfd, newsect, &lsection, 0, if (bfd_get_section_contents (abfd, newsect, &lsection, 0,
@ -3677,7 +3676,7 @@ elf_get_reloc_section (asection *reloc_sec)
/* We look up the section the relocs apply to by name. */ /* We look up the section the relocs apply to by name. */
name = reloc_sec->name; name = reloc_sec->name;
if (strncmp (name, ".rel", 4) != 0) if (!startswith (name, ".rel"))
return NULL; return NULL;
name += 4; name += 4;
if (type == SHT_RELA && *name++ != 'a') if (type == SHT_RELA && *name++ != 'a')

View File

@ -2759,7 +2759,7 @@ elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
{ {
/* Strip this section if we don't need it. */ /* Strip this section if we don't need it. */
} }
else if (strncmp (s->name, ".rela", 5) == 0) else if (startswith (s->name, ".rela"))
{ {
if (s->size != 0 && s != htab->srelplt) if (s->size != 0 && s != htab->srelplt)
relocs_exist = true; relocs_exist = true;

View File

@ -3615,8 +3615,8 @@ m32r_elf_section_flags (const Elf_Internal_Shdr *hdr)
{ {
const char *name = hdr->bfd_section->name; const char *name = hdr->bfd_section->name;
if (strncmp (name, ".sbss", 5) == 0 if (startswith (name, ".sbss")
|| strncmp (name, ".sdata", 6) == 0) || startswith (name, ".sdata"))
hdr->bfd_section->flags |= SEC_SMALL_DATA; hdr->bfd_section->flags |= SEC_SMALL_DATA;
return true; return true;

View File

@ -3050,7 +3050,7 @@ microblaze_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
of the dynobj section names depend upon the input files. */ of the dynobj section names depend upon the input files. */
name = bfd_section_name (s); name = bfd_section_name (s);
if (strncmp (name, ".rela", 5) == 0) if (startswith (name, ".rela"))
{ {
if (s->size == 0) if (s->size == 0)
{ {

View File

@ -4439,7 +4439,7 @@ nds32_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
{ {
got_size += s->size; got_size += s->size;
} }
else if (strncmp (bfd_section_name (s), ".rela", 5) == 0) else if (startswith (bfd_section_name (s), ".rela"))
{ {
if (s->size != 0 && s != elf_hash_table (info)->srelplt) if (s->size != 0 && s != elf_hash_table (info)->srelplt)
relocs = true; relocs = true;
@ -5426,7 +5426,7 @@ nds32_elf_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
if (name == NULL) if (name == NULL)
return false; return false;
BFD_ASSERT (strncmp (name, ".rela", 5) == 0 BFD_ASSERT (startswith (name, ".rela")
&& strcmp (bfd_section_name (input_section), && strcmp (bfd_section_name (input_section),
name + 5) == 0); name + 5) == 0);
@ -6870,8 +6870,7 @@ static unsigned int
nds32_elf_action_discarded (asection *sec) nds32_elf_action_discarded (asection *sec)
{ {
if (strncmp if (startswith (sec->name, ".gcc_except_table"))
(".gcc_except_table", sec->name, sizeof (".gcc_except_table") - 1) == 0)
return 0; return 0;
return _bfd_elf_default_action_discarded (sec); return _bfd_elf_default_action_discarded (sec);
@ -7239,7 +7238,7 @@ nds32_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
if (name == NULL) if (name == NULL)
return false; return false;
BFD_ASSERT (strncmp (name, ".rela", 5) == 0 BFD_ASSERT (startswith (name, ".rela")
&& strcmp (bfd_section_name (sec), && strcmp (bfd_section_name (sec),
name + 5) == 0); name + 5) == 0);
@ -12450,8 +12449,8 @@ nds32_elf_section_flags (const Elf_Internal_Shdr *hdr)
{ {
const char *name = hdr->bfd_section->name; const char *name = hdr->bfd_section->name;
if (strncmp (name, ".sbss", 5) == 0 if (startswith (name, ".sbss")
|| strncmp (name, ".sdata", 6) == 0) || startswith (name, ".sdata"))
hdr->bfd_section->flags |= SEC_SMALL_DATA; hdr->bfd_section->flags |= SEC_SMALL_DATA;
return true; return true;

View File

@ -2110,7 +2110,7 @@ or1k_elf_check_relocs (bfd *abfd,
if (name == NULL) if (name == NULL)
return false; return false;
if (strncmp (name, ".rela", 5) != 0 if (!startswith (name, ".rela")
|| strcmp (bfd_section_name (sec), name + 5) != 0) || strcmp (bfd_section_name (sec), name + 5) != 0)
{ {
_bfd_error_handler _bfd_error_handler

View File

@ -1338,10 +1338,10 @@ ppc_elf_section_from_shdr (bfd *abfd,
if (hdr->sh_type == SHT_ORDERED) if (hdr->sh_type == SHT_ORDERED)
flags |= SEC_SORT_ENTRIES; flags |= SEC_SORT_ENTRIES;
if (strncmp (name, ".PPC.EMB", 8) == 0) if (startswith (name, ".PPC.EMB"))
name += 8; name += 8;
if (strncmp (name, ".sbss", 5) == 0 if (startswith (name, ".sbss")
|| strncmp (name, ".sdata", 6) == 0) || startswith (name, ".sdata"))
flags |= SEC_SMALL_DATA; flags |= SEC_SMALL_DATA;
return (flags == 0 return (flags == 0

View File

@ -557,7 +557,7 @@ rx_elf_relocate_section
name = h->root.root.string; name = h->root.root.string;
} }
if (strncmp (name, "$tableentry$default$", 20) == 0) if (startswith (name, "$tableentry$default$"))
{ {
bfd_vma entry_vma; bfd_vma entry_vma;
int idx; int idx;
@ -3759,7 +3759,7 @@ rx_table_find (struct bfd_hash_entry *vent, void *vinfo)
sec = ent->u.def.section; sec = ent->u.def.section;
abfd = sec->owner; abfd = sec->owner;
if (strncmp (name, "$tablestart$", 12)) if (!startswith (name, "$tablestart$"))
return true; return true;
sec->flags |= SEC_KEEP; sec->flags |= SEC_KEEP;
@ -3895,7 +3895,7 @@ rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
name = ent->root.string; name = ent->root.string;
if (strncmp (name, "$tablestart$", 12)) if (!startswith (name, "$tablestart$"))
return true; return true;
tname = name + 12; tname = name + 12;

View File

@ -307,7 +307,7 @@ spu_elf_backend_symbol_processing (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
{ {
if (sym->name != NULL if (sym->name != NULL
&& sym->section != bfd_abs_section_ptr && sym->section != bfd_abs_section_ptr
&& strncmp (sym->name, "_EAR_", 5) == 0) && startswith (sym->name, "_EAR_"))
sym->flags |= BSF_KEEP; sym->flags |= BSF_KEEP;
} }
@ -725,7 +725,7 @@ spu_elf_find_overlays (struct bfd_link_info *info)
an overlay, in the sense that it might be loaded in an overlay, in the sense that it might be loaded in
by the overlay manager, but rather the initial by the overlay manager, but rather the initial
section contents for the overlay buffer. */ section contents for the overlay buffer. */
if (strncmp (s->name, ".ovl.init", 9) != 0) if (!startswith (s->name, ".ovl.init"))
{ {
num_buf = ((s->vma - vma_start) >> htab->line_size_log2) + 1; num_buf = ((s->vma - vma_start) >> htab->line_size_log2) + 1;
set_id = (num_buf == prev_buf)? set_id + 1 : 0; set_id = (num_buf == prev_buf)? set_id + 1 : 0;
@ -785,7 +785,7 @@ spu_elf_find_overlays (struct bfd_link_info *info)
if (spu_elf_section_data (s0)->u.o.ovl_index == 0) if (spu_elf_section_data (s0)->u.o.ovl_index == 0)
{ {
++num_buf; ++num_buf;
if (strncmp (s0->name, ".ovl.init", 9) != 0) if (!startswith (s0->name, ".ovl.init"))
{ {
alloc_sec[ovl_index] = s0; alloc_sec[ovl_index] = s0;
spu_elf_section_data (s0)->u.o.ovl_index = ++ovl_index; spu_elf_section_data (s0)->u.o.ovl_index = ++ovl_index;
@ -794,7 +794,7 @@ spu_elf_find_overlays (struct bfd_link_info *info)
else else
ovl_end = s->vma + s->size; ovl_end = s->vma + s->size;
} }
if (strncmp (s->name, ".ovl.init", 9) != 0) if (!startswith (s->name, ".ovl.init"))
{ {
alloc_sec[ovl_index] = s; alloc_sec[ovl_index] = s;
spu_elf_section_data (s)->u.o.ovl_index = ++ovl_index; spu_elf_section_data (s)->u.o.ovl_index = ++ovl_index;
@ -970,7 +970,7 @@ needs_ovl_stub (struct elf_link_hash_entry *h,
/* setjmp always goes via an overlay stub, because then the return /* setjmp always goes via an overlay stub, because then the return
and hence the longjmp goes via __ovly_return. That magically and hence the longjmp goes via __ovly_return. That magically
makes setjmp/longjmp between overlays work. */ makes setjmp/longjmp between overlays work. */
if (strncmp (h->root.root.string, "setjmp", 6) == 0 if (startswith (h->root.root.string, "setjmp")
&& (h->root.root.string[6] == '\0' || h->root.root.string[6] == '@')) && (h->root.root.string[6] == '\0' || h->root.root.string[6] == '@'))
ret = call_ovl_stub; ret = call_ovl_stub;
} }
@ -1496,7 +1496,7 @@ allocate_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
if ((h->root.type == bfd_link_hash_defined if ((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak) || h->root.type == bfd_link_hash_defweak)
&& h->def_regular && h->def_regular
&& strncmp (h->root.root.string, "_SPUEAR_", 8) == 0 && startswith (h->root.root.string, "_SPUEAR_")
&& (sym_sec = h->root.u.def.section) != NULL && (sym_sec = h->root.u.def.section) != NULL
&& sym_sec->output_section != bfd_abs_section_ptr && sym_sec->output_section != bfd_abs_section_ptr
&& spu_elf_section_data (sym_sec->output_section) != NULL && spu_elf_section_data (sym_sec->output_section) != NULL
@ -1521,7 +1521,7 @@ build_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
if ((h->root.type == bfd_link_hash_defined if ((h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak) || h->root.type == bfd_link_hash_defweak)
&& h->def_regular && h->def_regular
&& strncmp (h->root.root.string, "_SPUEAR_", 8) == 0 && startswith (h->root.root.string, "_SPUEAR_")
&& (sym_sec = h->root.u.def.section) != NULL && (sym_sec = h->root.u.def.section) != NULL
&& sym_sec->output_section != bfd_abs_section_ptr && sym_sec->output_section != bfd_abs_section_ptr
&& spu_elf_section_data (sym_sec->output_section) != NULL && spu_elf_section_data (sym_sec->output_section) != NULL
@ -3455,7 +3455,7 @@ mark_overlay_section (struct function_info *fun,
if (!fun->sec->linker_mark if (!fun->sec->linker_mark
&& (htab->params->ovly_flavour != ovly_soft_icache && (htab->params->ovly_flavour != ovly_soft_icache
|| htab->params->non_ia_text || htab->params->non_ia_text
|| strncmp (fun->sec->name, ".text.ia.", 9) == 0 || startswith (fun->sec->name, ".text.ia.")
|| strcmp (fun->sec->name, ".init") == 0 || strcmp (fun->sec->name, ".init") == 0
|| strcmp (fun->sec->name, ".fini") == 0)) || strcmp (fun->sec->name, ".fini") == 0))
{ {
@ -3483,7 +3483,7 @@ mark_overlay_section (struct function_info *fun,
return false; return false;
memcpy (name, ".rodata", sizeof (".rodata")); memcpy (name, ".rodata", sizeof (".rodata"));
} }
else if (strncmp (fun->sec->name, ".text.", 6) == 0) else if (startswith (fun->sec->name, ".text."))
{ {
size_t len = strlen (fun->sec->name); size_t len = strlen (fun->sec->name);
name = bfd_malloc (len + 3); name = bfd_malloc (len + 3);
@ -3492,7 +3492,7 @@ mark_overlay_section (struct function_info *fun,
memcpy (name, ".rodata", sizeof (".rodata")); memcpy (name, ".rodata", sizeof (".rodata"));
memcpy (name + 7, fun->sec->name + 5, len - 4); memcpy (name + 7, fun->sec->name + 5, len - 4);
} }
else if (strncmp (fun->sec->name, ".gnu.linkonce.t.", 16) == 0) else if (startswith (fun->sec->name, ".gnu.linkonce.t."))
{ {
size_t len = strlen (fun->sec->name) + 1; size_t len = strlen (fun->sec->name) + 1;
name = bfd_malloc (len); name = bfd_malloc (len);
@ -3583,7 +3583,7 @@ mark_overlay_section (struct function_info *fun,
a stack! Also, don't mark .ovl.init as an overlay. */ a stack! Also, don't mark .ovl.init as an overlay. */
if (fun->lo + fun->sec->output_offset + fun->sec->output_section->vma if (fun->lo + fun->sec->output_offset + fun->sec->output_section->vma
== info->output_bfd->start_address == info->output_bfd->start_address
|| strncmp (fun->sec->output_section->name, ".ovl.init", 9) == 0) || startswith (fun->sec->output_section->name, ".ovl.init"))
{ {
fun->sec->linker_mark = 0; fun->sec->linker_mark = 0;
if (fun->rodata != NULL) if (fun->rodata != NULL)
@ -4317,7 +4317,7 @@ spu_elf_auto_overlay (struct bfd_link_info *info)
} }
else if ((sec->flags & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD) else if ((sec->flags & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)
&& sec->output_section->owner == info->output_bfd && sec->output_section->owner == info->output_bfd
&& strncmp (sec->output_section->name, ".ovl.init", 9) == 0) && startswith (sec->output_section->name, ".ovl.init"))
fixed_size -= sec->size; fixed_size -= sec->size;
if (count != old_count) if (count != old_count)
bfd_arr[bfd_count++] = ibfd; bfd_arr[bfd_count++] = ibfd;
@ -5156,7 +5156,7 @@ spu_elf_output_symbol_hook (struct bfd_link_info *info,
&& (h->root.type == bfd_link_hash_defined && (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak) || h->root.type == bfd_link_hash_defweak)
&& h->def_regular && h->def_regular
&& strncmp (h->root.root.string, "_SPUEAR_", 8) == 0) && startswith (h->root.root.string, "_SPUEAR_"))
{ {
struct got_entry *g; struct got_entry *g;

View File

@ -2332,7 +2332,7 @@ tilepro_elf_size_dynamic_sections (bfd *output_bfd,
/* Strip this section if we don't need it; see the /* Strip this section if we don't need it; see the
comment below. */ comment below. */
} }
else if (strncmp (s->name, ".rela", 5) == 0) else if (startswith (s->name, ".rela"))
{ {
if (s->size != 0) if (s->size != 0)
{ {

View File

@ -11260,7 +11260,7 @@ xtensa_property_section_name (asection *sec, const char *base_name,
suffix = 0; suffix = 0;
prop_sec_name = xtensa_add_names (base_name, suffix); prop_sec_name = xtensa_add_names (base_name, suffix);
} }
else if (strncmp (sec->name, ".gnu.linkonce.", linkonce_len) == 0) else if (startswith (sec->name, ".gnu.linkonce."))
{ {
char *linkonce_kind = 0; char *linkonce_kind = 0;

View File

@ -2042,8 +2042,8 @@ ppc64_elf_section_flags (const Elf_Internal_Shdr *hdr)
{ {
const char *name = hdr->bfd_section->name; const char *name = hdr->bfd_section->name;
if (strncmp (name, ".sbss", 5) == 0 if (startswith (name, ".sbss")
|| strncmp (name, ".sdata", 6) == 0) || startswith (name, ".sdata"))
hdr->bfd_section->flags |= SEC_SMALL_DATA; hdr->bfd_section->flags |= SEC_SMALL_DATA;
return true; return true;
@ -15873,7 +15873,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
if (*name == '.') if (*name == '.')
++name; ++name;
if (strncmp (name, "__libc_start_main", 17) == 0 if (startswith (name, "__libc_start_main")
&& (name[17] == 0 || name[17] == '@')) && (name[17] == 0 || name[17] == '@'))
{ {
/* Allow crt1 branch to go via a toc adjusting /* Allow crt1 branch to go via a toc adjusting

View File

@ -8719,7 +8719,7 @@ resolve_section (const char *name,
if (strncmp (curr->name, name, len) == 0) if (strncmp (curr->name, name, len) == 0)
{ {
if (strncmp (".end", name + len, 4) == 0) if (startswith (name + len, ".end"))
{ {
*result = (curr->vma *result = (curr->vma
+ curr->size / bfd_octets_per_byte (abfd, curr)); + curr->size / bfd_octets_per_byte (abfd, curr));
@ -8832,7 +8832,7 @@ eval_symbol (bfd_vma *result,
/* All that remains are operators. */ /* All that remains are operators. */
#define UNARY_OP(op) \ #define UNARY_OP(op) \
if (strncmp (sym, #op, strlen (#op)) == 0) \ if (startswith (sym, #op)) \
{ \ { \
sym += strlen (#op); \ sym += strlen (#op); \
if (*sym == ':') \ if (*sym == ':') \
@ -8849,7 +8849,7 @@ eval_symbol (bfd_vma *result,
} }
#define BINARY_OP_HEAD(op) \ #define BINARY_OP_HEAD(op) \
if (strncmp (sym, #op, strlen (#op)) == 0) \ if (startswith (sym, #op)) \
{ \ { \
sym += strlen (#op); \ sym += strlen (#op); \
if (*sym == ':') \ if (*sym == ':') \
@ -11196,10 +11196,10 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
/* We need to reverse-copy input .ctors/.dtors sections if /* We need to reverse-copy input .ctors/.dtors sections if
they are placed in .init_array/.finit_array for output. */ they are placed in .init_array/.finit_array for output. */
if (o->size > address_size if (o->size > address_size
&& ((strncmp (o->name, ".ctors", 6) == 0 && ((startswith (o->name, ".ctors")
&& strcmp (o->output_section->name, && strcmp (o->output_section->name,
".init_array") == 0) ".init_array") == 0)
|| (strncmp (o->name, ".dtors", 6) == 0 || (startswith (o->name, ".dtors")
&& strcmp (o->output_section->name, && strcmp (o->output_section->name,
".fini_array") == 0)) ".fini_array") == 0))
&& (o->name[6] == 0 || o->name[6] == '.')) && (o->name[6] == 0 || o->name[6] == '.'))

View File

@ -1515,7 +1515,7 @@ riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
/* Strip this section if we don't need it; see the /* Strip this section if we don't need it; see the
comment below. */ comment below. */
} }
else if (strncmp (s->name, ".rela", 5) == 0) else if (startswith (s->name, ".rela"))
{ {
if (s->size != 0) if (s->size != 0)
{ {

View File

@ -1802,12 +1802,12 @@ riscv_parse_subset (riscv_parse_subset_t *rps,
} }
p = arch; p = arch;
if (strncmp (p, "rv32", 4) == 0) if (startswith (p, "rv32"))
{ {
*rps->xlen = 32; *rps->xlen = 32;
p += 4; p += 4;
} }
else if (strncmp (p, "rv64", 4) == 0) else if (startswith (p, "rv64"))
{ {
*rps->xlen = 64; *rps->xlen = 64;
p += 4; p += 4;

View File

@ -2578,7 +2578,7 @@ tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
/* Strip this section if we don't need it; see the /* Strip this section if we don't need it; see the
comment below. */ comment below. */
} }
else if (strncmp (s->name, ".rela", 5) == 0) else if (startswith (s->name, ".rela"))
{ {
if (s->size != 0) if (s->size != 0)
{ {

View File

@ -1904,7 +1904,7 @@ get_build_id (bfd *abfd)
if (inote.descsz <= 0 if (inote.descsz <= 0
|| inote.type != NT_GNU_BUILD_ID || inote.type != NT_GNU_BUILD_ID
|| inote.namesz != 4 /* sizeof "GNU" */ || inote.namesz != 4 /* sizeof "GNU" */
|| strncmp (inote.namedata, "GNU", 4) != 0 || !startswith (inote.namedata, "GNU")
|| inote.descsz > 0x7ffffffe || inote.descsz > 0x7ffffffe
|| size < (12 + BFD_ALIGN (inote.namesz, 4) + inote.descsz)) || size < (12 + BFD_ALIGN (inote.namesz, 4) + inote.descsz))
{ {

View File

@ -1,3 +1,11 @@
2021-04-01 Martin Liska <mliska@suse.cz>
* dllwrap.c: Use startswith function.
* objcopy.c (is_dwo_section): Likewise.
(handle_remove_section_option): Likewise.
(copy_main): Likewise.
* objdump.c (is_significant_symbol_name): Likewise.
2021-04-01 Martin Liska <mliska@suse.cz> 2021-04-01 Martin Liska <mliska@suse.cz>
* dwarf.c (display_debug_lines_raw): Replace const_strneq with * dwarf.c (display_debug_lines_raw): Replace const_strneq with

View File

@ -840,11 +840,11 @@ Creating one, but that may not be what you want"));
else else
which_target = UNKNOWN_TARGET; which_target = UNKNOWN_TARGET;
if (! strncmp (target, "arm", 3)) if (startswith (target, "arm"))
which_cpu = ARM_CPU; which_cpu = ARM_CPU;
else if (!strncmp (target, "x86_64", 6) else if (startswith (target, "x86_64")
|| !strncmp (target, "athlon64", 8) || startswith (target, "athlon64")
|| !strncmp (target, "amd64", 5)) || startswith (target, "amd64"))
which_cpu = X64_CPU; which_cpu = X64_CPU;
else if (target[0] == 'i' && (target[1] >= '3' && target[1] <= '6') else if (target[0] == 'i' && (target[1] >= '3' && target[1] <= '6')
&& target[2] == '8' && target[3] == '6') && target[2] == '8' && target[3] == '6')

View File

@ -1285,7 +1285,7 @@ is_dwo_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
if (len < 5) if (len < 5)
return false; return false;
return strncmp (name + len - 4, ".dwo", 4) == 0; return startswith (name + len - 4, ".dwo");
} }
/* Return TRUE if section SEC is in the update list. */ /* Return TRUE if section SEC is in the update list. */
@ -4261,7 +4261,7 @@ static void
handle_remove_section_option (const char *section_pattern) handle_remove_section_option (const char *section_pattern)
{ {
find_section_list (section_pattern, true, SECTION_CONTEXT_REMOVE); find_section_list (section_pattern, true, SECTION_CONTEXT_REMOVE);
if (strncmp (section_pattern, ".rel", 4) == 0) if (startswith (section_pattern, ".rel"))
{ {
section_pattern += 4; section_pattern += 4;
if (*section_pattern == 'a') if (*section_pattern == 'a')
@ -5875,15 +5875,15 @@ copy_main (int argc, char *argv[])
/* Convert input EFI target to PEI target. */ /* Convert input EFI target to PEI target. */
if (input_target != NULL if (input_target != NULL
&& strncmp (input_target, "efi-", 4) == 0) && startswith (input_target, "efi-"))
{ {
char *efi; char *efi;
efi = xstrdup (output_target + 4); efi = xstrdup (output_target + 4);
if (strncmp (efi, "bsdrv-", 6) == 0 if (startswith (efi, "bsdrv-")
|| strncmp (efi, "rtdrv-", 6) == 0) || startswith (efi, "rtdrv-"))
efi += 2; efi += 2;
else if (strncmp (efi, "app-", 4) != 0) else if (!startswith (efi, "app-"))
fatal (_("unknown input EFI target: %s"), input_target); fatal (_("unknown input EFI target: %s"), input_target);
input_target = efi; input_target = efi;
@ -5892,23 +5892,23 @@ copy_main (int argc, char *argv[])
/* Convert output EFI target to PEI target. */ /* Convert output EFI target to PEI target. */
if (output_target != NULL if (output_target != NULL
&& strncmp (output_target, "efi-", 4) == 0) && startswith (output_target, "efi-"))
{ {
char *efi; char *efi;
efi = xstrdup (output_target + 4); efi = xstrdup (output_target + 4);
if (strncmp (efi, "app-", 4) == 0) if (startswith (efi, "app-"))
{ {
if (pe_subsystem == -1) if (pe_subsystem == -1)
pe_subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION; pe_subsystem = IMAGE_SUBSYSTEM_EFI_APPLICATION;
} }
else if (strncmp (efi, "bsdrv-", 6) == 0) else if (startswith (efi, "bsdrv-"))
{ {
if (pe_subsystem == -1) if (pe_subsystem == -1)
pe_subsystem = IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER; pe_subsystem = IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER;
efi += 2; efi += 2;
} }
else if (strncmp (efi, "rtdrv-", 6) == 0) else if (startswith (efi, "rtdrv-"))
{ {
if (pe_subsystem == -1) if (pe_subsystem == -1)
pe_subsystem = IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER; pe_subsystem = IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER;

View File

@ -821,7 +821,7 @@ slurp_dynamic_symtab (bfd *abfd)
static bool static bool
is_significant_symbol_name (const char * name) is_significant_symbol_name (const char * name)
{ {
return strncmp (name, ".plt", 4) == 0 || strcmp (name, ".got") == 0; return startswith (name, ".plt") || startswith (name, ".got");
} }
/* Filter out (in place) symbols that are useless for disassembly. /* Filter out (in place) symbols that are useless for disassembly.