MAIN.C(1)

NAME
pbc_merge - Merge multiple Parrot bytecode (PBC) files into
                  a single PBC file.

SYNOPSIS
 pbc_merge -o out.pbc input1.pbc input2.pbc ...

DESCRIPTION
This program takes two or more PBC files and produces a single merged output PBC file with a single fix-up table and constants table.

  Command-Line Options

"-o out.pbc"
    The name of the PBC file to produce, containing the merged segments from the input PBC files.

"-?" or "--help"

  Functions
"static void help(void)"
    Prints usage info.

"static void ensure_libdep(PARROT_INTERP, PackFile_ByteCode *bc, STRING *lib)"
    Ensures that the libdep "lib" is in the libdeps list for "bc".

"static PackFile_ByteCode* pbc_merge_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)"
    This function merges the bytecode from the input packfiles, storing the offsets that each bit of bytecode now exists at.

"static PackFile_ConstTable* pbc_merge_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)"
    This function merges the constants tables from the input PBC files.

"static PackFile_Annotations* pbc_merge_annotations(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf, PackFile_ByteCode *bc)"
    Merge Annotations segments from "inputs" into a new "PackFile_Annotations" segment. Returns the new merged segment (which is also already appended to the directory in "pf").

"static void pbc_merge_debugs(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)"
    This function merges the debug segments from the input PBC files.

"static void pbc_fixup_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)"
    Fixup bytecode. This includes correcting pointers into the constant table and updating the ops mapping.

"static void pbc_fixup_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)"
    Fixup constants. This includes correcting pointers into bytecode.

"static PackFile* pbc_merge_begin(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)"
    This is the function that drives PBC merging process.

"static void pbc_merge_write(PARROT_INTERP, PackFile *pf, const char *filename)"
    This functions writes out the merged packfile.

"int main(int argc, const char **argv)"
    The main function checks arguments, reads in the packfiles provided they exist, call the merge functions and writes out the produced packfile.