Found when building with gcc 4.9.4 using -Og.
bfd/
* elf-eh-frame.c (offset_adjust): Avoid false positive gcc warning.
* elflink.c (bfd_elf_size_dynsym_hash_dynstr): Likewise.
* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Likewise.
ld/
* emultempl/msp430.em (eval_upper_either_sections): Make base_sec_name
a const char*.
(eval_lower_either_sections): Likewise.
(msp430_elf_after_allocation): Likewise, and don't needlessly concat
and free. Warning fix.
+2017-09-02 Alan Modra <amodra@gmail.com>
+
+ * elf-eh-frame.c (offset_adjust): Avoid false positive gcc warning.
+ * elflink.c (bfd_elf_size_dynsym_hash_dynstr): Likewise.
+ * elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Likewise.
+
2017-09-01 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_gc_mark_hook): Removed.
2017-09-01 H.J. Lu <hongjiu.lu@intel.com>
* elf32-i386.c (elf_i386_gc_mark_hook): Removed.
struct eh_frame_sec_info *sec_info
= (struct eh_frame_sec_info *) elf_section_data (sec)->sec_info;
unsigned int lo, hi, mid;
struct eh_frame_sec_info *sec_info
= (struct eh_frame_sec_info *) elf_section_data (sec)->sec_info;
unsigned int lo, hi, mid;
- struct eh_cie_fde *ent;
+ struct eh_cie_fde *ent = NULL;
bfd_signed_vma delta;
lo = 0;
bfd_signed_vma delta;
lo = 0;
{
const struct elf_backend_data *bed;
unsigned long section_sym_count;
{
const struct elf_backend_data *bed;
unsigned long section_sym_count;
- bfd_size_type dynsymcount;
+ bfd_size_type dynsymcount = 0;
if (!is_elf_hash_table (info->hash))
return TRUE;
if (!is_elf_hash_table (info->hash))
return TRUE;
= elfNN_aarch64_bfd_reloc_from_howto (howto);
unsigned long r_symndx;
bfd_byte *hit_data = contents + rel->r_offset;
= elfNN_aarch64_bfd_reloc_from_howto (howto);
unsigned long r_symndx;
bfd_byte *hit_data = contents + rel->r_offset;
- bfd_vma place, off, got_entry_addr;
+ bfd_vma place, off, got_entry_addr = 0;
bfd_signed_vma signed_addend;
struct elf_aarch64_link_hash_table *globals;
bfd_boolean weak_undef_p;
bfd_signed_vma signed_addend;
struct elf_aarch64_link_hash_table *globals;
bfd_boolean weak_undef_p;
+2017-09-02 Alan Modra <amodra@gmail.com>
+
+ * emultempl/msp430.em (eval_upper_either_sections): Make base_sec_name
+ a const char*.
+ (eval_lower_either_sections): Likewise.
+ (msp430_elf_after_allocation): Likewise, and don't needlessly concat
+ and free. Warning fix.
+
2017-09-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/22061
2017-09-01 H.J. Lu <hongjiu.lu@intel.com>
PR ld/22061
static void
eval_upper_either_sections (bfd *abfd, asection *s, void *data)
{
static void
eval_upper_either_sections (bfd *abfd, asection *s, void *data)
{
+ const char * base_sec_name;
const char * curr_name;
char * either_name;
int curr_region;
const char * curr_name;
char * either_name;
int curr_region;
if (bfd_link_relocatable (&link_info))
return;
if (bfd_link_relocatable (&link_info))
return;
- base_sec_name = (char *) data;
+ base_sec_name = (const char *) data;
curr_name = bfd_get_section_name (abfd, s);
/* Only concerned with .either input sections in the upper output section. */
curr_name = bfd_get_section_name (abfd, s);
/* Only concerned with .either input sections in the upper output section. */
static void
eval_lower_either_sections (bfd *abfd, asection *s, void *data)
{
static void
eval_lower_either_sections (bfd *abfd, asection *s, void *data)
{
+ const char * base_sec_name;
const char * curr_name;
char * either_name;
int curr_region;
const char * curr_name;
char * either_name;
int curr_region;
if (bfd_link_relocatable (&link_info))
return;
if (bfd_link_relocatable (&link_info))
return;
- base_sec_name = (char *) data;
+ base_sec_name = (const char *) data;
curr_name = bfd_get_section_name (abfd, s);
/* Only concerned with .either input sections in the lower or "default"
curr_name = bfd_get_section_name (abfd, s);
/* Only concerned with .either input sections in the lower or "default"
msp430_elf_after_allocation (void)
{
int relax_count = 0;
msp430_elf_after_allocation (void)
{
int relax_count = 0;
/* Go over each section twice, once to place either sections that don't fit
in lower into upper, and then again to move any sections in upper that
fit in lower into lower. */
for (i = 0; i < 8; i++)
{
int placement_stage = (i < 4) ? LOWER_TO_UPPER : UPPER_TO_LOWER;
/* Go over each section twice, once to place either sections that don't fit
in lower into upper, and then again to move any sections in upper that
fit in lower into lower. */
for (i = 0; i < 8; i++)
{
int placement_stage = (i < 4) ? LOWER_TO_UPPER : UPPER_TO_LOWER;
+ const char * base_sec_name;
lang_output_section_statement_type * upper;
switch (i % 4)
{
lang_output_section_statement_type * upper;
switch (i % 4)
{
- base_sec_name = concat (".text", NULL);
+ base_sec_name = ".text";
- base_sec_name = concat (".data", NULL);
+ base_sec_name = ".data";
- base_sec_name = concat (".bss", NULL);
+ base_sec_name = ".bss";
- base_sec_name = concat (".rodata", NULL);
+ base_sec_name = ".rodata";
break;
}
upper = lang_output_section_find (concat (".upper", base_sec_name, NULL));
break;
}
upper = lang_output_section_find (concat (".upper", base_sec_name, NULL));
abfd = abfd->link.next)
{
bfd_map_over_sections (abfd, eval_lower_either_sections,
abfd = abfd->link.next)
{
bfd_map_over_sections (abfd, eval_lower_either_sections,
+ (void *) base_sec_name);
}
}
else if (placement_stage == UPPER_TO_LOWER)
}
}
else if (placement_stage == UPPER_TO_LOWER)
abfd = abfd->link.next)
{
bfd_map_over_sections (abfd, eval_upper_either_sections,
abfd = abfd->link.next)
{
bfd_map_over_sections (abfd, eval_upper_either_sections,
+ (void *) base_sec_name);
}
gld${EMULATION_NAME}_after_allocation ();
}
}
gld${EMULATION_NAME}_after_allocation ();
}