This commit was manufactured by cvs2svn to create tag 'FreeBSD-release/1.0'.
[unix-history] / include / a.out.h
index 1008155..9133f81 100644 (file)
 #define        __LDPGSZ        1024
 #endif
 
 #define        __LDPGSZ        1024
 #endif
 
+#define N_ALIGN(ex,x) \
+       ((ex).a_magic == ZMAGIC || (ex).a_magic == QMAGIC ? \
+        ((x) + __LDPGSZ - 1) & ~(__LDPGSZ - 1) : (x))
+
 /* Valid magic number check. */
 #define        N_BADMAG(ex) \
        ((ex).a_magic != NMAGIC && (ex).a_magic != OMAGIC && \
 /* Valid magic number check. */
 #define        N_BADMAG(ex) \
        ((ex).a_magic != NMAGIC && (ex).a_magic != OMAGIC && \
-           (ex).a_magic != ZMAGIC)
+           (ex).a_magic != ZMAGIC && (ex).a_magic != QMAGIC)
 
 /* Address of the bottom of the text segment. */
 
 /* Address of the bottom of the text segment. */
-#define N_TXTADDR(X)   0
+#define N_TXTADDR(ex)  ((ex).a_magic == QMAGIC ? __LDPGSZ : 0)
 
 /* Address of the bottom of the data segment. */
 #define N_DATADDR(ex) \
 
 /* Address of the bottom of the data segment. */
 #define N_DATADDR(ex) \
-       (N_TXTADDR(ex) + ((ex).a_magic == OMAGIC ? (ex).a_text \
-       : __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
+       N_ALIGN(ex, N_TXTADDR(ex) + (ex).a_text)
 
 /* Text segment offset. */
 #define        N_TXTOFF(ex) \
 
 /* Text segment offset. */
 #define        N_TXTOFF(ex) \
-       ((ex).a_magic == ZMAGIC ? __LDPGSZ : sizeof(struct exec))
+       ((ex).a_magic == ZMAGIC ? __LDPGSZ \
+        : ((ex).a_magic == QMAGIC ? 0 : sizeof(struct exec)))
 
 /* Data segment offset. */
 #define        N_DATOFF(ex) \
 
 /* Data segment offset. */
 #define        N_DATOFF(ex) \
-       (N_TXTOFF(ex) + ((ex).a_magic != ZMAGIC ? (ex).a_text \
-       : __LDPGSZ + ((ex).a_text - 1 & ~(__LDPGSZ - 1))))
+       N_ALIGN(ex, N_TXTOFF(ex) + (ex).a_text)
+
+/* Relocation table offset. */
+#define N_RELOFF(ex) \
+       N_ALIGN(ex, N_DATOFF(ex) + (ex).a_data)
 
 /* Symbol table offset. */
 #define N_SYMOFF(ex) \
 
 /* Symbol table offset. */
 #define N_SYMOFF(ex) \
-       (N_TXTOFF(ex) + (ex).a_text + (ex).a_data + (ex).a_trsize + \
-           (ex).a_drsize)
+       (N_RELOFF(ex) + (ex).a_trsize + (ex).a_drsize)
 
 /* String table offset. */
 #define        N_STROFF(ex)    (N_SYMOFF(ex) + (ex).a_syms)
 
 /* String table offset. */
 #define        N_STROFF(ex)    (N_SYMOFF(ex) + (ex).a_syms)