BFD_ENDIAN_UNKNOWN, /* byteorder */
BFD_ENDIAN_UNKNOWN, /* header_byteorder */
EXEC_P, /* object_flags */
- (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE | SEC_DATA
- | SEC_ROM | SEC_HAS_CONTENTS), /* section_flags */
+ (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
+ | SEC_ALLOC | SEC_LOAD), /* section_flags */
0, /* symbol_leading_char */
' ', /* ar_pad_char */
16, /* ar_max_namelen */
static bool
generic_add_output_symbol (bfd *output_bfd, size_t *psymalloc, asymbol *sym)
{
+ if (!(bfd_applicable_file_flags (output_bfd) & HAS_SYMS))
+ return true;
+
if (bfd_get_symcount (output_bfd) >= *psymalloc)
{
asymbol **newsyms;
if (bfd_write ("$$ ", 3, abfd) != 3
|| bfd_write (bfd_get_filename (abfd), len, abfd) != len
|| bfd_write ("\r\n", 2, abfd) != 2)
- return false;
+ goto fail;
for (i = 0; i < count; i++)
{
len = strlen (s->name);
if (bfd_write (" ", 2, abfd) != 2
|| bfd_write (s->name, len, abfd) != len)
- return false;
+ goto fail;
sprintf (buf, " $%" PRIx64 "\r\n",
(uint64_t) (s->value
+ s->section->output_offset));
len = strlen (buf);
if (bfd_write (buf, len, abfd) != len)
- return false;
+ goto fail;
}
}
if (bfd_write ("$$ \r\n", 5, abfd) != 5)
- return false;
+ goto fail;
}
+ free (abfd->outsymbols);
+ abfd->outsymbols = NULL;
return true;
+
+ fail:
+ free (abfd->outsymbols);
+ abfd->outsymbols = NULL;
+ return false;
}
static bool
bfd_target_srec_flavour,
BFD_ENDIAN_UNKNOWN, /* Target byte order. */
BFD_ENDIAN_UNKNOWN, /* Target headers byte order. */
- (HAS_RELOC | EXEC_P | /* Object flags. */
- HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+ EXEC_P, /* Object flags. */
(SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
+ | SEC_ALLOC | SEC_LOAD), /* Section flags. */
0, /* Leading underscore. */
' ', /* AR_pad_char. */
16, /* AR_max_namelen. */
bfd_target_srec_flavour,
BFD_ENDIAN_UNKNOWN, /* Target byte order. */
BFD_ENDIAN_UNKNOWN, /* Target headers byte order. */
- (HAS_RELOC | EXEC_P | /* Object flags. */
- HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+ EXEC_P | HAS_SYMS, /* Object flags. */
(SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
+ | SEC_ALLOC | SEC_LOAD), /* Section flags. */
0, /* Leading underscore. */
' ', /* AR_pad_char. */
16, /* AR_max_namelen. */
case 'C':
case 'U':
bfd_set_error (bfd_error_wrong_format);
- return false;
+ goto fail;
}
writesym (&dst, sym->name);
/* And the terminator. */
if (bfd_write ("%0781010\n", 9, abfd) != 9)
- abort ();
+ goto fail;
+ free (abfd->outsymbols);
+ abfd->outsymbols = NULL;
return true;
+
+ fail:
+ free (abfd->outsymbols);
+ abfd->outsymbols = NULL;
+ return false;
}
static int
bfd_target_tekhex_flavour,
BFD_ENDIAN_UNKNOWN, /* Target byte order. */
BFD_ENDIAN_UNKNOWN, /* Target headers byte order. */
- (EXEC_P | /* Object flags. */
- HAS_SYMS | HAS_LINENO | HAS_DEBUG |
- HAS_RELOC | HAS_LOCALS | WP_TEXT | D_PAGED),
+ EXEC_P | HAS_SYMS, /* Object flags. */
(SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
+ | SEC_ALLOC | SEC_LOAD), /* Section flags. */
0, /* Leading underscore. */
' ', /* AR_pad_char. */
16, /* AR_max_namelen. */
bfd_target_verilog_flavour,
BFD_ENDIAN_UNKNOWN, /* Target byte order. */
BFD_ENDIAN_UNKNOWN, /* Target headers byte order. */
- (HAS_RELOC | EXEC_P | /* Object flags. */
- HAS_LINENO | HAS_DEBUG |
- HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+ EXEC_P, /* Object flags. */
(SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
- | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */
+ | SEC_ALLOC | SEC_LOAD), /* Section flags. */
0, /* Leading underscore. */
' ', /* AR_pad_char. */
16, /* AR_max_namelen. */