/*SUPPRESS558*/
/*SUPPRESS529*/
-void
- NAME (sunos, set_arch_mach) (abfd, machtype)
+static void
+#if ARCH_SIZE == 64
+sunos_64_set_arch_mach
+#else
+sunos_32_set_arch_mach
+#endif
+ (abfd, machtype)
bfd *abfd;
int machtype;
{
file header, symbols, and relocation. */
static boolean
- NAME (aout, sunos4_write_object_contents) (abfd)
+#if ARCH_SIZE == 64
+aout_64_sunos4_write_object_contents
+#else
+aout_32_sunos4_write_object_contents
+#endif
+ (abfd)
bfd *abfd;
{
struct external_exec exec_bytes;
case bfd_arch_m68k:
switch (bfd_get_mach (abfd))
{
+ case 68000:
+ N_SET_MACHTYPE (*execp, M_UNKNOWN);
+ break;
case 68010:
N_SET_MACHTYPE (*execp, M_68010);
break;
choose_reloc_size (abfd);
-#if 0
- /* Some tools want this to be 0, some tools want this to be one.
- Today, it seems that 0 is the most important setting (PR1927) */
- N_SET_FLAGS (*execp, 0x0);
-#else
-
- /* Fri Jun 11 14:23:31 PDT 1993
- FIXME
- Today's optimal setting is 1. This is a pain, since it
- reopens 1927. This should be readdressed by creating a new
- target for each each supported, giving perhaps sun3/m68k
- and sun4/sparc a.out formats.
- */
- N_SET_FLAGS (*execp, 1);
-#endif
+ N_SET_FLAGS (*execp, aout_backend_info (abfd)->exec_hdr_flags);
N_SET_DYNAMIC (*execp, bfd_get_file_flags (abfd) & DYNAMIC);
- /* At least for SunOS, the dynamic symbols and relocs are embedded
- in the .text section, and we do not want to write them out with
- the symbol table. FIXME: This may be right if there is any other
- form of a.out shared libraries. */
- if ((bfd_get_file_flags (abfd) & DYNAMIC) != 0
- && bfd_get_outsymbols (abfd) != (asymbol **) NULL)
- {
- bfd_size_type i;
- asymbol **sym_ptr_ptr;
- bfd_size_type count;
- arelent **rel_ptr_ptr;
-
- sym_ptr_ptr = bfd_get_outsymbols (abfd);
- count = bfd_get_symcount (abfd);
- for (i = 0; i < count; i++, sym_ptr_ptr++)
- {
- if (((*sym_ptr_ptr)->flags & BSF_DYNAMIC) != 0)
- {
- /* This assumes that all dynamic symbols follow all
- non-dynamic symbols, which is what slurp_symbol_table
- does. */
- *sym_ptr_ptr = NULL;
- bfd_get_symcount (abfd) = i;
- break;
- }
- }
-
- if (obj_textsec (abfd)->reloc_count > 0)
- {
- rel_ptr_ptr = obj_textsec (abfd)->orelocation;
- count = obj_textsec (abfd)->reloc_count;
- for (i = 0; i < count; i++, rel_ptr_ptr++)
- {
- if (((*(*rel_ptr_ptr)->sym_ptr_ptr)->flags & BSF_DYNAMIC) != 0)
- {
- /* This assumes that all relocs against dynamic
- symbols follow all relocs against other symbols,
- which is what slurp_reloc_table does. */
- *rel_ptr_ptr = NULL;
- obj_textsec (abfd)->reloc_count = i;
- break;
- }
- }
- }
-
- if (obj_datasec (abfd)->reloc_count > 0)
- {
- rel_ptr_ptr = obj_datasec (abfd)->orelocation;
- count = obj_datasec (abfd)->reloc_count;
- for (i = 0; i < count; i++, rel_ptr_ptr++)
- {
- if (((*(*rel_ptr_ptr)->sym_ptr_ptr)->flags & BSF_DYNAMIC) != 0)
- {
- *rel_ptr_ptr = NULL;
- obj_datasec (abfd)->reloc_count = i;
- break;
- }
- }
- }
- }
-
WRITE_HEADERS (abfd, execp);
return true;
intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_len);
intcore->c_regs_pos = (long) (((struct external_sun3_core *) 0)->c_regs);
intcore->c_regs_size = sizeof (extcore->c_regs);
- NAME (aout, swap_exec_header_in) (abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
+#if ARCH_SIZE == 64
+ aout_64_swap_exec_header_in
+#else
+ aout_32_swap_exec_header_in
+#endif
+ (abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_signo);
intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_tsize);
intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_dsize);
intcore->c_len = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_len);
intcore->c_regs_pos = (long) (((struct external_sparc_core *) 0)->c_regs);
intcore->c_regs_size = sizeof (extcore->c_regs);
- NAME (aout, swap_exec_header_in) (abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
+#if ARCH_SIZE == 64
+ aout_64_swap_exec_header_in
+#else
+ aout_32_swap_exec_header_in
+#endif
+ (abfd, &extcore->c_aouthdr, &intcore->c_aouthdr);
intcore->c_signo = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_signo);
intcore->c_tsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_tsize);
intcore->c_dsize = bfd_h_get_32 (abfd, (unsigned char *) &extcore->c_dsize);
if ((bfd_read ((PTR) extcore, 1, core_size, abfd)) != core_size)
{
- bfd_set_error (bfd_error_system_call);
bfd_release (abfd, (char *) mergem);
return 0;
}
}
}
-#ifndef MY_read_dynamic_symbols
-#define MY_read_dynamic_symbols 0
+/* We default to setting the toolversion field to 1, as is required by
+ SunOS. */
+#ifndef MY_exec_hdr_flags
+#define MY_exec_hdr_flags 1
+#endif
+
+#ifndef MY_add_dynamic_symbols
+#define MY_add_dynamic_symbols 0
+#endif
+#ifndef MY_add_one_symbol
+#define MY_add_one_symbol 0
+#endif
+#ifndef MY_link_dynamic_object
+#define MY_link_dynamic_object 0
+#endif
+#ifndef MY_write_dynamic_symbol
+#define MY_write_dynamic_symbol 0
+#endif
+#ifndef MY_check_dynamic_reloc
+#define MY_check_dynamic_reloc 0
#endif
-#ifndef MY_read_dynamic_relocs
-#define MY_read_dynamic_relocs 0
+#ifndef MY_finish_dynamic_link
+#define MY_finish_dynamic_link 0
#endif
static CONST struct aout_backend_data sunos4_aout_backend =
{
0, /* zmagic files are not contiguous */
1, /* text includes header */
+ MY_exec_hdr_flags,
0, /* default text vma */
sunos4_set_sizes,
0, /* header is counted in zmagic text */
- MY_read_dynamic_symbols,
- MY_read_dynamic_relocs
+ MY_add_dynamic_symbols,
+ MY_add_one_symbol,
+ MY_link_dynamic_object,
+ MY_write_dynamic_symbol,
+ MY_check_dynamic_reloc,
+ MY_finish_dynamic_link
};
\f
#define MY_core_file_failing_command sunos4_core_file_failing_command