* config/obj-som.c (obj_read_begin_hook): Delete unused function.
* config/obj-som.h (obj_read_begin_hook): Provide dummy definition. (TARGET_SYMBOL_FIELDS): Delete. SOM isn't making use of them.
This commit is contained in:
parent
9934dce825
commit
42ecb40985
|
@ -1,5 +1,9 @@
|
|||
Sun Dec 5 17:05:29 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
||||
|
||||
* config/obj-som.c (obj_read_begin_hook): Delete unused function.
|
||||
* config/obj-som.h (obj_read_begin_hook): Provide dummy definition.
|
||||
(TARGET_SYMBOL_FIELDS): Delete. SOM isn't making use of them.
|
||||
|
||||
* config/tc-hppa.c (tc_gen_reloc, SOM version): Handle relocation
|
||||
expansion due to rounding mode selectors. Handle R_[RDSN]_MODE
|
||||
relocations for selecting the current rounding mode.
|
||||
|
|
|
@ -32,13 +32,6 @@ const pseudo_typeS obj_pseudo_table[] =
|
|||
{NULL}
|
||||
};
|
||||
|
||||
/* SOM does not use this. */
|
||||
|
||||
void
|
||||
obj_read_begin_hook ()
|
||||
{
|
||||
}
|
||||
|
||||
/* Handle a .version directive. FIXME. We just parse the .version
|
||||
directive and throw away the results!. */
|
||||
|
||||
|
@ -46,7 +39,7 @@ void
|
|||
obj_som_version (unused)
|
||||
int unused;
|
||||
{
|
||||
SKIP_WHITESPACE ()
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '\"')
|
||||
{
|
||||
++input_line_pointer;
|
||||
|
@ -71,27 +64,91 @@ void
|
|||
obj_som_init_stab_section (seg)
|
||||
segT seg;
|
||||
{
|
||||
segT saved_seg = now_seg, space;
|
||||
segT saved_seg = now_seg;
|
||||
segT space;
|
||||
subsegT saved_subseg = now_subseg;
|
||||
char *p, *file;
|
||||
unsigned int stroff;
|
||||
|
||||
/* Make the space which will contain the debug subspaces. */
|
||||
space = bfd_make_section_old_way (stdoutput, "$GDB_DEBUG$");
|
||||
|
||||
/* Set SOM specific attributes for the space. In particular we set
|
||||
the space "defined", "private", "sort_key", and "spnum" values. */
|
||||
obj_set_section_attributes (space, 1, 1, 255, 2);
|
||||
the space "defined", "private", "sort_key", and "spnum" values.
|
||||
|
||||
Due to a bug in pxdb (called by hpux linker), the sort keys
|
||||
of the various stabs spaces/subspaces need to be "small". We
|
||||
reserve range 72/73 which appear to work well. */
|
||||
obj_set_section_attributes (space, 1, 1, 72, 2);
|
||||
bfd_set_section_alignment (stdoutput, space, 2);
|
||||
|
||||
/* Set the containing space for both stab sections to be $GDB_DEBUG$
|
||||
(just created above). Also set some attributes which BFD does
|
||||
not understand. In particular, access bits, sort keys, and load
|
||||
quadrant. */
|
||||
obj_set_subsection_attributes (seg, space, 0x1f, 255, 0);
|
||||
obj_set_subsection_attributes (seg, space, 0x1f, 73, 0);
|
||||
bfd_set_section_alignment (stdoutput, seg, 2);
|
||||
|
||||
/* Likewise for the $GDB_STRINGS$ subspace. Note the section
|
||||
hasn't been created at the time of this call, so we create
|
||||
it now. */
|
||||
seg = subseg_new ("$GDB_STRINGS$", 0);
|
||||
obj_set_subsection_attributes (seg, space, 0x1f, 254, 0);
|
||||
/* Make some space for the first stab entry which is special.
|
||||
It contains information about the length of this file's
|
||||
stab string and the like. Using it avoids the need to
|
||||
relocate the stab strings.
|
||||
|
||||
The $GDB_STRINGS$ space will be created as a side effect of
|
||||
the call to get_stab_string_offset. */
|
||||
p = frag_more (12);
|
||||
as_where (&file, (unsigned int *) NULL);
|
||||
stroff = get_stab_string_offset (file, "$GDB_STRINGS$");
|
||||
know (stroff == 1);
|
||||
md_number_to_chars (p, stroff, 4);
|
||||
seg_info (seg)->stabu.p = p;
|
||||
|
||||
/* Set the containing space for both stab sections to be $GDB_DEBUG$
|
||||
(just created above). Also set some attributes which BFD does
|
||||
not understand. In particular, access bits, sort keys, and load
|
||||
quadrant. */
|
||||
seg = bfd_get_section_by_name (stdoutput, "$GDB_STRINGS$");
|
||||
obj_set_subsection_attributes (seg, space, 0x1f, 72, 0);
|
||||
bfd_set_section_alignment (stdoutput, seg, 2);
|
||||
|
||||
subseg_set (saved_seg, saved_subseg);
|
||||
}
|
||||
|
||||
/* Fill in the counts in the first entry in a .stabs section. */
|
||||
|
||||
static void
|
||||
adjust_stab_sections (abfd, sec, xxx)
|
||||
bfd *abfd;
|
||||
asection *sec;
|
||||
PTR xxx;
|
||||
{
|
||||
asection *strsec;
|
||||
char *p;
|
||||
int strsz, nsyms;
|
||||
|
||||
if (strcmp ("$GDB_SYMBOLS$", sec->name))
|
||||
return;
|
||||
|
||||
strsec = bfd_get_section_by_name (abfd, "$GDB_STRINGS$");
|
||||
if (strsec)
|
||||
strsz = bfd_section_size (abfd, strsec);
|
||||
else
|
||||
strsz = 0;
|
||||
nsyms = bfd_section_size (abfd, sec) / 12 - 1;
|
||||
|
||||
p = seg_info (sec)->stabu.p;
|
||||
assert (p != 0);
|
||||
|
||||
bfd_h_put_16 (abfd, (bfd_vma) nsyms, (bfd_byte *) p + 6);
|
||||
bfd_h_put_32 (abfd, (bfd_vma) strsz, (bfd_byte *) p + 8);
|
||||
}
|
||||
|
||||
/* Called late in the asssembly phase to adjust the special
|
||||
stab entry. This is where any other late object-file dependent
|
||||
processing which should happen. */
|
||||
|
||||
void
|
||||
som_frob_file ()
|
||||
{
|
||||
bfd_map_over_sections (stdoutput, adjust_stab_sections, (PTR) 0);
|
||||
}
|
||||
|
|
|
@ -34,9 +34,6 @@
|
|||
#define TRUE !FALSE
|
||||
#endif
|
||||
|
||||
#define TARGET_SYMBOL_FIELDS int local:1; unsigned long sy_name_offset;
|
||||
|
||||
|
||||
/* should be conditional on address size! */
|
||||
#define som_symbol(asymbol) ((som_symbol_type *)(&(asymbol)->the_bfd))
|
||||
|
||||
|
@ -54,6 +51,7 @@ extern void obj_som_version PARAMS ((int));
|
|||
extern void obj_som_init_stab_section PARAMS ((segT));
|
||||
|
||||
#define obj_symbol_new_hook(s) {;}
|
||||
#define obj_read_begin_hook() {;}
|
||||
|
||||
/* SOM has several attributes for spaces/subspaces which can not
|
||||
be easily expressed in BFD. We use these macros to trigger calls
|
||||
|
@ -64,6 +62,10 @@ extern void obj_som_init_stab_section PARAMS ((segT));
|
|||
/* Likewise for symbol types. */
|
||||
#define obj_set_symbol_type bfd_som_set_symbol_type
|
||||
|
||||
/* This is the trigger for calling a BFD routine to attach unwind
|
||||
information to a function symbol. */
|
||||
#define obj_attach_unwind_info bfd_som_attach_unwind_info
|
||||
|
||||
/* Stabs go in a separate sections. GDB expects to find them in sections
|
||||
with the names $GDB_SYMBOLS$ and $GDB_STRINGS$ rather than .stab and
|
||||
.stabstr. */
|
||||
|
|
Loading…
Reference in New Issue