static void OutputLiteral (Literal* L) /* Output one literal to the currently active data segment */ { /* Translate the literal into the target charset */ TranslateLiteral (L); /* Define the label for the literal */ g_defdatalabel (L->Label); /* Output the literal data */ g_defbytes (SB_GetConstBuf (&L->Data), SB_GetLen (&L->Data)); /* Mark the literal as output */ L->Output = 1; }
void DumpLiteralPool (void) /* Dump the literal pool */ { /* If nothing there, exit... */ if (SB_GetLen (&LiteralPool) == 0) { return; } /* Switch to the data segment */ if (IS_Get (&WritableStrings)) { g_usedata (); } else { g_userodata (); } /* Define the label */ g_defdatalabel (LiteralPoolLabel); /* Translate the buffer contents into the target charset */ TranslateLiteralPool (0); /* Output the buffer data */ g_defbytes (SB_GetConstBuf (&LiteralPool), SB_GetLen (&LiteralPool)); }