aboutsummaryrefslogtreecommitdiff
path: root/bfd/aoutf1.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1994-06-13 18:25:12 +0000
committerIan Lance Taylor <ian@airs.com>1994-06-13 18:25:12 +0000
commit9ae74960a87e149d8deaa40ce0cfed81486ae160 (patch)
treecfad0efc29a49c18ebd843441b6a0254679a17fd /bfd/aoutf1.h
parenta5183648b2eff855d0c4f7883408c9249ecfdf15 (diff)
downloadgdb-9ae74960a87e149d8deaa40ce0cfed81486ae160.zip
gdb-9ae74960a87e149d8deaa40ce0cfed81486ae160.tar.gz
gdb-9ae74960a87e149d8deaa40ce0cfed81486ae160.tar.bz2
* aoutf1.h (aout_32_sunos4_write_object_contents): Handle a
machine type of 68000. * aoutx.h (NAME(aout,machine_type)): Add new argument unknown. Set *unknown to true if machine type is really unknown, as opposed to M_UNKNOWN for the 68000. (NAME(aout,set_arch_mach)): Change NAME(aout,machine_type) call accordingly. * libaout.h (NAME(aout,machine_type)): Add new argument to prototype.
Diffstat (limited to 'bfd/aoutf1.h')
-rw-r--r--bfd/aoutf1.h117
1 files changed, 34 insertions, 83 deletions
diff --git a/bfd/aoutf1.h b/bfd/aoutf1.h
index 167f828..d78de7f 100644
--- a/bfd/aoutf1.h
+++ b/bfd/aoutf1.h
@@ -63,7 +63,7 @@ The name put into the target vector.
/*SUPPRESS558*/
/*SUPPRESS529*/
-void
+static void
#if ARCH_SIZE == 64
sunos_64_set_arch_mach
#else
@@ -170,6 +170,9 @@ aout_32_sunos4_write_object_contents
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;
@@ -194,85 +197,10 @@ aout_32_sunos4_write_object_contents
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;
@@ -690,22 +618,45 @@ sunos4_set_sizes (abfd)
}
}
-#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
};
#define MY_core_file_failing_command sunos4_core_file_failing_command