* as.h (relax_substateT): Now defined to be unsigned int.

(relax_stateT): Separate typedef from enum definition.
(enum _relax_state): Reordered for better punctuation.  Added new values
rs_align_code and rs_space.
(lineno, struct lineno_struct): Unused, deleted.

For friendlier assertion-failure messages:
* as.h: No longer include assert.h.
(as_assert): Declare.
(assert): New definition, calls as_assert longer needed.
(__PRETTY_FUNCTION__): Provide default for older versions of gcc.
* messages.c (as_assert): New function.
* gdbinit.in: Put a breakpoint there.
This commit is contained in:
Ken Raeburn 1994-12-30 23:59:23 +00:00
parent 849515449b
commit d5f4140317
1 changed files with 30 additions and 20 deletions

View File

@ -101,16 +101,23 @@ extern char *strdup (/* const char * */);
#ifdef DEBUG
#undef NDEBUG
#endif
#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
#define __PRETTY_FUNCTION__ ((char*)0)
#endif
#if 0
/* Handle lossage with assert.h. */
#ifndef BROKEN_ASSERT
#include <assert.h>
#else /* BROKEN_ASSERT */
#ifndef NDEBUG
#define assert(p) ((p) ? 0 : (abort(), 0))
#define assert(p) ((p) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))
#else
#define assert(p) ((p), 0)
#endif
#endif /* BROKEN_ASSERT */
#else
#define assert(P) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))
#endif
/* Now GNU header files... */
@ -328,7 +335,7 @@ extern segT text_section, data_section, bss_section;
/* relax() */
typedef enum _relax_state
enum _relax_state
{
/* Variable chars to be repeated fr_offset times.
Fr_symbol unused. Used with fr_offset == 0 for a
@ -338,22 +345,34 @@ typedef enum _relax_state
/* Align: Fr_offset: power of 2. Variable chars: fill pattern. */
rs_align,
/* Align code: fr_offset: power of 2. Fill pattern is machine
specific, defaulting to all zeros. */
rs_align_code,
/* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
character. */
rs_org,
rs_machine_dependent
#ifndef WORKING_DOT_WORD
/* JF: gunpoint */
, rs_broken_word
rs_broken_word,
#endif
} relax_stateT;
/* typedef unsigned char relax_substateT; */
/* JF this is more likely to leave the end of a struct frag on an align
boundry. Be very careful with this. */
typedef unsigned long relax_substateT;
/* machine-specific relaxable (or similarly alterable) instruction */
rs_machine_dependent,
/* .space directive with expression operand that needs to be computed
later. Similar to rs_org, but different.
fr_symbol: operand
1 variable char: fill character */
rs_space
};
typedef enum _relax_state relax_stateT;
/* This type is used in prototypes, so it can't be a type that will be
widened for argument passing. */
typedef unsigned int relax_substateT;
/* Enough bits for address, but still an integer type.
Could be a problem, cross-assembling for 64-bit machines. */
@ -488,16 +507,6 @@ struct _pseudo_type
typedef struct _pseudo_type pseudo_typeS;
#ifdef BFD_ASSEMBLER_xxx
struct lineno_struct
{
alent line;
fragS *frag;
struct lineno_struct *next;
};
typedef struct lineno_struct lineno;
#endif
/* Prefer varargs for non-ANSI compiler, since some will barf if the
ellipsis definition is used with a no-arguments declaration. */
#if defined (HAVE_VARARGS_H) && !defined (__STDC__)
@ -536,6 +545,7 @@ PRINTF_LIKE (as_tsktsk);
PRINTF_LIKE (as_warn);
PRINTF_WHERE_LIKE (as_bad_where);
PRINTF_WHERE_LIKE (as_warn_where);
void as_assert PARAMS ((const char *, int, const char *));
void fprint_value PARAMS ((FILE *file, addressT value));
void sprint_value PARAMS ((char *buf, addressT value));