

            bmerge (5) --- merge object code files into one file     01/03/83


            _U_s_a_g_e

                 bmerge {<object file>}


            _D_e_s_c_r_i_p_t_i_o_n

                 'Bmerge'  is a program which will take the object code files
                 given as arguments, if any, and create  a  new  object  code
                 file  that is written to standard output.  If you build your
                 programs as separately compiled modules,  with  each  module
                 containing  many subroutines/functions, you can use 'bmerge'
                 to combine those modules into one object code file for buil-
                 ding a library.

                 'Bmerge' accepts directives from standard input to  indicate
                 the  order  and  type  of  subprograms to be included in the
                 resulting object code file; by default, no subprograms  will
                 be included if there is no input.

                 The  following may be included in the input stream to direct
                 the creation of the object code file :

                      _i_n_p_u_t _i_t_e_m         _m_e_a_n_i_n_g
                      <name>             include the named subprogram at the
                                         current point in the object code
                      .rfl               reset the "forced load" flag at this
                                         point
                      .sfl               set the "forced load" flag at this
                                         point

                 A sample input stream would be :

                      ave
                      .sfl
                      add
                      sub
                      mul
                      .rfl
                      div

                 If the files specified in the  argument  list  contain  more
                 than  one  occurrence of an entry point name (i.e., possibly
                 different versions of the same subprogram), then the version
                 which gets included depends on the order in which the  files
                 were   specified   in   the  command  invocation.   Multiple
                 occurrences of an entry point name in the input to  'bmerge'
                 causes  inclusion of more than one version of the named sub-
                 program, with the inclusion order being the reverse  of  the
                 order of occurrence (last-in, first-out basis).


            _E_x_a_m_p_l_e_s

                 entry_names> bmerge ave.b ave_lib.b >new_ave.b
                 files .b$ | change .b$ | bmerge [files .b$] >all_object.b


            bmerge (5)                    - 1 -                    bmerge (5)




            bmerge (5) --- merge object code files into one file     01/03/83


            _M_e_s_s_a_g_e_s

                 "<name>: too  many  object  files"  when trying to merge too
                      many object code files at the same time.
                 "<name>: not found in object files" when trying to include a
                      nonexistant routine.
                 "bad object file..."  for an ill-formatted object code file.
                 "<name>: error copying object module" if the length  of  the
                      routine in the resulting object code file is not of the
                      same length as in the source file.
                 "block size (<size>) exceeds buffer space" if the next block
                      to  be  read  from the input object code file is larger
                      than the program's file buffer.
                 "<name>: extraneous END block" for object code  files  which
                      have too many END blocks.

                 various error messages from the dynamic storage routines


            _B_u_g_s

                 Binary  output is used to generate the resulting object code
                 file.  If standard output  is  the  terminal,  unpredictable
                 results  may  be obtained because of the irrational behavior
                 of binary I/O to the terminal.

                 Internal     procedures     (procedures/functions     within
                 procedures/functions)  in  PL/1,  Pascal, or PL/P modules if
                 specified by name, will not be merged correctly.

                 If a module has multiple entry points, only the first one is
                 recognized.


            _S_e_e _A_l_s_o

                 bnames (5), brefs (5), ld (1), lorder (1)





















            bmerge (5)                    - 2 -                    bmerge (5)


