]> git.sur5r.net Git - cc65/commitdiff
Fixed a problem
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 11 Nov 2003 22:16:47 +0000 (22:16 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 11 Nov 2003 22:16:47 +0000 (22:16 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2641 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/expr.c
src/ca65/symentry.c
src/ca65/symentry.h

index cf5f5e5377a81ca9e322f6981a7c51e6ba34f6dd..ad2699c273697b6d45ea72a238412633108479f7 100644 (file)
@@ -1524,37 +1524,37 @@ static void CheckByteExpr (const ExprNode* N, int* IsByte)
        switch (N->Op & EXPR_TYPEMASK) {
 
            case EXPR_LEAFNODE:
-               switch (N->Op) {
-
-                   case EXPR_SYMBOL:
-                       if (SymIsZP (N->V.Sym)) {
-                           *IsByte = 1;
-                       } else if (SymHasExpr (N->V.Sym)) {
-                           /* Check if this expression is a byte expression */
-                           *IsByte = IsByteExpr (GetSymExpr (N->V.Sym));
-                       }
-                       break;
-
-                   case EXPR_SECTION:
-                       if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
-                           *IsByte = 1;
-                       }
-                       break;
-
-               }
-               break;
+               switch (N->Op) {
+
+                   case EXPR_SYMBOL:
+                       if (SymIsZP (N->V.Sym)) {
+                           *IsByte = 1;
+                       } else if (SymHasExpr (N->V.Sym)) {
+                           /* Check if this expression is a byte expression */
+                           CheckByteExpr (GetSymExpr (N->V.Sym), IsByte);
+                       }
+                       break;
+
+                   case EXPR_SECTION:
+                       if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
+                           *IsByte = 1;
+                       }
+                       break;
+
+               }
+               break;
 
            case EXPR_UNARYNODE:
-               CheckByteExpr (N->Left, IsByte);
-               break;
+               CheckByteExpr (N->Left, IsByte);
+               break;
 
            case EXPR_BINARYNODE:
-               CheckByteExpr (N->Left, IsByte);
-               CheckByteExpr (N->Right, IsByte);
-               break;
+               CheckByteExpr (N->Left, IsByte);
+               CheckByteExpr (N->Right, IsByte);
+               break;
 
            default:
-               Internal ("Unknown expression op: %02X", N->Op);
+               Internal ("Unknown expression op: %02X", N->Op);
        }
     }
 }
index 2c1600760c16fbec4b9bf5d94d53639680fbae16..35e60b5efad61779d737a1bed820c9257535fc17 100644 (file)
@@ -468,7 +468,7 @@ const struct ExprNode* SymResolve (const SymEntry* S)
 
 
 
-const char* GetSymName (SymEntry* S)
+const char* GetSymName (const SymEntry* S)
 /* Return the name of the symbol */
 {
     /* Resolve trampoline entries */
@@ -480,7 +480,20 @@ const char* GetSymName (SymEntry* S)
 
 
 
-unsigned GetSymIndex (SymEntry* S)
+unsigned GetSymAddrSize (const SymEntry* S)
+/* Return the address size of the symbol. Beware: This function will just
+ * return the AddrSize member, it will not look at the expression!
+ */
+{
+    if (S->Flags & SF_TRAMPOLINE) {
+       S = S->V.Sym;
+    }
+    return S->AddrSize;
+}
+
+
+
+unsigned GetSymIndex (const SymEntry* S)
 /* Return the symbol index for the given symbol */
 {
     /* Resolve trampoline entries */
@@ -493,7 +506,7 @@ unsigned GetSymIndex (SymEntry* S)
 
 
 
-const FilePos* GetSymPos (SymEntry* S)
+const FilePos* GetSymPos (const SymEntry* S)
 /* Return the position of first occurence in the source for the given symbol */
 {
     /* Resolve trampoline entries */
index 11584a881634de1f7185521a4bee7e8381f7a50d..940278bab8dd0d9dbf4a26dfc47b8ad8c30d8648 100644 (file)
@@ -187,13 +187,18 @@ const struct ExprNode* SymResolve (const SymEntry* Sym);
  * NULL. Do not call in other contexts!
  */
 
-const char* GetSymName (SymEntry* Sym);
+const char* GetSymName (const SymEntry* Sym);
 /* Return the name of the symbol */
 
-unsigned GetSymIndex (SymEntry* Sym);
+unsigned GetSymAddrSize (const SymEntry* Sym);
+/* Return the address size of the symbol. Beware: This function will just
+ * return the AddrSize member, it will not look at the expression!
+ */
+
+unsigned GetSymIndex (const SymEntry* Sym);
 /* Return the symbol index for the given symbol */
 
-const FilePos* GetSymPos (SymEntry* Sym);
+const FilePos* GetSymPos (const SymEntry* Sym);
 /* Return the position of first occurence in the source for the given symbol */