/* Generic BFD library interface and support routines.
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Written by Cygnus Support.
. to any input file. *}
.#define BFD_LINKER_CREATED 0x2000
.
+. {* This may be set before writing out a BFD to request that it
+. be written using values for UIDs, GIDs, timestamps, etc. that
+. will be consistent from run to run. *}
+.#define BFD_DETERMINISTIC_OUTPUT 0x4000
+.
. {* Currently my_archive is tested before adding origin to
. anything. I believe that this can become always an add of
. origin, with origin set to 0 for non archive files. *}
. {* Used for input and output. *}
. unsigned int symcount;
.
-. {* Symbol table for output BFD (with symcount entries). *}
+. {* Symbol table for output BFD (with symcount entries).
+. Also used by the linker to cache input BFD symbols. *}
. struct bfd_symbol **outsymbols;
.
. {* Used for slurped dynamic symbol tables. *}
. struct ieee_data_struct *ieee_data;
. struct ieee_ar_data_struct *ieee_ar_data;
. struct srec_data_struct *srec_data;
+. struct verilog_data_struct *verilog_data;
. struct ihex_data_struct *ihex_data;
. struct tekhex_data_struct *tekhex_data;
. struct elf_obj_tdata *elf_obj_data;
. struct netbsd_core_struct *netbsd_core_data;
. struct mach_o_data_struct *mach_o_data;
. struct mach_o_fat_data_struct *mach_o_fat_data;
+. struct plugin_data_struct *plugin_data;
. struct bfd_pef_data_struct *pef_data;
. struct bfd_pef_xlib_data_struct *pef_xlib_data;
. struct bfd_sym_data_struct *sym_data;
|| strcmp (name, "pei-arm-wince-little") == 0)
return 1;
+ if (CONST_STRNEQ (name, "mach-o"))
+ return 0;
+
bfd_set_error (bfd_error_wrong_format);
return -1;
}
return bed->s->elfclass == ELFCLASS32;
}
- /* For non-ELF, make a guess based on the target name. */
- return (strstr (bfd_get_target (abfd), "64") == NULL
- && strcmp (bfd_get_target (abfd), "mmo") != 0);
+ /* For non-ELF targets, use architecture information. */
+ return bfd_arch_bits_per_address (abfd) <= 32;
}
#endif
char *res, *alloc;
const char *pre, *suf;
size_t pre_len;
+ bfd_boolean skip_lead;
- if (abfd != NULL
- && *name != '\0'
- && bfd_get_symbol_leading_char (abfd) == *name)
+ skip_lead = (abfd != NULL
+ && *name != '\0'
+ && bfd_get_symbol_leading_char (abfd) == *name);
+ if (skip_lead)
++name;
/* This is a hack for better error reporting on XCOFF, PowerPC64-ELF
free (alloc);
if (res == NULL)
- return NULL;
+ {
+ if (skip_lead)
+ {
+ size_t len = strlen (pre) + 1;
+ alloc = bfd_malloc (len);
+ if (alloc == NULL)
+ return NULL;
+ memcpy (alloc, pre, len);
+ return alloc;
+ }
+ return NULL;
+ }
/* Put back any prefix or suffix. */
if (pre_len != 0 || suf != NULL)