.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.16) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MAIN.C 1" .TH MAIN.C 1 "2012-01-08" "Debian Project" "Debian GNU/Linux manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" pbc_merge \- Merge multiple Parrot bytecode (PBC) files into a single PBC file. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& pbc_merge \-o out.pbc input1.pbc input2.pbc ... .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This program takes two or more \s-1PBC\s0 files and produces a single merged output \s-1PBC\s0 file with a single fix-up table and constants table. .SS "Command-Line Options" .IX Subsection "Command-Line Options" .ie n .IP """\-o out.pbc""" 4 .el .IP "\f(CW\-o out.pbc\fR" 4 .IX Item "-o out.pbc" The name of the \s-1PBC\s0 file to produce, containing the merged segments from the input \s-1PBC\s0 files. .SS "Functions" .IX Subsection "Functions" .ie n .IP """static void help(void)""" 4 .el .IP "\f(CWstatic void help(void)\fR" 4 .IX Item "static void help(void)" Print out the user help info. .ie n .IP """static PackFile_ByteCode* pbc_merge_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)""" 4 .el .IP "\f(CWstatic PackFile_ByteCode* pbc_merge_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)\fR" 4 .IX Item "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. .ie n .IP """static PackFile_ConstTable* pbc_merge_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)""" 4 .el .IP "\f(CWstatic PackFile_ConstTable* pbc_merge_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile *pf)\fR" 4 .IX Item "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 \s-1PBC\s0 files. .ie n .IP """static void pbc_merge_debugs(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)""" 4 .el .IP "\f(CWstatic void pbc_merge_debugs(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)\fR" 4 .IX Item "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 \s-1PBC\s0 files. .ie n .IP """static void pbc_fixup_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)""" 4 .el .IP "\f(CWstatic void pbc_fixup_bytecode(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs, PackFile_ByteCode *bc)\fR" 4 .IX Item "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. .ie n .IP """static void pbc_fixup_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)""" 4 .el .IP "\f(CWstatic void pbc_fixup_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)\fR" 4 .IX Item "static void pbc_fixup_constants(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)" Fixup constants. This includes correcting pointers into bytecode. .ie n .IP """static PackFile* pbc_merge_begin(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)""" 4 .el .IP "\f(CWstatic PackFile* pbc_merge_begin(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)\fR" 4 .IX Item "static PackFile* pbc_merge_begin(PARROT_INTERP, pbc_merge_input **inputs, int num_inputs)" This is the function that drives \s-1PBC\s0 merging process. .ie n .IP """static void pbc_merge_write(PARROT_INTERP, PackFile *pf, const char *filename)""" 4 .el .IP "\f(CWstatic void pbc_merge_write(PARROT_INTERP, PackFile *pf, const char *filename)\fR" 4 .IX Item "static void pbc_merge_write(PARROT_INTERP, PackFile *pf, const char *filename)" This functions writes out the merged packfile. .ie n .IP """int main(int argc, const char **argv)""" 4 .el .IP "\f(CWint main(int argc, const char **argv)\fR" 4 .IX Item "int main(int argc, const char **argv)" The main function that grabs console input, reads in the packfiles provided they exist, hands them to another function that runs the merge process and finally writes out the produced packfile.