Commit 338f21be by Jim Wilson

(print_symbol): The index field of a global symbol is the symbol table index of…

(print_symbol): The index field of a global symbol is the symbol table index of the corresponding local symbol...

(print_symbol): The index field of a global symbol
is the symbol table index of the corresponding local symbol, not
an index into the aux table.
(print_file_desc): Print out size of line number
information rather than repeating line number count.
(print_file_desc): The cbLineOffset field of a PDR
is relative to the cbLineOffset field of the FDR.  Also, when
computing line_end of the last PDR, use cbLineOffset, not
ilineBase.

From-SVN: r6711
parent d71cf0ca
...@@ -957,11 +957,7 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd) ...@@ -957,11 +957,7 @@ print_symbol (sym_ptr, number, strbase, aux_base, ifd)
aux_base[index].isym, type_to_string (aux_base, index+1)); aux_base[index].isym, type_to_string (aux_base, index+1));
} }
else /* global symbol */ else /* global symbol */
{ printf (" Local symbol: %d\n", index);
used_ptr[index] = 1;
printf (" Type: %s\n",
type_to_string (aux_base, index));
}
if (want_scope) if (want_scope)
{ {
...@@ -1161,7 +1157,7 @@ print_file_desc (fdp, number) ...@@ -1161,7 +1157,7 @@ print_file_desc (fdp, number)
width, "Line numbers", width, "Line numbers",
(ulong) fdp->cbLineOffset, (ulong) fdp->cbLineOffset,
(ulong) fdp->cline, (ulong) fdp->cline,
(ulong) fdp->cline, (ulong) fdp->cbLine,
(ulong) (fdp->cbLineOffset + sym_hdr.cbLineOffset)); (ulong) (fdp->cbLineOffset + sym_hdr.cbLineOffset));
printf(" %-*s %11lu %11lu %11lu %11lu\n", printf(" %-*s %11lu %11lu %11lu %11lu\n",
...@@ -1294,14 +1290,15 @@ print_file_desc (fdp, number) ...@@ -1294,14 +1290,15 @@ print_file_desc (fdp, number)
{ {
int delta, count; int delta, count;
long cur_line = proc_ptr->lnLow; long cur_line = proc_ptr->lnLow;
uchar *line_ptr = ((uchar *)lines) + proc_ptr->cbLineOffset; uchar *line_ptr = (((uchar *)lines) + proc_ptr->cbLineOffset
+ fdp->cbLineOffset);
uchar *line_end; uchar *line_end;
if (pdi == fdp->cpd + fdp->ipdFirst - 1) /* last procedure */ if (pdi == fdp->cpd + fdp->ipdFirst - 1) /* last procedure */
line_end = ((uchar *)lines) + fdp->cbLine + fdp->ilineBase; line_end = ((uchar *)lines) + fdp->cbLine + fdp->cbLineOffset;
else /* not last proc. */ else /* not last proc. */
line_end = ((uchar *)lines) + proc_desc[pdi+1].cbLineOffset; line_end = (((uchar *)lines) + proc_desc[pdi+1].cbLineOffset
+ fdp->cbLineOffset);
printf ("\n\tThere are %lu bytes holding line numbers, starting at %lu.\n", printf ("\n\tThere are %lu bytes holding line numbers, starting at %lu.\n",
(ulong) (line_end - line_ptr), (ulong) (line_end - line_ptr),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment