You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
- 02111-1307, USA. */
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+ 02110-1301, USA. */
#ifndef GAS
#define GAS 1
/* Now GNU header files... */
#include "ansidecl.h"
-#ifdef BFD_ASSEMBLER
#include "bfd.h"
-#endif
#include "libiberty.h"
/* Define the standard progress macros. */
/* These are assembler-wide concepts */
-#ifdef BFD_ASSEMBLER
extern bfd *stdoutput;
typedef bfd_vma addressT;
typedef bfd_signed_vma offsetT;
-#else
-typedef unsigned long addressT;
-typedef long offsetT;
-#endif
/* Type of symbol value, etc. For use in prototypes. */
typedef addressT valueT;
\f
/* subsegs.c Sub-segments. Also, segment(=expression type)s.*/
-#ifndef BFD_ASSEMBLER
-
-#ifdef MANY_SEGMENTS
-#include "bfd.h"
-#define N_SEGMENTS 40
-#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39)
-#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\
- SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\
- SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\
- SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39
-#define SEG_TEXT SEG_E0
-#define SEG_DATA SEG_E1
-#define SEG_BSS SEG_E2
-#define SEG_LAST SEG_E39
-#else
-#define N_SEGMENTS 3
-#define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)
-#define SEG_LIST SEG_TEXT,SEG_DATA,SEG_BSS
-#endif
-
-typedef enum _segT
-{
- SEG_ABSOLUTE = 0,
- SEG_LIST,
- SEG_UNKNOWN,
- SEG_GOOF, /* Only happens if AS has a logic error. */
- /* Invented so we don't crash printing
- error message involving weird segment. */
- SEG_EXPR, /* Intermediate expression values. */
- SEG_DEBUG, /* Debug segment */
- SEG_NTV, /* Transfert vector preload segment. */
- SEG_PTV, /* Transfert vector postload segment. */
- SEG_REGISTER /* Mythical: a register-valued expression. */
-} segT;
-
-#define SEG_MAXIMUM_ORDINAL (SEG_REGISTER)
-#else
typedef asection *segT;
#define SEG_NORMAL(SEG) ( (SEG) != absolute_section \
&& (SEG) != undefined_section \
&& (SEG) != reg_section \
&& (SEG) != expr_section)
-#endif
typedef int subsegT;
/* What subseg we are accessing now? */
/* Segment our instructions emit to. */
COMMON segT now_seg;
-#ifdef BFD_ASSEMBLER
#define segment_name(SEG) bfd_get_section_name (stdoutput, SEG)
-#else
-extern char const *const seg_name[];
-#define segment_name(SEG) seg_name[(int) (SEG)]
-#endif
-#ifndef BFD_ASSEMBLER
-extern int section_alignment[];
-#endif
-
-#ifdef BFD_ASSEMBLER
extern segT reg_section, expr_section;
/* Shouldn't these be eliminated someday? */
extern segT text_section, data_section, bss_section;
#define absolute_section bfd_abs_section_ptr
#define undefined_section bfd_und_section_ptr
-#else
-#define reg_section SEG_REGISTER
-#define expr_section SEG_EXPR
-#define text_section SEG_TEXT
-#define data_section SEG_DATA
-#define bss_section SEG_BSS
-#define absolute_section SEG_ABSOLUTE
-#define undefined_section SEG_UNKNOWN
-#endif
-
enum _relax_state
{
+ /* Dummy frag used by listing code. */
+ rs_dummy = 0,
+
/* Variable chars to be repeated fr_offset times.
Fr_symbol unused. Used with fr_offset == 0 for a
constant length frag. */
- rs_fill = 1,
+ rs_fill,
/* Align. The fr_offset field holds the power of 2 to which to
align. The fr_var field holds the number of characters in the
void as_assert (const char *, int, const char *);
void as_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
-void fprint_value (FILE *, addressT);
void sprint_value (char *, addressT);
int had_errors (void);
int had_warnings (void);
void cond_exit_macro (int);
int seen_at_least_1_file (void);
void app_pop (char *);
-void as_howmuch (FILE *);
void as_perror (const char *, const char *);
void as_where (char **, unsigned int *);
void bump_line_counters (void);
void start_dependencies (char *);
void register_dependency (char *);
void print_dependencies (void);
-#ifdef BFD_ASSEMBLER
segT subseg_get (const char *, int);
-#endif
struct expressionS;
struct fix;
struct relax_type;
typedef struct frag fragS;
-#ifdef BFD_ASSEMBLER
/* literal.c */
valueT add_to_literal_pool (symbolS *, valueT, segT, int);
-#endif
int check_eh_frame (struct expressionS *, unsigned int *);
int eh_frame_estimate_size_before_relax (fragS *);