--------------------------------------------------------------
| 933 | } |
| 934 | //-------------------------------------------------------------- |
| 935 | void debugSymbolTable_t::ld65_SymbolLoad( ld65::sym *s ) |
| 936 | { |
| 937 | int bank = -1; |
| 938 | debugSymbol_t *sym; |
| 939 | debugSymbolPage_t *page; |
| 940 | ld65::scope *scope = s->getScope(); |
| 941 | ld65::segment *seg = s->getSegment(); |
| 942 | |
| 943 | if ( s->type() == ld65::sym::LABEL ) |
| 944 | { |
| 945 | //printf("Symbol Label Load: name:\"%s\" val:%i 0x%x\n", s->name(), s->value(), s->value() ); |
| 946 | if (seg) |
| 947 | { |
| 948 | int romAddr = seg->ofs() - NES_HEADER_SIZE; |
| 949 | |
| 950 | bank = romAddr >= 0 ? romAddr / (1<<debuggerPageSize) : -1; |
| 951 | |
| 952 | //printf(" Seg: name:'%s' ofs:%i Bank:%x\n", seg->name(), romAddr, bank ); |
| 953 | } |
| 954 | //printf("\n"); |
| 955 | |
| 956 | auto pageIt = pageMap.find(bank); |
| 957 | |
| 958 | if (pageIt == pageMap.end() ) |
| 959 | { |
| 960 | page = new debugSymbolPage_t(bank); |
| 961 | |
| 962 | pageMap[bank] = page; |
| 963 | } |
| 964 | else |
| 965 | { |
| 966 | page = pageIt->second; |
| 967 | } |
| 968 | std::string name; |
| 969 | |
| 970 | if (scope) |
| 971 | { |
| 972 | scope->getFullName(name); |
| 973 | } |
| 974 | name.append(s->name()); |
| 975 | |
| 976 | //printf("Creating Symbol: %s\n", name.c_str() ); |
| 977 | |
| 978 | sym = new debugSymbol_t( s->value(), name.c_str() ); |
| 979 | |
| 980 | if ( page->addSymbol( sym ) ) |
| 981 | { |
| 982 | //printf("Failed to load sym: id:%i name:'%s' bank:%i \n", s->id(), s->name(), bank ); |
| 983 | delete sym; |
| 984 | } |
| 985 | } |
| 986 | } |
| 987 | //-------------------------------------------------------------- |
| 988 | int debugSymbolTable_t::ld65LoadDebugFile( const char *dbgFilePath ) |
| 989 | { |
no test coverage detected