/* */
/* */
/* */
-/* (C) 2002-2011, Ullrich von Bassewitz */
+/* (C) 2002-2012, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
#include "objdefs.h"
#include "optdefs.h"
#include "scopedefs.h"
-#include "segdefs.h"
#include "symdefs.h"
#include "xmalloc.h"
+static void SkipSpanList (FILE* F)
+/* Skip a span list from the given file */
+{
+ /* Count preceeds the list */
+ unsigned long Count = ReadVar (F);
+
+ /* Skip indices */
+ while (Count--) {
+ (void) ReadVar (F);
+ }
+}
+
+
+
static void SkipExpr (FILE* F)
/* Skip an expression from the given file */
{
break;
case EXPR_SECTION:
+ case EXPR_BANK:
/* Read the segment number */
- (void) Read8 (F);
+ (void) ReadVar (F);
break;
default:
unsigned long NextSeg = ftell (F) + DataSize;
const char* Name = GetString (&StrPool, ReadVar (F));
unsigned Len = strlen (Name);
- unsigned long Size = Read32 (F);
- unsigned Align = (1U << Read8 (F));
+ unsigned Flags = ReadVar (F);
+ unsigned long Size = ReadVar (F);
+ unsigned long Align = ReadVar (F);
unsigned char AddrSize = Read8 (F);
unsigned long FragCount = ReadVar (F);
/* Print the data */
printf (" Name:%*s\"%s\"\n", (int)(24-Len), "", Name);
+ printf (" Flags:%25u\n", Flags);
printf (" Size:%26lu\n", Size);
- printf (" Alignment:%21u\n", Align);
+ printf (" Alignment:%21lu\n", Align);
printf (" Address size:%14s0x%02X (%s)\n", "", AddrSize,
AddrSizeToStr (AddrSize));
printf (" Fragment count:%16lu\n", FragCount);
unsigned Len = strlen (Name);
/* Skip both line info lists */
- SkipLineInfoList (F);
+ SkipLineInfoList (F);
SkipLineInfoList (F);
/* Print the header */
}
/* Skip both line infos lists */
- SkipLineInfoList (F);
+ SkipLineInfoList (F);
SkipLineInfoList (F);
/* Print the header */
}
/* Skip both line info lists */
- SkipLineInfoList (F);
+ SkipLineInfoList (F);
SkipLineInfoList (F);
/* Print the header */
for (I = 0; I < Count; ++I) {
FilePos Pos;
-
- /* Type of line info */
- unsigned Type = ReadVar (F);
+ unsigned Type;
/* File position of line info */
ReadFilePos (F, &Pos);
+ /* Type of line info */
+ Type = ReadVar (F);
+
+ /* Skip the spans */
+ SkipSpanList (F);
+
/* Print the header */
printf (" Index:%27u\n", I);
const char* Name;
unsigned Len;
- unsigned SpanCount;
- unsigned J;
/* Read the data */
unsigned ParentId = ReadVar (F);
printf (" Label id:%22u\n", LabelId);
}
- /* Spans */
- SpanCount = ReadVar (F);
- printf (" Segment spans:\n");
- printf (" Count:%23u\n", SpanCount);
-
- for (J = 0; J < SpanCount; ++J) {
- printf (" Index:%23u\n", J);
- printf (" Segment:%19lu\n", ReadVar (F));
- printf (" Start:%13s0x%06lX\n", "", ReadVar (F));
- printf (" Size:%14s0x%06lX\n", "", ReadVar (F));
- }
+ /* Skip the spans */
+ SkipSpanList (F);
}
/* Destroy the string pool */
unsigned long NextSeg = ftell (F) + DataSize;
const char* Name = GetString (&StrPool, ReadVar (F));
unsigned Len = strlen (Name);
- unsigned long Size = Read32 (F);
+ unsigned long Size = ReadVar (F);
/* Skip alignment, type and fragment count */
- (void) Read8 (F);
+ (void) ReadVar (F);
(void) Read8 (F);
(void) ReadVar (F);
-
+