pbc_merge - Man Page

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.

Info

2020-06-15 perl v5.30.3 User Contributed Perl Documentation