Added missing cleandir line for shared libs.
[unix-history] / include / a.out.h
index 1008155..b6eb6a9 100644 (file)
 #define        __LDPGSZ        1024
 #endif
 
 #define        __LDPGSZ        1024
 #endif
 
+#define N_GETMAGIC(ex) \
+       ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : ((ex).a_midmag))
+#define N_GETMAGIC2(ex) \
+       ( (((ex).a_midmag)&0xffff0000) ? (ntohl(((ex).a_midmag))&0xffff) : \
+       (((ex).a_midmag) | 0x10000) )
+#define N_GETMID(ex) \
+       ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>16)&0x03ff) : MID_ZERO )
+#define N_GETFLAG(ex) \
+       ( (((ex).a_midmag)&0xffff0000) ? ((ntohl(((ex).a_midmag))>>26)&0x3f) : 0 )
+#define N_SETMAGIC(ex,mag,mid,flag) \
+       ( (ex).a_midmag = htonl( (((flag)&0x3f)<<26) | (((mid)&0x03ff)<<16) | \
+       (((mag)&0xffff)) ) )
+
+#define N_ALIGN(ex,x) \
+       (N_GETMAGIC(ex) == ZMAGIC || N_GETMAGIC(ex) == QMAGIC ? \
+        ((x) + __LDPGSZ - 1) & ~(__LDPGSZ - 1) : (x))
+
 /* Valid magic number check. */
 #define        N_BADMAG(ex) \
 /* Valid magic number check. */
 #define        N_BADMAG(ex) \
-       ((ex).a_magic != NMAGIC && (ex).a_magic != OMAGIC && \
-           (ex).a_magic != ZMAGIC)
+       (N_GETMAGIC(ex) != NMAGIC && N_GETMAGIC(ex) != OMAGIC && \
+          N_GETMAGIC(ex) != ZMAGIC && N_GETMAGIC(ex) != 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)   (N_GETMAGIC2(ex) == (ZMAGIC|0x10000) ? 0 : __LDPGSZ)
 
 /* 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))
+       ( N_GETMAGIC2(ex)==ZMAGIC || N_GETMAGIC2(ex)==(QMAGIC|0x10000) ? \
+       0 : (N_GETMAGIC2(ex)==(ZMAGIC|0x10000) ? __LDPGSZ : 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)
 
 /* Relocation format. */
 struct relocation_info {
 
 /* String table offset. */
 #define        N_STROFF(ex)    (N_SYMOFF(ex) + (ex).a_syms)
 
 /* Relocation format. */
 struct relocation_info {
-       int r_address;                  /* offset in text or data segment */
-       unsigned int r_symbolnum : 24,  /* ordinal number of add symbol */
-                        r_pcrel :  1,  /* 1 if value should be pc-relative */
-                       r_length :  2,  /* log base 2 of value's width */
-                       r_extern :  1,  /* 1 if need to add symbol to value */
-                                :  4;  /* reserved */
+       int r_address;                    /* offset in text or data segment */
+       unsigned int   r_symbolnum : 24,  /* ordinal number of add symbol */
+                          r_pcrel :  1,  /* 1 if value should be pc-relative */
+                         r_length :  2,  /* log base 2 of value's width */
+                         r_extern :  1,  /* 1 if need to add symbol to value */
+                        r_baserel :  1,  /* linkage table relative */
+                       r_jmptable :  1,  /* relocate to jump table */
+                       r_relative :  1,  /* load address relative */
+                           r_copy :  1;  /* run time copy */
 };
 
 #define _AOUT_INCLUDE_
 };
 
 #define _AOUT_INCLUDE_