mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-12 06:26:17 +00:00
* read.c (potable): Add spc, ttl, xcom, xref.
(s_mri_sect): New function. * read.h (s_mri_sect): Declare. * config/obj-coff.c (obj_coff_section) (both versions): In MRI mode, call s_mri_sect. (obj_pseudo_table): Add sect.s and section.s. Move sect outside of ifndef BFD_ASSEMBLER. * config/obj-elf.c (elf_pseudo_table): Add section.s, sect, sect.s. (obj_elf_section): In MRI mode, call s_mri_sect. * config/tc-m68k.c (md_pseudo_table): Add restore, save. (struct save_opts): Define. (save_stack): New static variable. (s_save, s_restore): New static functions.
This commit is contained in:
parent
bd59fa7505
commit
e14994d980
@ -1,8 +1,24 @@
|
||||
Thu Aug 10 00:38:11 1995 Ian Lance Taylor <ian@cygnus.com>
|
||||
|
||||
* read.c (potable): Add spc, ttl, xcom, xref.
|
||||
(s_mri_sect): New function.
|
||||
* read.h (s_mri_sect): Declare.
|
||||
* config/obj-coff.c (obj_coff_section) (both versions): In MRI
|
||||
mode, call s_mri_sect.
|
||||
(obj_pseudo_table): Add sect.s and section.s. Move sect outside
|
||||
of ifndef BFD_ASSEMBLER.
|
||||
* config/obj-elf.c (elf_pseudo_table): Add section.s, sect,
|
||||
sect.s.
|
||||
(obj_elf_section): In MRI mode, call s_mri_sect.
|
||||
* config/tc-m68k.c (md_pseudo_table): Add restore, save.
|
||||
(struct save_opts): Define.
|
||||
(save_stack): New static variable.
|
||||
(s_save, s_restore): New static functions.
|
||||
|
||||
* read.c (s_set): Remove unused local ptr.
|
||||
(hex_float): Check target_big_endian.
|
||||
(equals): Remove unused local p.
|
||||
|
||||
* config/tc-a29k.h (TARGET_BYTES_BIG_ENDIAN): Define.
|
||||
* config/tc-h8500.h (TARGET_BYTES_BIG_ENDIAN): Define.
|
||||
* config/tc-hppa.h (TARGET_BYTES_BIG_ENDIAN): Define.
|
||||
|
@ -295,6 +295,8 @@ static void s_chip PARAMS ((int));
|
||||
static void s_fopt PARAMS ((int));
|
||||
static void s_opt PARAMS ((int));
|
||||
static void s_reg PARAMS ((int));
|
||||
static void s_restore PARAMS ((int));
|
||||
static void s_save PARAMS ((int));
|
||||
|
||||
static int current_architecture;
|
||||
|
||||
@ -427,6 +429,8 @@ CONST pseudo_typeS md_pseudo_table[] =
|
||||
{"mask2", s_ignore, 0},
|
||||
{"opt", s_opt, 0},
|
||||
{"reg", s_reg, 0},
|
||||
{"restore", s_restore, 0},
|
||||
{"save", s_save, 0},
|
||||
|
||||
{0, 0, 0}
|
||||
};
|
||||
@ -4432,6 +4436,85 @@ s_reg (ignore)
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/* This structure is used for the MRI SAVE and RESTORE pseudo-ops. */
|
||||
|
||||
struct save_opts
|
||||
{
|
||||
struct save_opts *next;
|
||||
int abspcadd;
|
||||
int symbols_case_sensitive;
|
||||
int keep_locals;
|
||||
int short_refs;
|
||||
int architecture;
|
||||
int quick;
|
||||
int rel32;
|
||||
int listing;
|
||||
int no_warnings;
|
||||
/* FIXME: We don't save OPT S. */
|
||||
};
|
||||
|
||||
/* This variable holds the stack of saved options. */
|
||||
|
||||
static struct save_opts *save_stack;
|
||||
|
||||
/* The MRI SAVE pseudo-op. */
|
||||
|
||||
static void
|
||||
s_save (ignore)
|
||||
int ignore;
|
||||
{
|
||||
struct save_opts *s;
|
||||
|
||||
s = (struct save_opts *) xmalloc (sizeof (struct save_opts));
|
||||
s->abspcadd = m68k_abspcadd;
|
||||
s->symbols_case_sensitive = symbols_case_sensitive;
|
||||
s->keep_locals = flag_keep_locals;
|
||||
s->short_refs = flag_short_refs;
|
||||
s->architecture = current_architecture;
|
||||
s->quick = m68k_quick;
|
||||
s->rel32 = m68k_rel32;
|
||||
s->listing = listing;
|
||||
s->no_warnings = flag_no_warnings;
|
||||
|
||||
s->next = save_stack;
|
||||
save_stack = s;
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/* The MRI RESTORE pseudo-op. */
|
||||
|
||||
static void
|
||||
s_restore (ignore)
|
||||
int ignore;
|
||||
{
|
||||
struct save_opts *s;
|
||||
|
||||
if (save_stack == NULL)
|
||||
{
|
||||
as_bad ("restore without save");
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
}
|
||||
|
||||
s = save_stack;
|
||||
save_stack = s->next;
|
||||
|
||||
m68k_abspcadd = s->abspcadd;
|
||||
symbols_case_sensitive = s->symbols_case_sensitive;
|
||||
flag_keep_locals = s->keep_locals;
|
||||
flag_short_refs = s->short_refs;
|
||||
current_architecture = s->architecture;
|
||||
m68k_quick = s->quick;
|
||||
m68k_rel32 = s->rel32;
|
||||
listing = s->listing;
|
||||
flag_no_warnings = s->no_warnings;
|
||||
|
||||
free (s);
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/*
|
||||
* md_parse_option
|
||||
|
92
gas/read.c
92
gas/read.c
@ -327,6 +327,7 @@ static const pseudo_typeS potable[] =
|
||||
{"single", float_cons, 'f'},
|
||||
/* size */
|
||||
{"space", s_space, 0},
|
||||
{"spc", s_ignore, 0},
|
||||
{"stabd", s_stab, 'd'},
|
||||
{"stabn", s_stab, 'n'},
|
||||
{"stabs", s_stab, 's'},
|
||||
@ -346,10 +347,13 @@ static const pseudo_typeS potable[] =
|
||||
{"this_gcc_requires_the_gnu_assembler", s_ignore, 0},
|
||||
|
||||
{"title", listing_title, 0}, /* Listing title */
|
||||
{"ttl", listing_title, 0},
|
||||
/* type */
|
||||
/* use */
|
||||
/* val */
|
||||
{"xcom", s_comm, 0},
|
||||
{"xdef", s_globl, 0},
|
||||
{"xref", s_ignore, 0},
|
||||
{"xstabs", s_xstab, 's'},
|
||||
{"word", cons, 2},
|
||||
{"zero", s_space, 0},
|
||||
@ -1643,6 +1647,94 @@ s_org (ignore)
|
||||
demand_empty_rest_of_line ();
|
||||
} /* s_org() */
|
||||
|
||||
/* Handle parsing for the MRI SECT/SECTION pseudo-op. This should be
|
||||
called by the obj-format routine which handles section changing
|
||||
when in MRI mode. It will create a new section, and return it. It
|
||||
will set *TYPE to the section type: one of '\0' (unspecified), 'C'
|
||||
(code), 'D' (data), 'M' (mixed), or 'R' (romable). If
|
||||
BFD_ASSEMBLER is defined, the flags will be set in the section. */
|
||||
|
||||
void
|
||||
s_mri_sect (type)
|
||||
char *type;
|
||||
{
|
||||
char *name;
|
||||
char c;
|
||||
segT seg;
|
||||
|
||||
SKIP_WHITESPACE ();
|
||||
|
||||
name = input_line_pointer;
|
||||
if (! isdigit ((unsigned char) *name))
|
||||
c = get_symbol_end ();
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
++input_line_pointer;
|
||||
}
|
||||
while (isdigit ((unsigned char) *input_line_pointer));
|
||||
c = *input_line_pointer;
|
||||
*input_line_pointer = '\0';
|
||||
}
|
||||
|
||||
name = strdup (name);
|
||||
if (name == NULL)
|
||||
as_fatal ("virtual memory exhausted");
|
||||
|
||||
*input_line_pointer = c;
|
||||
|
||||
seg = subseg_new (name, 0);
|
||||
|
||||
if (*input_line_pointer == ',')
|
||||
{
|
||||
int align;
|
||||
|
||||
++input_line_pointer;
|
||||
align = get_absolute_expression ();
|
||||
record_alignment (seg, align);
|
||||
}
|
||||
|
||||
*type = '\0';
|
||||
if (*input_line_pointer == ',')
|
||||
{
|
||||
c = *++input_line_pointer;
|
||||
c = toupper ((unsigned char) c);
|
||||
if (c == 'C' || c == 'D' || c == 'M' || c == 'R')
|
||||
*type = c;
|
||||
else
|
||||
as_bad ("unrecognized section type");
|
||||
++input_line_pointer;
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
{
|
||||
flagword flags;
|
||||
|
||||
flags = SEC_NO_FLAGS;
|
||||
if (type == 'C')
|
||||
flags = SEC_CODE;
|
||||
else if (type == 'D')
|
||||
flags = SEC_DATA;
|
||||
else if (type == 'R')
|
||||
flags = SEC_ROM;
|
||||
if (flags != SEC_NO_FLAGS)
|
||||
{
|
||||
if (! bfd_set_section_flags (stdoutput, seg, flags))
|
||||
as_warn ("error setting flags for \"%s\": %s",
|
||||
bfd_section_name (stdoutput, sec),
|
||||
bfd_errmsg (bfd_get_error ()));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Ignore the HP type. */
|
||||
if (*input_line_pointer == ',')
|
||||
input_line_pointer += 2;
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
void
|
||||
s_set (ignore)
|
||||
int ignore;
|
||||
|
Loading…
Reference in New Issue
Block a user