mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
* 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:
@ -1,5 +1,9 @@
|
|||||||
Sun Dec 5 17:05:29 1993 Jeffrey A. Law (law@snake.cs.utah.edu)
|
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
|
* config/tc-hppa.c (tc_gen_reloc, SOM version): Handle relocation
|
||||||
expansion due to rounding mode selectors. Handle R_[RDSN]_MODE
|
expansion due to rounding mode selectors. Handle R_[RDSN]_MODE
|
||||||
relocations for selecting the current rounding mode.
|
relocations for selecting the current rounding mode.
|
||||||
|
@ -32,13 +32,6 @@ const pseudo_typeS obj_pseudo_table[] =
|
|||||||
{NULL}
|
{NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* SOM does not use this. */
|
|
||||||
|
|
||||||
void
|
|
||||||
obj_read_begin_hook ()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle a .version directive. FIXME. We just parse the .version
|
/* Handle a .version directive. FIXME. We just parse the .version
|
||||||
directive and throw away the results!. */
|
directive and throw away the results!. */
|
||||||
|
|
||||||
@ -46,7 +39,7 @@ void
|
|||||||
obj_som_version (unused)
|
obj_som_version (unused)
|
||||||
int unused;
|
int unused;
|
||||||
{
|
{
|
||||||
SKIP_WHITESPACE ()
|
SKIP_WHITESPACE ();
|
||||||
if (*input_line_pointer == '\"')
|
if (*input_line_pointer == '\"')
|
||||||
{
|
{
|
||||||
++input_line_pointer;
|
++input_line_pointer;
|
||||||
@ -71,27 +64,91 @@ void
|
|||||||
obj_som_init_stab_section (seg)
|
obj_som_init_stab_section (seg)
|
||||||
segT seg;
|
segT seg;
|
||||||
{
|
{
|
||||||
segT saved_seg = now_seg, space;
|
segT saved_seg = now_seg;
|
||||||
|
segT space;
|
||||||
subsegT saved_subseg = now_subseg;
|
subsegT saved_subseg = now_subseg;
|
||||||
|
char *p, *file;
|
||||||
|
unsigned int stroff;
|
||||||
|
|
||||||
/* Make the space which will contain the debug subspaces. */
|
/* Make the space which will contain the debug subspaces. */
|
||||||
space = bfd_make_section_old_way (stdoutput, "$GDB_DEBUG$");
|
space = bfd_make_section_old_way (stdoutput, "$GDB_DEBUG$");
|
||||||
|
|
||||||
/* Set SOM specific attributes for the space. In particular we set
|
/* Set SOM specific attributes for the space. In particular we set
|
||||||
the space "defined", "private", "sort_key", and "spnum" values. */
|
the space "defined", "private", "sort_key", and "spnum" values.
|
||||||
obj_set_section_attributes (space, 1, 1, 255, 2);
|
|
||||||
|
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$
|
/* Set the containing space for both stab sections to be $GDB_DEBUG$
|
||||||
(just created above). Also set some attributes which BFD does
|
(just created above). Also set some attributes which BFD does
|
||||||
not understand. In particular, access bits, sort keys, and load
|
not understand. In particular, access bits, sort keys, and load
|
||||||
quadrant. */
|
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
|
/* Make some space for the first stab entry which is special.
|
||||||
hasn't been created at the time of this call, so we create
|
It contains information about the length of this file's
|
||||||
it now. */
|
stab string and the like. Using it avoids the need to
|
||||||
seg = subseg_new ("$GDB_STRINGS$", 0);
|
relocate the stab strings.
|
||||||
obj_set_subsection_attributes (seg, space, 0x1f, 254, 0);
|
|
||||||
|
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);
|
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
|
#define TRUE !FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TARGET_SYMBOL_FIELDS int local:1; unsigned long sy_name_offset;
|
|
||||||
|
|
||||||
|
|
||||||
/* should be conditional on address size! */
|
/* should be conditional on address size! */
|
||||||
#define som_symbol(asymbol) ((som_symbol_type *)(&(asymbol)->the_bfd))
|
#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));
|
extern void obj_som_init_stab_section PARAMS ((segT));
|
||||||
|
|
||||||
#define obj_symbol_new_hook(s) {;}
|
#define obj_symbol_new_hook(s) {;}
|
||||||
|
#define obj_read_begin_hook() {;}
|
||||||
|
|
||||||
/* SOM has several attributes for spaces/subspaces which can not
|
/* SOM has several attributes for spaces/subspaces which can not
|
||||||
be easily expressed in BFD. We use these macros to trigger calls
|
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. */
|
/* Likewise for symbol types. */
|
||||||
#define obj_set_symbol_type bfd_som_set_symbol_type
|
#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
|
/* 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
|
with the names $GDB_SYMBOLS$ and $GDB_STRINGS$ rather than .stab and
|
||||||
.stabstr. */
|
.stabstr. */
|
||||||
|
Reference in New Issue
Block a user