aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog14
-rw-r--r--gas/config/tc-xtensa.c123
-rw-r--r--gas/config/tc-xtensa.h12
-rw-r--r--gas/doc/as.texinfo1
-rw-r--r--gas/doc/c-xtensa.texi36
5 files changed, 74 insertions, 112 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 6bc4de9..e9da493 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,17 @@
+2004-11-04 Bob Wilson <bob.wilson@acm.org>
+
+ * config/tc-xtensa.c: Remove XTENSA_SECTION_RENAME ifdefs.
+ (add_section_rename): Delete. Inlined into...
+ (build_section_rename): ...here. Use xstrdup instead of strdup.
+ (xtensa_section_rename): Drop "const" from argument and return types.
+ (md_show_usage): Indent to match show_usage().
+ * config/tc-xtensa.h: Remove XTENSA_SECTION_RENAME ifdefs.
+ (tc_canonicalize_section_name): Define.
+ (md_elf_section_rename): Remove unused macro.
+ * doc/as.texinfo (Overview): Document Xtensa --rename-section option.
+ * doc/c-xtensa.texi (Xtensa Options): Likewise.
+ (Frame Directive): Delete.
+
2004-11-04 Daniel Jacobowitz <dan@debian.org>
* configure.in: Remove arm-*-oabi and thumb-*-oabi.
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
index b75de92..a2eaf96 100644
--- a/gas/config/tc-xtensa.c
+++ b/gas/config/tc-xtensa.c
@@ -517,10 +517,9 @@ static void set_expr_symbol_offset_diff
bfd_boolean expr_is_equal (expressionS *, expressionS *);
static void copy_expr (expressionS *, const expressionS *);
-#ifdef XTENSA_SECTION_RENAME
+/* Section renaming. */
+
static void build_section_rename (const char *);
-static void add_section_rename (char *, char *);
-#endif
/* ISA imported from bfd. */
@@ -647,9 +646,7 @@ enum
option_no_workarounds,
-#ifdef XTENSA_SECTION_RENAME
option_rename_section_name,
-#endif
option_prefer_l32r,
option_prefer_const16,
@@ -716,9 +713,7 @@ struct option md_longopts[] =
{ "workaround-close-loop-end", no_argument, NULL,
option_workaround_close_loop_end },
-#ifdef XTENSA_SECTION_RENAME
{ "rename-section", required_argument, NULL, option_rename_section_name },
-#endif /* XTENSA_SECTION_RENAME */
{ "link-relax", no_argument, NULL, option_link_relax },
{ "no-link-relax", no_argument, NULL, option_no_link_relax },
@@ -837,11 +832,9 @@ md_parse_option (int c, char *arg)
warn_unaligned_branch_targets = TRUE;
return 1;
-#ifdef XTENSA_SECTION_RENAME
case option_rename_section_name:
build_section_rename (arg);
return 1;
-#endif /* XTENSA_SECTION_RENAME */
case 'Q':
/* -Qy, -Qn: SVR4 arguments controlling whether a .comment section
@@ -909,18 +902,14 @@ md_show_usage (FILE *stream)
{
fputs ("\n\
Xtensa options:\n\
---[no-]text-section-literals\n\
- [Do not] put literals in the text section\n\
---[no-]absolute-literals\n\
- [Do not] default to use non-PC-relative literals\n\
---[no-]target-align [Do not] try to align branch targets\n\
---[no-]longcalls [Do not] emit 32-bit call sequences\n\
---[no-]transform [Do not] transform instructions\n"
-#ifdef XTENSA_SECTION_RENAME
-"--rename-section old=new(:old1=new1)*\n\
- Rename section 'old' to 'new'\n"
-#endif /* XTENSA_SECTION_RENAME */
- , stream);
+ --[no-]text-section-literals\n\
+ [Do not] put literals in the text section\n\
+ --[no-]absolute-literals\n\
+ [Do not] default to use non-PC-relative literals\n\
+ --[no-]target-align [Do not] try to align branch targets\n\
+ --[no-]longcalls [Do not] emit 32-bit call sequences\n\
+ --[no-]transform [Do not] transform instructions\n\
+ --rename-section old=new Rename section 'old' to 'new'\n", stream);
}
@@ -11996,9 +11985,7 @@ copy_expr (expressionS *dst, const expressionS *src)
}
-/* Support for Tensilica's "--rename-section" option. */
-
-#ifdef XTENSA_SECTION_RENAME
+/* Support for the "--rename-section" option. */
struct rename_section_struct
{
@@ -12010,17 +11997,22 @@ struct rename_section_struct
static struct rename_section_struct *section_rename;
-/* Parse the string oldname=new_name:oldname2=new_name2
- and call add_section_rename. */
+/* Parse the string "oldname=new_name(:oldname2=new_name2)*" and add
+ entries to the section_rename list. Note: Specifying multiple
+ renamings separated by colons is not documented and is retained only
+ for backward compatibility. */
static void
build_section_rename (const char *arg)
{
+ struct rename_section_struct *r;
char *this_arg = NULL;
char *next_arg = NULL;
- for (this_arg = strdup (arg); this_arg != NULL; this_arg = next_arg)
+ for (this_arg = xstrdup (arg); this_arg != NULL; this_arg = next_arg)
{
+ char *old_name, *new_name;
+
if (this_arg)
{
next_arg = strchr (this_arg, ':');
@@ -12030,56 +12022,47 @@ build_section_rename (const char *arg)
next_arg++;
}
}
- {
- char *old_name = this_arg;
- char *new_name = strchr (this_arg, '=');
- if (*old_name == '\0')
- {
- as_warn (_("ignoring extra '-rename-section' delimiter ':'"));
- continue;
- }
- if (!new_name || new_name[1] == '\0')
- {
- as_warn (_("ignoring invalid '-rename-section' "
- "specification: '%s'"), old_name);
- continue;
- }
- *new_name = '\0';
- new_name++;
- add_section_rename (old_name, new_name);
- }
- }
-}
+ old_name = this_arg;
+ new_name = strchr (this_arg, '=');
+ if (*old_name == '\0')
+ {
+ as_warn (_("ignoring extra '-rename-section' delimiter ':'"));
+ continue;
+ }
+ if (!new_name || new_name[1] == '\0')
+ {
+ as_warn (_("ignoring invalid '-rename-section' specification: '%s'"),
+ old_name);
+ continue;
+ }
+ *new_name = '\0';
+ new_name++;
-static void
-add_section_rename (char *old_name, char *new_name)
-{
- struct rename_section_struct *r = section_rename;
+ /* Check for invalid section renaming. */
+ for (r = section_rename; r != NULL; r = r->next)
+ {
+ if (strcmp (r->old_name, old_name) == 0)
+ as_bad (_("section %s renamed multiple times"), old_name);
+ if (strcmp (r->new_name, new_name) == 0)
+ as_bad (_("multiple sections remapped to output section %s"),
+ new_name);
+ }
- /* Check for invalid section renaming. */
- for (r = section_rename; r != NULL; r = r->next)
- {
- if (strcmp (r->old_name, old_name) == 0)
- as_bad (_("section %s renamed multiple times"), old_name);
- if (strcmp (r->new_name, new_name) == 0)
- as_bad (_("multiple sections remapped to output section %s"),
- new_name);
+ /* Now add it. */
+ r = (struct rename_section_struct *)
+ xmalloc (sizeof (struct rename_section_struct));
+ r->old_name = xstrdup (old_name);
+ r->new_name = xstrdup (new_name);
+ r->next = section_rename;
+ section_rename = r;
}
-
- /* Now add it. */
- r = (struct rename_section_struct *)
- xmalloc (sizeof (struct rename_section_struct));
- r->old_name = strdup (old_name);
- r->new_name = strdup (new_name);
- r->next = section_rename;
- section_rename = r;
}
-const char *
-xtensa_section_rename (const char *name)
+char *
+xtensa_section_rename (char *name)
{
struct rename_section_struct *r = section_rename;
@@ -12091,5 +12074,3 @@ xtensa_section_rename (const char *name)
return name;
}
-
-#endif /* XTENSA_SECTION_RENAME */
diff --git a/gas/config/tc-xtensa.h b/gas/config/tc-xtensa.h
index cdf5cc2..585f1ce 100644
--- a/gas/config/tc-xtensa.h
+++ b/gas/config/tc-xtensa.h
@@ -287,15 +287,6 @@ typedef struct xtensa_segment_info_struct
} xtensa_segment_info;
-/* Section renaming is only supported in Tensilica's version of GAS. */
-#ifdef XTENSA_SECTION_RENAME
-extern const char *xtensa_section_rename (const char *);
-#else
-/* Tensilica's section renaming feature is not included here. */
-#define xtensa_section_rename(name) (name)
-#endif /* XTENSA_SECTION_RENAME */
-
-
extern const char *xtensa_target_format (void);
extern void xtensa_init_fix_data (struct fix *);
extern void xtensa_frag_init (fragS *);
@@ -312,6 +303,7 @@ extern void xtensa_elf_section_change_hook (void);
extern int xtensa_unrecognized_line (int);
extern bfd_boolean xtensa_check_inside_bundle (void);
extern void xtensa_handle_align (fragS *);
+extern char *xtensa_section_rename (char *);
#define TARGET_FORMAT xtensa_target_format ()
#define TARGET_ARCH bfd_arch_xtensa
@@ -324,13 +316,13 @@ extern void xtensa_handle_align (fragS *);
#define TC_FORCE_RELOCATION(fix) xtensa_force_relocation (fix)
#define NO_PSEUDO_DOT xtensa_check_inside_bundle ()
#define tc_canonicalize_symbol_name(s) xtensa_section_rename (s)
+#define tc_canonicalize_section_name(s) xtensa_section_rename (s)
#define tc_init_after_args() xtensa_file_arch_init (stdoutput)
#define tc_fix_adjustable(fix) xtensa_fix_adjustable (fix)
#define tc_frob_label(sym) xtensa_frob_label (sym)
#define tc_unrecognized_line(ch) xtensa_unrecognized_line (ch)
#define md_do_align(a,b,c,d,e) xtensa_flush_pending_output ()
#define md_elf_section_change_hook xtensa_elf_section_change_hook
-#define md_elf_section_rename(name) xtensa_section_rename (name)
#define md_end xtensa_end
#define md_flush_pending_output() xtensa_flush_pending_output ()
#define md_operand(x)
diff --git a/gas/doc/as.texinfo b/gas/doc/as.texinfo
index 98e341c..a73edd7 100644
--- a/gas/doc/as.texinfo
+++ b/gas/doc/as.texinfo
@@ -424,6 +424,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
[@b{--[no-]text-section-literals}] [@b{--[no-]absolute-literals}]
[@b{--[no-]target-align}] [@b{--[no-]longcalls}]
[@b{--[no-]transform}]
+ [@b{--rename-section} @var{oldname}=@var{newname}]
@end ifset
@c man end
@end smallexample
diff --git a/gas/doc/c-xtensa.texi b/gas/doc/c-xtensa.texi
index 25065f8..c31d51a 100644
--- a/gas/doc/c-xtensa.texi
+++ b/gas/doc/c-xtensa.texi
@@ -85,6 +85,11 @@ including both relaxation and optimization. The default is
rare cases when the instructions must be exactly as specified in the
assembly source. Using @samp{--no-transform} causes out of range
instruction operands to be errors.
+
+@item --rename-section @var{oldname}=@var{newname}
+@kindex --rename-section
+Rename the @var{oldname} section to @var{newname}. This option can be used
+multiple times to rename multiple sections.
@end table
@node Xtensa Syntax
@@ -529,7 +534,6 @@ The following directives are available:
* Literal Position Directive:: Specify Inline Literal Pool Locations.
* Literal Prefix Directive:: Specify Literal Section Name Prefix.
* Absolute Literals Directive:: Control PC-Relative vs. Absolute Literals.
-* Frame Directive:: Describe a stack frame.
@end menu
@node Schedule Directive
@@ -744,36 +748,6 @@ Otherwise, the default is to assume PC-relative @code{L32R} addressing.
The @code{absolute-@-literals} directive can then be used to override
the default determined by the command-line options.
-@node Frame Directive
-@subsection frame
-@cindex @code{frame} directive
-
-This directive tells the assembler to emit information to allow the
-debugger to locate a function's stack frame. The syntax is:
-
-@smallexample
- .frame @var{reg}, @var{size}
-@end smallexample
-
-where @var{reg} is the register used to hold the frame pointer (usually
-the same as the stack pointer) and @var{size} is the size in bytes of
-the stack frame. The @code{.frame} directive is typically placed
-near the @code{ENTRY} instruction for a function.
-
-In many circumstances, this information just duplicates the
-information given in the function's @code{ENTRY} instruction; however,
-there are two cases where this is not true:
-
-@enumerate
-@item
-The size of the stack frame is too big to fit in the immediate field
-of the @code{ENTRY} instruction.
-
-@item
-The frame pointer is different than the stack pointer, as with functions
-that call @code{alloca}.
-@end enumerate
-
@c Local Variables:
@c fill-column: 72
@c End: