diff options
Diffstat (limited to 'include')
-rwxr-xr-x | include/a.out.sun4.h | 28 | ||||
-rw-r--r-- | include/bfd.h | 8 |
2 files changed, 24 insertions, 12 deletions
diff --git a/include/a.out.sun4.h b/include/a.out.sun4.h index 0c89c2a..3ba363d 100755 --- a/include/a.out.sun4.h +++ b/include/a.out.sun4.h @@ -1,19 +1,25 @@ /* SPARC-specific values for a.out files */ -#define PAGE_SIZE 0x02000 /* 8K. aka NBPG in <sys/param.h> */ +#define PAGE_SIZE 0x2000 /* 8K. aka NBPG in <sys/param.h> */ /* Note that some SPARCs have 4K pages, some 8K, some others. */ -#define SEGMENT_SIZE PAGE_SIZE -#define TEXT_START_ADDR PAGE_SIZE /* Location 0 is not accessible */ +#define SEGMENT_SIZE PAGE_SIZE +#define TEXT_START_ADDR PAGE_SIZE /* Location 0 is not accessible */ -#define N_BADMAG(x) \ - (N_MAGIC(x) != OMAGIC && N_MAGIC(x) != NMAGIC \ - && N_MAGIC(x) != ZMAGIC) +/* Non-default definitions of the accessor macros... */ +/* Offset in a.out file of the text section. For ZMAGIC, the text section + actually includes the a.out header. */ #define N_TXTOFF(x) ( (N_MAGIC((x)) == ZMAGIC) ? 0 : sizeof(struct exec) ) -#define N_DATOFF(x) ( N_TXTOFF(x) + (x).a_text ) -#define N_TRELOFF(x) ( N_DATOFF(x) + (x).a_data ) -#define N_DRELOFF(x) ( N_TRELOFF(x) + (x).a_trsize ) -#define N_SYMOFF(x) ( N_DRELOFF(x) + (x).a_drsize ) -#define N_STROFF(x) ( N_SYMOFF(x) + (x).a_syms ) +/* Virtual Address of text segment from the a.out file. For OMAGIC, + (almost always "unlinked .o's" these days), should be zero. + Sun added a kludge so that shared libraries linked ZMAGIC get + an address of zero if a_entry (!!!) is lower than the otherwise + expected text address. These kludges have gotta go! + For linked files, should reflect reality if we know it. */ + +#define N_TXTADDR(x) \ + (N_MAGIC(x)==OMAGIC? 0 \ + : (N_MAGIC(x) == ZMAGIC && (x).a_entry < TEXT_START_ADDR)? 0 \ + : TEXT_START_ADDR) diff --git a/include/bfd.h b/include/bfd.h index c157bc2..b398c44 100644 --- a/include/bfd.h +++ b/include/bfd.h @@ -416,6 +416,11 @@ typedef enum #define BFD_SEND_FMT(bfd, message, arglist) \ (((bfd)->xvec->message[(int)((bfd)->format)]) arglist) +/* This is the struct which defines the type of BFD this is. The + "xvec" member of the struct bfd itself points here. Each module + that implements access to a different target under BFD, defines + one of these. */ + /* FIXME, these names should be rationalised with the names of the entry points which call them. Too bad we can't have one macro to define them both! */ typedef struct bfd_target @@ -458,7 +463,8 @@ typedef struct bfd_target /* Format-dependent */ SDEF_FMT (struct bfd_target *, _bfd_check_format, (bfd *));/* file fmt or 0 */ - SDEF_FMT (boolean, _bfd_set_format, (bfd *)); /* make it an object file. */ + SDEF_FMT (boolean, _bfd_set_format, (bfd *)); /* make it an object file */ + SDEF_FMT (boolean, _bfd_write_contents, (bfd *)); /* write it out at close */ /* All these are defined in JUMP_TABLE */ /* Core files */ |