* as/hc08/aslex.c,
[fw/sdcc] / as / mcs51 / lkaomf51.c
index fa4611c60ad054c12809e48afd58706018cb84e0..812c616f0963735bbe74324f5f8c939075e60880 100644 (file)
@@ -86,6 +86,12 @@ _UsageType UsageType[]=
 {
        {"CSEG",                0},
        {"GSINIT",              0},
+       {"GSINIT0",             0},
+       {"GSINIT1",             0},
+       {"GSINIT2",             0},
+       {"GSINIT3",             0},
+       {"GSINIT4",             0},
+       {"GSINIT5",             0},
        {"GSFINAL",             0},
        {"HOME",                0},
        {"XINIT",               0},
@@ -203,7 +209,7 @@ void OutputWord(int value)
        OutputByte((unsigned char)(value/0x100));
 }
 
-void OutputName(char * name)
+void OutputName(unsigned char * name)
 {
        int k;
        OutputByte((unsigned char)strlen(name));
@@ -378,6 +384,7 @@ void OutputAOEMF51(void)
 
                                /*Content Record*/
                                OutputByte(0x06);/*REC TYPE*/
+                               if(procedure[k].EndAdd==-1) procedure[k].EndAdd=HexSize;
                                recsize=procedure[k].EndAdd-procedure[k].BeginAdd+1+4;
                                OutputWord(recsize);/*Record Length*/
                                OutputByte(0x00);/*SEG ID*/
@@ -701,6 +708,7 @@ void CollectInfoFromCDB(void)
                                        symbol[numsym].UsageType=0x00;/*A procedure name symbol*/
                                        symbol[numsym].Procedure=-1; /*Global symbol*/
                                        symbol[numsym].Address=-1;/*Collected later*/
+                                       symbol[numsym].Static=-1; // o_gloom
                                        numsym++;
                                }
                        break;
@@ -868,12 +876,12 @@ void CollectInfoFromCDB(void)
        fclose(CDBin);
 }
 
-int hex2dec (char hex_digit)
+int hex2dec (unsigned char hex_digit)
 {
-   int j;
-   j=toupper(hex_digit)-'0';
-   if (j>9) j -= 7;
-   return j;
+   if (isdigit (hex_digit))
+      return hex_digit-'0';
+   else
+      return toupper (hex_digit)-'A'+10;
 }
 
 unsigned char GetByte(char * buffer)