/* ld65 */
#include "error.h"
-#include "expr.h"
#include "fragment.h"
-#include "fileio.h"
#include "segments.h"
-#include "spool.h"
-static FragCheck* NewFragCheck (unsigned Action)
-/* Allocate a new FragCheck struct and return it */
-{
- /* Allocate memory */
- FragCheck* FC = xmalloc (sizeof (FragCheck));
-
- /* Initialize the fields */
- FC->Next = 0;
- FC->Expr = 0;
- FC->Action = Action;
- FC->Message = INVALID_STRING_ID;
-
- /* Return the new struct */
- return FC;
-}
-
-
-
-FragCheck* ReadFragCheck (FILE* F, Fragment* Frag)
-/* Read a fragment check expression from the given file */
-{
- /* Get the object file pointer from the fragment */
- ObjData* O = Frag->Obj;
-
- /* Read the action and create a new struct */
- FragCheck* FC = NewFragCheck (ReadVar (F));
-
- /* Determine the remaining data from the action */
- switch (FC->Action) {
-
- case FRAG_ACT_WARN:
- case FRAG_ACT_ERROR:
- FC->Expr = ReadExpr (F, O);
- FC->Message = MakeGlobalStringId (O, ReadVar (F));
- break;
-
- default:
- Internal ("In module `%s', file `%s', line %lu: Invalid fragment "
- "check action: %u",
- GetObjFileName (O),
- GetSourceFileName (O, Frag->Pos.Name),
- Frag->Pos.Line, FC->Action);
- }
-
- /* Return the new fragment check */
- return FC;
-}
-
-
-
Fragment* NewFragment (unsigned char Type, unsigned Size, Section* S)
/* Create a new fragment and insert it into the section S */
{
F->Expr = 0;
InitFilePos (&F->Pos);
F->LI = 0;
- F->Check = 0;
F->Type = Type;
/* Insert the code fragment into the section */