static unsigned long aoutstd_getrinfo(rlist *rl,int xtern,char *sname,int be)
/* Convert vasm relocation type into standard a.out relocations, */
/* as used by M68k and x86 targets. */
/* For xtern=-1, return true when this relocation requires a base symbol. */
{
  nreloc *nr;
  unsigned long r=0,s=4;
  int b=0;

  if (nr = (nreloc *)rl->reloc) {
    switch (rl->type) {
      case REL_ABS: b=-1; break;
      case REL_PC: b=RSTDB_pcrel; break;
      case REL_SD: b=RSTDB_baserel; break;
    }
    if (xtern == -1)  /* just query symbol-based relocation */
      return b==RSTDB_baserel || b==RSTDB_jmptable;

    if ((nr->offset&7)==0 &&
        (nr->mask & MAKEMASK(nr->size)) == MAKEMASK(nr->size)) {
      switch (nr->size) {
        case 8: s=0; break;
        case 16: s=1; break;
        case 32: s=2; break;
      }
    }

    if (b && s<4) {
      if (b > 0)
        setbits(be,&r,sizeof(r)<<3,(unsigned)b,1,1);
      setbits(be,&r,sizeof(r)<<3,RSTDB_length,RSTDS_length,s);
      setbits(be,&r,sizeof(r)<<3,RSTDB_extern,RSTDS_extern,xtern?1:0);
      return readbits(be,&r,sizeof(r)<<3,RELB_reloc,RELS_reloc);
    }
  }

  unsupp_reloc_error(rl);
  return ~0;
}
Exemple #2
0
static int init_main(void)
{
    size_t i;
    char *last;
    hashdata data;
    mnemohash=new_hashtable(MNEMOHTABSIZE);
    i=0;
    while(i<mnemonic_cnt) {
        data.idx=i;
        last=mnemonics[i].name;
        add_hashentry(mnemohash,mnemonics[i].name,data);
        do {
            i++;
        } while(i<mnemonic_cnt&&!strcmp(last,mnemonics[i].name));
    }
    if(DEBUG) {
        if(mnemohash->collisions)
            printf("*** %d mnemonic collisions!!\n",mnemohash->collisions);
    }
    symhash=new_hashtable(SYMHTABSIZE);
    new_include_path(".");
    taddrmask=MAKEMASK(bytespertaddr<<3);
    return 1;
}
Exemple #3
0
/*#define	TAIL_RESTART	120*60*/
/*#define	NOBODY	65534*/	/* Can't do this so that we can run iptables */

#define	DEFAULT_MAIL_LOG	"/var/log/mail.log"

#define	uint32_t	unsigned long

#define PACKADDR(a, b, c, d) (((uint32_t)(a) << 24) | ((b) << 16) | ((c) << 8) | (d))
#define MAKEMASK(bits)	((uint32_t)(0xffffffff << (bits)))

static const struct cidr_net {
	uint32_t	base;
	uint32_t	mask;
} localNets[] = {
	/*{ PACKADDR(127,   0,   0,   0), MAKEMASK(8) },	/*   127.0.0.0/8 */
	{ PACKADDR(192, 168,   0,   0), MAKEMASK(16) },	/* 192.168.0.0/16 - RFC3330 */
	/*{ PACKADDR(192, 0,   2,   0), MAKEMASK(24) },	/* 192.0.2.0/24 - RFC3330 */
	{ PACKADDR( 10,   0,   0,   0), MAKEMASK(8) },	/*    10.0.0.0/8 */
	{ PACKADDR(172,  16,   0,   0), MAKEMASK(12) },	/*  172.16.0.0/12 */
	{ PACKADDR(169, 254,   0,   0), MAKEMASK(16) },	/* 169.254.0.0/16 */
	{ 0, 0 }
}, whiteNets[] = {
	{ PACKADDR(212, 159,   0,   0), MAKEMASK(19) },	/* F9 - 212.159.0.0/19 */
	{ PACKADDR(84,   93, 229,   0), MAKEMASK(8) }, /* F9 - 84.93.229.0/8 */
	{ PACKADDR(217,  157, 23, 243), MAKEMASK(0) },	/* njh.softcom.dk */
	{ PACKADDR(204,  15,  80,   0), MAKEMASK(22) },	/* Spamcop */
	{ 0, 0 }
};

struct	privdata {
	char	ip[INET_ADDRSTRLEN];	/* IP address of the other end */