Commit c9b03ca3 by Richard Kenner

(update_headers): Align symbol table sections, using ALIGN_SYMTABLE_OFFSET.

(update_headers): Align symbol table sections, using
ALIGN_SYMTABLE_OFFSET. Provide a default definition which does no
alignment.

From-SVN: r6833
parent 11147ebe
...@@ -4013,12 +4013,17 @@ update_headers __proto((void)) ...@@ -4013,12 +4013,17 @@ update_headers __proto((void))
symbolic_header.issMax += file_ptr->fdr.cbSs; symbolic_header.issMax += file_ptr->fdr.cbSs;
} }
#ifndef ALIGN_SYMTABLE_OFFSET
#define ALIGN_SYMTABLE_OFFSET(OFFSET) (OFFSET)
#endif
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
i = WORD_ALIGN (symbolic_header.cbLine); /* line numbers */ i = WORD_ALIGN (symbolic_header.cbLine); /* line numbers */
if (i > 0) if (i > 0)
{ {
symbolic_header.cbLineOffset = file_offset; symbolic_header.cbLineOffset = file_offset;
file_offset += i; file_offset += i;
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.ioptMax; /* optimization symbols */ i = symbolic_header.ioptMax; /* optimization symbols */
...@@ -4026,6 +4031,7 @@ update_headers __proto((void)) ...@@ -4026,6 +4031,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbOptOffset = file_offset; symbolic_header.cbOptOffset = file_offset;
file_offset += i * sizeof (OPTR); file_offset += i * sizeof (OPTR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.idnMax; /* dense numbers */ i = symbolic_header.idnMax; /* dense numbers */
...@@ -4033,6 +4039,7 @@ update_headers __proto((void)) ...@@ -4033,6 +4039,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbDnOffset = file_offset; symbolic_header.cbDnOffset = file_offset;
file_offset += i * sizeof (DNR); file_offset += i * sizeof (DNR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.ipdMax; /* procedure tables */ i = symbolic_header.ipdMax; /* procedure tables */
...@@ -4040,6 +4047,7 @@ update_headers __proto((void)) ...@@ -4040,6 +4047,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbPdOffset = file_offset; symbolic_header.cbPdOffset = file_offset;
file_offset += i * sizeof (PDR); file_offset += i * sizeof (PDR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.isymMax; /* local symbols */ i = symbolic_header.isymMax; /* local symbols */
...@@ -4047,6 +4055,7 @@ update_headers __proto((void)) ...@@ -4047,6 +4055,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbSymOffset = file_offset; symbolic_header.cbSymOffset = file_offset;
file_offset += i * sizeof (SYMR); file_offset += i * sizeof (SYMR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.iauxMax; /* aux syms. */ i = symbolic_header.iauxMax; /* aux syms. */
...@@ -4054,6 +4063,7 @@ update_headers __proto((void)) ...@@ -4054,6 +4063,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbAuxOffset = file_offset; symbolic_header.cbAuxOffset = file_offset;
file_offset += i * sizeof (TIR); file_offset += i * sizeof (TIR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = WORD_ALIGN (symbolic_header.issMax); /* local strings */ i = WORD_ALIGN (symbolic_header.issMax); /* local strings */
...@@ -4061,6 +4071,7 @@ update_headers __proto((void)) ...@@ -4061,6 +4071,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbSsOffset = file_offset; symbolic_header.cbSsOffset = file_offset;
file_offset += i; file_offset += i;
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = WORD_ALIGN (symbolic_header.issExtMax); /* external strings */ i = WORD_ALIGN (symbolic_header.issExtMax); /* external strings */
...@@ -4068,6 +4079,7 @@ update_headers __proto((void)) ...@@ -4068,6 +4079,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbSsExtOffset = file_offset; symbolic_header.cbSsExtOffset = file_offset;
file_offset += i; file_offset += i;
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.ifdMax; /* file tables */ i = symbolic_header.ifdMax; /* file tables */
...@@ -4075,6 +4087,7 @@ update_headers __proto((void)) ...@@ -4075,6 +4087,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbFdOffset = file_offset; symbolic_header.cbFdOffset = file_offset;
file_offset += i * sizeof (FDR); file_offset += i * sizeof (FDR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.crfd; /* relative file descriptors */ i = symbolic_header.crfd; /* relative file descriptors */
...@@ -4082,6 +4095,7 @@ update_headers __proto((void)) ...@@ -4082,6 +4095,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbRfdOffset = file_offset; symbolic_header.cbRfdOffset = file_offset;
file_offset += i * sizeof (symint_t); file_offset += i * sizeof (symint_t);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
i = symbolic_header.iextMax; /* external symbols */ i = symbolic_header.iextMax; /* external symbols */
...@@ -4089,6 +4103,7 @@ update_headers __proto((void)) ...@@ -4089,6 +4103,7 @@ update_headers __proto((void))
{ {
symbolic_header.cbExtOffset = file_offset; symbolic_header.cbExtOffset = file_offset;
file_offset += i * sizeof (EXTR); file_offset += i * sizeof (EXTR);
file_offset = ALIGN_SYMTABLE_OFFSET (file_offset);
} }
} }
......
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