aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1991-05-10 23:41:14 +0000
committerJohn Gilmore <gnu@cygnus>1991-05-10 23:41:14 +0000
commit66d4e1bb88997032a543574f69f57c284181b39d (patch)
treea003a120dbdc5dcc6e264baadb918f829381105f /include
parentdf77307a2acd29c32e82587211a9742db40b35c9 (diff)
downloadgdb-66d4e1bb88997032a543574f69f57c284181b39d.zip
gdb-66d4e1bb88997032a543574f69f57c284181b39d.tar.gz
gdb-66d4e1bb88997032a543574f69f57c284181b39d.tar.bz2
Update for Sony News port and split of a.out into several variants.
Add write_contents to format-dependent vector.
Diffstat (limited to 'include')
-rwxr-xr-xinclude/a.out.sun4.h28
-rw-r--r--include/bfd.h8
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 */