mirror of
https://github.com/cc65/cc65.git
synced 2025-08-13 08:25:28 +00:00
Fixed a problem
git-svn-id: svn://svn.cc65.org/cc65/trunk@2641 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -1524,37 +1524,37 @@ static void CheckByteExpr (const ExprNode* N, int* IsByte)
|
|||||||
switch (N->Op & EXPR_TYPEMASK) {
|
switch (N->Op & EXPR_TYPEMASK) {
|
||||||
|
|
||||||
case EXPR_LEAFNODE:
|
case EXPR_LEAFNODE:
|
||||||
switch (N->Op) {
|
switch (N->Op) {
|
||||||
|
|
||||||
case EXPR_SYMBOL:
|
case EXPR_SYMBOL:
|
||||||
if (SymIsZP (N->V.Sym)) {
|
if (SymIsZP (N->V.Sym)) {
|
||||||
*IsByte = 1;
|
*IsByte = 1;
|
||||||
} else if (SymHasExpr (N->V.Sym)) {
|
} else if (SymHasExpr (N->V.Sym)) {
|
||||||
/* Check if this expression is a byte expression */
|
/* Check if this expression is a byte expression */
|
||||||
*IsByte = IsByteExpr (GetSymExpr (N->V.Sym));
|
CheckByteExpr (GetSymExpr (N->V.Sym), IsByte);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPR_SECTION:
|
case EXPR_SECTION:
|
||||||
if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
|
if (GetSegAddrSize (N->V.SegNum) == ADDR_SIZE_ZP) {
|
||||||
*IsByte = 1;
|
*IsByte = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPR_UNARYNODE:
|
case EXPR_UNARYNODE:
|
||||||
CheckByteExpr (N->Left, IsByte);
|
CheckByteExpr (N->Left, IsByte);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EXPR_BINARYNODE:
|
case EXPR_BINARYNODE:
|
||||||
CheckByteExpr (N->Left, IsByte);
|
CheckByteExpr (N->Left, IsByte);
|
||||||
CheckByteExpr (N->Right, IsByte);
|
CheckByteExpr (N->Right, IsByte);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Internal ("Unknown expression op: %02X", N->Op);
|
Internal ("Unknown expression op: %02X", N->Op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 */
|
/* Return the name of the symbol */
|
||||||
{
|
{
|
||||||
/* Resolve trampoline entries */
|
/* 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 */
|
/* Return the symbol index for the given symbol */
|
||||||
{
|
{
|
||||||
/* Resolve trampoline entries */
|
/* 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 */
|
/* Return the position of first occurence in the source for the given symbol */
|
||||||
{
|
{
|
||||||
/* Resolve trampoline entries */
|
/* Resolve trampoline entries */
|
||||||
|
@@ -187,13 +187,18 @@ const struct ExprNode* SymResolve (const SymEntry* Sym);
|
|||||||
* NULL. Do not call in other contexts!
|
* NULL. Do not call in other contexts!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char* GetSymName (SymEntry* Sym);
|
const char* GetSymName (const SymEntry* Sym);
|
||||||
/* Return the name of the symbol */
|
/* 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 */
|
/* 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 */
|
/* Return the position of first occurence in the source for the given symbol */
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user