Add LIBS to linker command line (needed on Solaris)
[fw/sdcc] / link / z80 / lksym.c
index 03b96b9219bdb92f8094bc41699020564855871d..8699da8e0844a407102401424689e2faca4155b5 100644 (file)
@@ -11,7 +11,7 @@
 
 #include <stdio.h>
 #include <string.h>
-#include <alloc.h>
+#include <stdlib.h>
 #include "aslink.h"
 
 /*)Module      lksym.c
@@ -28,7 +28,7 @@
  *             int     symeq()
  *             VOID    syminit()
  *             VOID    symmod()
- *             addr_t  symval()
+ *             Addr_T  symval()
  *
  *     lksym.c contains no local/static variables.
  */
@@ -56,7 +56,6 @@
 VOID
 syminit()
 {
-       register h;
        struct sym **spp;
 
        spp = &symhash[0];
@@ -96,7 +95,7 @@ syminit()
  *             int     lkerr           error flag
  *
  *     functions called:
- *             addr_t  eval()          lkeval.c
+ *             Addr_T  eval()          lkeval.c
  *             VOID    exit()          c_library
  *             int     fprintf()       c_library
  *             char    get()           lklex.c
@@ -124,7 +123,7 @@ syminit()
 struct sym *
 newsym()
 {
-       register c, i, nglob;
+       register int c, i, nglob;
        struct sym *tsp;
        struct sym **s;
        char id[NCPS];
@@ -176,6 +175,9 @@ newsym()
        }
        fprintf(stderr, "Header symbol list overflow\n");
        lkexit(1);
+
+       /* Never reached */
+        return 0;
 }
 
 /*)Function    sym *   lkpsym(id,f)
@@ -214,7 +216,7 @@ lkpsym(id, f)
 char *id;
 {
        register struct sym *sp;
-       register h;
+       register int h;
 
        h = hash(id);
        sp = symhash[h];
@@ -232,7 +234,7 @@ char *id;
        return (sp);
 }
 
-/*)Function    addr_t  symval(tsp)
+/*)Function    Addr_T  symval(tsp)
  *
  *             sym *   tsp             pointer to a symbol structure
  *
@@ -241,7 +243,7 @@ char *id;
  *     value to the areax base address.
  *
  *     local variables:
- *             addr_t  val             relocated address value
+ *             Addr_T  val             relocated address value
  *
  *     global variables:
  *             none
@@ -253,11 +255,11 @@ char *id;
  *             none
  */
 
-addr_t
+Addr_T
 symval(tsp)
 register struct sym *tsp;
 {
-       register addr_t val;
+       register Addr_T val;
 
        val = tsp->s_addr;
        if (tsp->s_axp) {
@@ -298,7 +300,7 @@ symdef(fp)
 FILE *fp;
 {
        register struct sym *sp;
-       register i;
+       register int i;
 
        for (i=0; i<NHASH; ++i) {
                sp = symhash[i];
@@ -347,7 +349,7 @@ symmod(fp, tsp)
 FILE *fp;
 struct sym *tsp;
 {
-       register i, j;
+    register int i;
        struct sym **p;
 
        if ((hp = headp) != NULL) {
@@ -392,7 +394,7 @@ int
 symeq(p1, p2)
 register char *p1, *p2;
 {
-       register n;
+       register int n;
 
        n = NCPS;
        do {
@@ -401,7 +403,7 @@ register char *p1, *p2;
                if (*p1++ != *p2++)
                        return (0);
 #else
-               if (ccase[*p1++] != ccase[*p2++])
+               if (ccase[(unsigned char)(*p1++)] != ccase[(unsigned char)(*p2++)])
                        return (0);
 #endif
 
@@ -436,7 +438,7 @@ int
 hash(p)
 register char *p;
 {
-       register h, n;
+       register int h, n;
 
        h = 0;
        n = NCPS;
@@ -445,7 +447,7 @@ register char *p;
 #if    CASE_SENSITIVE
                h += *p++;
 #else
-               h += ccase[*p++];
+               h += ccase[(unsigned char)(*p++)];
 #endif
 
        } while (--n);