unsigned bssoffset = 0; // COF BSS segment offset
unsigned displaybanner = 1; // Display version banner
unsigned symoffset = 0; // Symbol table offset in output file
-unsigned dbgsymbase = 0; // Debug symbol base address
int noheaderflag = 0; // No header flag for ABS files
int hflags; // Value of the arg to -h option
int ttype, dtype, btype; // Type flag: 0, -1, -2, -3, -4
if (type & 0xF0000000)
{
// DEBUG SYMBOL
- // Set the correct debug symbol base address (TEXT segment)
-#if 0
- dbgsymbase = 0;
-
- for(j=0; (unsigned)j<dosymi; j++)
- dbgsymbase += obj_segsize[j][0];
-#else
- dbgsymbase = ofile->segBase[TEXT];
-#endif
-
switch (type & 0xFF000000)
{
- case 0x64000000:
- value = tval + dbgsymbase;
+ case 0x64000000: // Primary source file path and/or name
+ case 0x84000000: // Included source file path and/or name
+ case 0x44000000: // Text line number
+ value = tbase + tsegoffset + value;
+ break;
+ case 0x46000000: // Data line number (Not used by GCC/rmac)
+ value = dbase + dsegoffset + value;
break;
- case 0x44000000:
- case 0x46000000:
- case 0x48000000:
- value = tval + dbgsymbase + value;
+ case 0x48000000: // BSS line number (Not used by GCC/rmac)
+ value = bbase + bsegoffset + value;
default:
+ // All other debug symbols don't need to be relocated
+ // XXX Not true, but matches ALN behavior.
break;
}
break;
case 'g':
case 'G': // Output source level debugging
- printf("\'g\' flag not currently implemented\n");
- gflag = 0;
- /*
if (gflag) warn('g', 1);
gflag = 1;
- */
break;
case 'i':
case 'I': // Include binary file