Skip to content

cli / lpcc

lpcc is a command line tool to dump compiled LPC code, it is useful for understanding how FluffOS compiles LPC code.

Usage

bash
./lpcc config_file lpc_file

Example output

bash
$ ./lpcc etc/config.test ../test.c
Processing config file: etc/config.test
maximum local variables: invalid new value, resetting to default.
living hash table size: invalid new value, resetting to default.
New Debug log location: "log/debug.log".
Execution root: ./
Initializing internal stuff ....
Event backend in use: epoll
Loading simul_efun file : /single/simul_efun
/std/base64.c line 56: Warning: Unused local variable 'p'
  }
   ^
/std/base64.c line 56: Warning: Unused local variable 'rlen'
  }
   ^
/std/number_string.c line 54: Warning: Unused local variable 'parts'
  }
   ^
/std/number_string.c line 54: Warning: Unused local variable 'part'
  }
   ^
Loading master file: /single/master
NAME: /single/master.c
INHERITS:
      name                    fio    vio
      ----------------        ---    ---
        inherit/master/valid.c      0      0
FUNCTIONS:
      name                  offset  mods   flags   fio  # locals  # args # def args
      --------------------- ------  ----  -------  ---  --------  ------ ----------
   0: get_inherit_called         0   +--  i-s----    0
   1: valid_shadow               0   +--  i-s----    1
   2: valid_author               0   +--  i-s----    2
   3: valid_override             0   +--  i-s----    3
   4: valid_seteuid              0   +--  i-s----    4
   5: valid_domain               0   +--  i-s----    5
   6: valid_socket               0   +--  i-s----    6
   7: valid_write                0   +--  i-s----    7
   8: valid_read                 0   +--  i-s----    8
   9: valid_bind                 0   +--  i-s----    9
  10: valid_hide                 0   +--  i-s----   10
  11: create                     0   +--  i-s----   11
  12: clear_last_error           0   +--  --s----              0       0          0
  13: trace_to_last_assert       1   ---  --s----              2       0          0
  14: catch_tell                 2   +--  --s----              0       1          0
  15: compile_object             3   +--  --s----              0       1          0
  16: update_file                4   ---  --s----              3       1          0
  17: log_error                  5   +--  --s----              0       2          0
  18: save_ed_setup              6   +--  --s----              1       2          0
  19: retrieve_ed_setup          7   +--  --s----              2       1          0
  20: destruct_environment_of       8   +--  --s----              0       1          0
  21: make_path_absolute         9   +--  --s----              0       1          0
  22: get_root_uid              10   +--  --s----              0       0          0
  23: get_bb_uid                11   +--  --s----              0       0          0
  24: privs_file                12   +--  --s----              0       1          0
  25: error_handler             13   ---  --s----              2       2          0
  26: get_include_path          14   +--  --s----              0       1          0
  27: valid_database            15   +--  --s----              0       3          0
  28: object_name               16   +--  --s----              0       1          0
  29: get_last_error            17   +--  --s----              0       0          0
  30: domain_file               18   +--  --s----              0       1          0
  31: creator_file              19   +--  --s----              0       1          0
  32: author_file               20   +--  --s----              0       1          0
  33: flag                      21   +--  --s----              1       1          0
  34: connect                   22   +--  --s----              2       0          0
  35: crash                     23   ---  --s----              1       3          0
  36: epilog                    24   +--  --s----              1       1          0
  37: preload                   25   +--  --s----              2       1          0
  38: #global_init#             26   ---  --s----              0       0          0

;;; inherit/master/valid.c

VARIABLES:
   0: public int inherit_called
STRINGS:
   0: inherit/master/valid.c
   1: include/globals.h
   2: include/tests.h
   3: Root
   4: query_prevent_shadow
   5: /single/simul_efun
   6: move_object
   7: /inherit/base
DISASSEMBLY:

;; Function: int get_inherit_called()
0000:  43 00 00                  global                             ; inherit_called(0)
0003:  2E                        return                             ;
; inherit/master/valid.c:10

;; Function: void create()
0004:  2F                        return_zero                        ;
; inherit/master/valid.c:10

;; Function: int valid_shadow(object)
0005:  3F 00                     local                              ; LV0
0007:  04 B9 01                  F_EFUN1                            ; EFUN: getuid(441)
000a:  0E 03                     short_string                       ; "Root"
000c:  13 04 00                  branch_ne                          ; 0004 (0011)
000f:  10                        const1                             ;
0010:  2E                        return                             ;
; inherit/master/valid.c:20
0011:  3C 00                     transfer_local                     ; LV0
0013:  02 02 04 40               F_PUSH                             ; push string 4, number 0
0017:  04 8F 00                  F_EFUN1                            ; EFUN: previous_object(143)
001a:  07 87 00 03               F_EFUNV                            ; EFUN: call_other(135)
001e:  17 03 00                  branch_when_zero                   ; 0003 (0022)
0021:  2F                        return_zero                        ;
0022:  10                        const1                             ;
0023:  2E                        return                             ;
0024:  2F                        return_zero                        ;
; inherit/master/valid.c:24

;; Function: int valid_author(string)
0025:  10                        const1                             ;
0026:  2E                        return                             ;
; inherit/master/valid.c:24

;; Function: int valid_override(string,string)
0027:  02 02 C0 05               F_PUSH                             ; push local 0, string 5
002b:  13 04 00                  branch_ne                          ; 0004 (0030)
002e:  10                        const1                             ;
002f:  2E                        return                             ;
; inherit/master/valid.c:45
0030:  3C 01                     transfer_local                     ; LV1
0032:  0E 06                     short_string                       ; "move_object"
0034:  30                        ==                                 ;
0035:  26 07 00                  &&                                 ; 0007 (003d)
0038:  02 02 C0 07               F_PUSH                             ; push local 0, string 7
003c:  31                        !=                                 ;
003d:  17 03 00                  branch_when_zero                   ; 0003 (0041)
0040:  2F                        return_zero                        ;
0041:  10                        const1                             ;
0042:  2E                        return                             ;
0043:  2F                        return_zero                        ;
; inherit/master/valid.c:48

;; Function: int valid_seteuid(object,string)
0044:  10                        const1                             ;
0045:  2E                        return                             ;
; inherit/master/valid.c:48

;; Function: int valid_domain(string)
0046:  10                        const1                             ;
0047:  2E                        return                             ;
; inherit/master/valid.c:48

;; Function: int valid_socket(object,string,mixed *)
0048:  10                        const1                             ;
0049:  2E                        return                             ;
; inherit/master/valid.c:48

;; Function: int valid_write(string,mixed,string)
004a:  44 00 00                  global_lvalue                      ; inherit_called(0)
004d:  36                        inc(x)                             ;
004e:  10                        const1                             ;
004f:  2E                        return                             ;
; inherit/master/valid.c:90

;; Function: int valid_read(string,mixed,string)
0050:  44 00 00                  global_lvalue                      ; inherit_called(0)
0053:  36                        inc(x)                             ;
0054:  10                        const1                             ;
0055:  2E                        return                             ;
; inherit/master/valid.c:99

;; Function: int valid_bind()
0056:  44 00 00                  global_lvalue                      ; inherit_called(0)
0059:  36                        inc(x)                             ;
005a:  10                        const1                             ;
005b:  2E                        return                             ;
; inherit/master/valid.c:104

;; Function: int valid_hide()
005c:  44 00 00                  global_lvalue                      ; inherit_called(0)
005f:  36                        inc(x)                             ;
0060:  10                        const1                             ;
0061:  2E                        return                             ;
; inherit/master/valid.c:110

;; Function: void #global_init#()
0062:  0F                        const0                             ;
0063:  44 00 00                  global_lvalue                      ; inherit_called(0)
0066:  61                        (void)assign                       ;
0067:  2F                        return_zero                        ;
; inherit/master/valid.c:8

;;;  *** Line Number Info ***

absolute line -> (file, line) table:
0 lines from 1 [inherit/master/valid.c]
11 lines from 2 [include/globals.h]
27 lines from 3 [include/tests.h]
25 lines from 2 [include/globals.h]
6 lines from 1 [inherit/master/valid.c]
11 lines from 2 [include/globals.h]
27 lines from 3 [include/tests.h]
25 lines from 2 [include/globals.h]
108 lines from 1 [inherit/master/valid.c]

address -> absolute line table:
0000-0004: 136
0005-0010: 146
0011-0026: 150
0027-002f: 171
0030-0049: 174
004a-004f: 216
0050-0055: 225
0056-005b: 230
005c-0061: 236
0062-0067: 134

;;; single/master.c

VARIABLES:
   0: public nosave int has_error
   1: public nosave string last_error
STRINGS:
   0: single/master.c
   1: include/globals.h
   2: include/tests.h
   3:
   4: function
   5: __assert
   6: %O
   7: test
   8: /command/tests
   9: main
  10: speed
  11: /command/speed
  12: The only supproted flag is 'test
  13: '.\n
  14: /clone/login
  15: It looks like someone is working
  16: MASTER: compile_object is called
  17: \n
  18: /test/virtual
  19: /single/void
  20: Master object shouts: Damn!\nMast
  21: /etc/preload
  22: .c
  23: Preloading :
  24: ...
  25: ??
  26: \nError
  27:  when loading
  28: (
  29: .
  30: )\n
  31: /log/compile
  32: .edrc
  33: %d
  34: The object containing you was de
  35: move
  36: query_cwd
  37: Root
  38: Backbone
  39: /single/simul_efun
  40: creator_file
  41: domain_file
  42: author_file
  43: program
  44: /single/tests/efuns/call_out.c
  45: error
  46: *Too long evaluation. Execution
  47: *Error caught\n
  48: Error: %s\nCurrent object: %O\nCur
  49: object
  50: No current object
  51: No current program
  52: file
  53: line
  54: trace
  55: Line: %O  File: %O Object: %O Pr
  56: No object
  57: No program
  58: /log/log
  59: /clone/mgip1
  60: /clone/mgip1.c
  61: /include/m_gip1
  62: /include
  63: /clone/mgip2
  64: /clone/mgip2.c
  65: /include/m_gip2
  66: /clone/mgip3
  67: /clone/mgip3.c
  68: /clone/mgip4
  69: /clone/mgip4.c
  70: :DEFAULT:
  71: MASTER valid_database called:
  72: ob:%O action:%O info:%O
  73: name
DISASSEMBLY:

;; Function: string clear_last_error()
0000:  0E 03                     short_string                       ; ""
0002:  44 02 00                  global_lvalue                      ; last_error(2)
0005:  61                        (void)assign                       ;
0006:  2F                        return_zero                        ;
; single/master.c:12

;; Function: mapping * trace_to_last_assert()
0007:  03 49 01                  F_EFUN0                            ; EFUN: dump_trace(329)
000a:  62 00                     (void)assign_local                 ; LV0
; single/master.c:17
000c:  0F                        const0                             ;
000d:  62 01                     (void)assign_local                 ; LV1
000f:  19 1A 00                  branch                             ; 001a (002a)
; single/master.c:18
0012:  02 05 40 47 04 C1 C0      F_PUSH                             ; push number 0, number 7, string 4, local 1, local 0
0019:  47                        index                              ;
001a:  47                        index                              ;
001b:  4B                        nn_range                           ;
001c:  0E 05                     short_string                       ; "__assert"
001e:  13 09 00                  branch_ne                          ; 0009 (0028)
; single/master.c:19
0021:  02 03 40 C1 C0            F_PUSH                             ; push number 0, local 1, local 0
0026:  4B                        nn_range                           ;
0027:  2E                        return                             ;
; single/master.c:20
0028:  23 01                     loop_incr                          ; LV1
; single/master.c:22
002a:  02 02 C1 C0               F_PUSH                             ; push local 1, local 0
002e:  04 91 00                  F_EFUN1                            ; EFUN: sizeof(145)
0031:  1D 20 00                  bbranch_lt                         ; 0020 (0012)
; single/master.c:18
0034:  3C 00                     transfer_local                     ; LV0
0036:  2E                        return                             ;
0037:  2F                        return_zero                        ;
; single/master.c:23

;; Function: string get_last_error()
0038:  02 02 82 03               F_PUSH                             ; push global 2, string 3
003c:  13 0D 00                  branch_ne                          ; 000d (004a)
; single/master.c:27
003f:  0E 06                     short_string                       ; "%O"
0041:  2C 0D 00 00               F_CALL_FUNCTION_BY_ADDRESS         ; trace_to_last_assert, pushed_args:0
0045:  07 0E 01 02               F_EFUNV                            ; EFUN: sprintf(270)
0049:  2E                        return                             ;
; single/master.c:28
004a:  43 02 00                  global                             ; last_error(2)
004d:  2E                        return                             ;
; single/master.c:30

;; Function: void flag(string)
004e:  3F 00                     local                              ; LV0
0050: switch
      type: 1f table: 00af-00c3 deflt: 009e
0058:  27 0C 00                  catch                              ; 000c
005b:  02 02 08 09               F_PUSH                             ; push string 8, string 9
005f:  07 87 00 02               F_EFUNV                            ; EFUN: call_other(135)
0063:  01                        pop                                ;
0064:  28                        end_catch                          ;
0065:  62 01                     (void)assign_local                 ; LV1
; single/master.c:37
0067:  3F 01                     local                              ; LV1
0069:  17 0C 00                  branch_when_zero                   ; 000c (0076)
; single/master.c:38
006c:  10                        const1                             ;
006d:  44 01 00                  global_lvalue                      ; has_error(1)
0070:  61                        (void)assign                       ;
; single/master.c:39
0071:  3F 01                     local                              ; LV1
0073:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
0076:  19 4C 00                  branch                             ; 004c (00c3)
; single/master.c:40
0079:  27 0C 00                  catch                              ; 000c
007c:  02 02 0B 09               F_PUSH                             ; push string 11, string 9
0080:  07 87 00 02               F_EFUNV                            ; EFUN: call_other(135)
0084:  01                        pop                                ;
0085:  28                        end_catch                          ;
0086:  62 01                     (void)assign_local                 ; LV1
; single/master.c:44
0088:  3F 01                     local                              ; LV1
008a:  17 0C 00                  branch_when_zero                   ; 000c (0097)
; single/master.c:45
008d:  10                        const1                             ;
008e:  44 01 00                  global_lvalue                      ; has_error(1)
0091:  61                        (void)assign                       ;
; single/master.c:46
0092:  3F 01                     local                              ; LV1
0094:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
; single/master.c:47
0097:  0F                        const0                             ;
0098:  04 48 01                  F_EFUN1                            ; EFUN: shutdown(328)
009b:  19 27 00                  branch                             ; 0027 (00c3)
; single/master.c:49
009e:  02 02 0C C0               F_PUSH                             ; push string 12, local 0
00a2:  63                        +                                  ;
00a3:  0E 0D                     short_string                       ; "'.\n"
00a5:  63                        +                                  ;
00a6:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
00a9:  19 19 00                  branch                             ; 0019 (00c3)
00ac:  19 16 00                  branch                             ; 0016 (00c3)
; single/master.c:52
      switch table (for 0050)
        "test"  0058
        "speed" 0079
; single/master.c:35
00c3:  43 01 00                  global                             ; has_error(1)
00c6:  17 07 00                  branch_when_zero                   ; 0007 (00ce)
00c9:  0C 01                     -byte                              ; -1
00cb:  04 48 01                  F_EFUN1                            ; EFUN: shutdown(328)
00ce:  2F                        return_zero                        ;
; single/master.c:55

;; Function: void catch_tell(string)
00cf:  10                        const1                             ;
00d0:  44 01 00                  global_lvalue                      ; has_error(1)
00d3:  61                        (void)assign                       ;
00d4:  2F                        return_zero                        ;
; single/master.c:60

;; Function: object connect()
00d5:  27 0B 00                  catch                              ; 000b
00d8:  0E 0E                     short_string                       ; "/clone/login"
00da:  07 8C 00 01               F_EFUNV                            ; EFUN: new(140)
00de:  62 00                     (void)assign_local                 ; LV0
00e0:  28                        end_catch                          ;
00e1:  62 01                     (void)assign_local                 ; LV1
; single/master.c:68
00e3:  3F 01                     local                              ; LV1
00e5:  17 12 00                  branch_when_zero                   ; 0012 (00f8)
; single/master.c:70
00e8:  0E 0F                     short_string                       ; "It looks like someone is work"
00ea:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
; single/master.c:71
00ed:  3F 01                     local                              ; LV1
00ef:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
; single/master.c:72
00f2:  03 89 00                  F_EFUN0                            ; EFUN: this_object(137)
00f5:  04 92 00                  F_EFUN1                            ; EFUN: destruct(146)
; single/master.c:73
00f8:  3C 00                     transfer_local                     ; LV0
00fa:  2E                        return                             ;
00fb:  2F                        return_zero                        ;
; single/master.c:75

;; Function: mixed compile_object(string)
00fc:  02 02 10 C0               F_PUSH                             ; push string 16, local 0
0100:  63                        +                                  ;
0101:  0E 11                     short_string                       ; "\n"
0103:  63                        +                                  ;
0104:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
; single/master.c:85
0107:  3C 00                     transfer_local                     ; LV0
0109:  0E 12                     short_string                       ; "/test/virtual"
010b:  13 0A 00                  branch_ne                          ; 000a (0116)
; single/master.c:86
010e:  02 02 13 41               F_PUSH                             ; push string 19, number 1
0112:  05 C6 00                  F_EFUN2                            ; EFUN: find_object(198)
0115:  2E                        return                             ;
0116:  2F                        return_zero                        ;
0117:  2F                        return_zero                        ;
; single/master.c:87

;; Function: void crash(string,object,object)
0118:  03 BE 00                  F_EFUN0                            ; EFUN: users(190)
011b:  1E 00 03                  foreach                            ; (array | string) local 3
011e:  19 09 00                  branch                             ; 0009 (0128)
; single/master.c:98
0121:  02 02 C3 14               F_PUSH                             ; push local 3, string 20
0125:  05 C2 00                  F_EFUN2                            ; EFUN: tell_object(194)
0128:  1F 08 00                  next_foreach                       ; 0008 (0121)
012b:  2F                        return_zero                        ;
; single/master.c:99

;; Function: string * update_file(string)
012c:  3C 00                     transfer_local                     ; LV0
012e:  04 E6 00                  F_EFUN1                            ; EFUN: read_file(230)
0131:  62 02                     (void)assign_local                 ; LV2
; single/master.c:124
0133:  3F 02                     local                              ; LV2
0135:  18 06 00                  branch_when_non_zero               ; 0006 (013c)
; single/master.c:125
0138:  11 00 00                  aggregate                          ; 0
013b:  2E                        return                             ;
; single/master.c:126
013c:  3C 02                     transfer_local                     ; LV2
013e:  0E 11                     short_string                       ; "\n"
0140:  05 95 00                  F_EFUN2                            ; EFUN: explode(149)
0143:  62 01                     (void)assign_local                 ; LV1
; single/master.c:128
0145:  0F                        const0                             ;
0146:  62 03                     (void)assign_local                 ; LV3
0148:  19 18 00                  branch                             ; 0018 (0161)
; single/master.c:129
014b:  02 03 40 C3 C1            F_PUSH                             ; push number 0, local 3, local 1
0150:  47                        index                              ;
0151:  47                        index                              ;
0152:  0B 23                     byte                               ; 35
0154:  13 0A 00                  branch_ne                          ; 000a (015f)
; single/master.c:130
0157:  02 02 40 C3               F_PUSH                             ; push number 0, local 3
015b:  40 01                     local_lvalue                       ; LV1
015d:  48                        index_lvalue                       ;
015e:  61                        (void)assign                       ;
; single/master.c:131
015f:  23 03                     loop_incr                          ; LV3
; single/master.c:133
0161:  02 02 C3 C1               F_PUSH                             ; push local 3, local 1
0165:  04 91 00                  F_EFUN1                            ; EFUN: sizeof(145)
0168:  1D 1E 00                  bbranch_lt                         ; 001e (014b)
; single/master.c:129
016b:  3C 01                     transfer_local                     ; LV1
016d:  2E                        return                             ;
016e:  2F                        return_zero                        ;
; single/master.c:134

;; Function: string * epilog(int)
016f:  0E 15                     short_string                       ; "/etc/preload"
0171:  2C 10 00 01               F_CALL_FUNCTION_BY_ADDRESS         ; update_file, pushed_args:1
0175:  62 01                     (void)assign_local                 ; LV1
; single/master.c:143
0177:  3C 01                     transfer_local                     ; LV1
0179:  2E                        return                             ;
; single/master.c:144

;; Function: void preload(string)
017a:  02 02 C0 16               F_PUSH                             ; push local 0, string 22
017e:  63                        +                                  ;
017f:  04 E4 00                  F_EFUN1                            ; EFUN: file_size(228)
0182:  0C 01                     -byte                              ; -1
0184:  13 03 00                  branch_ne                          ; 0003 (0188)
0187:  2F                        return_zero                        ;
; single/master.c:153
0188:  03 F2 00                  F_EFUN0                            ; EFUN: time(242)
018b:  62 01                     (void)assign_local                 ; LV1
; single/master.c:156
018d:  02 02 17 C0               F_PUSH                             ; push string 23, local 0
0191:  63                        +                                  ;
0192:  0E 18                     short_string                       ; "..."
0194:  63                        +                                  ;
0195:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
; single/master.c:157
0198:  27 0C 00                  catch                              ; 000c
019b:  02 02 C0 19               F_PUSH                             ; push local 0, string 25
019f:  07 87 00 02               F_EFUNV                            ; EFUN: call_other(135)
01a3:  01                        pop                                ;
01a4:  28                        end_catch                          ;
01a5:  62 02                     (void)assign_local                 ; LV2
; single/master.c:158
01a7:  3F 02                     local                              ; LV2
01a9:  17 16 00                  branch_when_zero                   ; 0016 (01c0)
; single/master.c:159
01ac:  02 02 1A C2               F_PUSH                             ; push string 26, local 2
01b0:  63                        +                                  ;
01b1:  0E 1B                     short_string                       ; " when loading "
01b3:  63                        +                                  ;
01b4:  3F 00                     local                              ; LV0
01b6:  63                        +                                  ;
01b7:  0E 11                     short_string                       ; "\n"
01b9:  63                        +                                  ;
01ba:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
01bd:  19 20 00                  branch                             ; 0020 (01de)
; single/master.c:160
01c0:  03 F2 00                  F_EFUN0                            ; EFUN: time(242)
01c3:  3F 01                     local                              ; LV1
01c5:  64                        subtract                           ;
01c6:  62 01                     (void)assign_local                 ; LV1
; single/master.c:162
01c8:  02 03 1C C1 7C            F_PUSH                             ; push string 28, local 1, number 60
01cd:  66                        /                                  ;
01ce:  63                        +                                  ;
01cf:  0E 1D                     short_string                       ; "."
01d1:  63                        +                                  ;
01d2:  02 02 C1 7C               F_PUSH                             ; push local 1, number 60
01d6:  67                        %                                  ;
01d7:  63                        +                                  ;
01d8:  0E 1E                     short_string                       ; ")\n"
01da:  63                        +                                  ;
01db:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
01de:  2F                        return_zero                        ;
; single/master.c:163

;; Function: void log_error(string,string)
01df:  0E 1F                     short_string                       ; "/log/compile"
01e1:  3C 01                     transfer_local                     ; LV1
01e3:  0F                        const0                             ;
01e4:  06 E1 00                  F_EFUN3                            ; EFUN: write_file(225)
01e7:  01                        pop                                ;
01e8:  2F                        return_zero                        ;
; single/master.c:172

;; Function: int save_ed_setup(object,int)
01e9:  3F 01                     local                              ; LV1
01eb:  04 CD 00                  F_EFUN1                            ; EFUN: intp(205)
01ee:  18 03 00                  branch_when_non_zero               ; 0003 (01f2)
01f1:  2F                        return_zero                        ;
; single/master.c:183
01f2:  3C 00                     transfer_local                     ; LV0
01f4:  04 B9 01                  F_EFUN1                            ; EFUN: getuid(441)
01f7:  71 15 00 01               simul_efun                         ; "user_path" args: 1
01fb:  0E 20                     short_string                       ; ".edrc"
01fd:  63                        +                                  ;
01fe:  62 02                     (void)assign_local                 ; LV2
; single/master.c:187
0200:  3F 02                     local                              ; LV2
0202:  04 EA 00                  F_EFUN1                            ; EFUN: rm(234)
0205:  01                        pop                                ;
; single/master.c:191
0206:  3C 02                     transfer_local                     ; LV2
0208:  3C 01                     transfer_local                     ; LV1
020a:  0E 03                     short_string                       ; ""
020c:  63                        +                                  ;
020d:  0F                        const0                             ;
020e:  06 E1 00                  F_EFUN3                            ; EFUN: write_file(225)
0211:  2E                        return                             ;
0212:  2F                        return_zero                        ;
; single/master.c:192

;; Function: int retrieve_ed_setup(object)
0213:  3C 00                     transfer_local                     ; LV0
0215:  04 B9 01                  F_EFUN1                            ; EFUN: getuid(441)
0218:  71 15 00 01               simul_efun                         ; "user_path" args: 1
021c:  0E 20                     short_string                       ; ".edrc"
021e:  63                        +                                  ;
021f:  62 01                     (void)assign_local                 ; LV1
; single/master.c:204
0221:  3F 01                     local                              ; LV1
0223:  04 E4 00                  F_EFUN1                            ; EFUN: file_size(228)
0226:  0F                        const0                             ;
0227:  32                        <=                                 ;
0228:  17 03 00                  branch_when_zero                   ; 0003 (022c)
022b:  2F                        return_zero                        ;
; single/master.c:208
022c:  3C 01                     transfer_local                     ; LV1
022e:  04 E6 00                  F_EFUN1                            ; EFUN: read_file(230)
0231:  0E 21                     short_string                       ; "%d"
0233:  72 01                     sscanf                             ; 1
0235:  40 02                     local_lvalue                       ; LV2
0237:  61                        (void)assign                       ;
0238:  01                        pop                                ;
; single/master.c:211
0239:  3C 02                     transfer_local                     ; LV2
023b:  2E                        return                             ;
023c:  2F                        return_zero                        ;
; single/master.c:212

;; Function: void destruct_environment_of(object)
023d:  3F 00                     local                              ; LV0
023f:  04 11 01                  F_EFUN1                            ; EFUN: interactive(273)
0242:  18 03 00                  branch_when_non_zero               ; 0003 (0246)
0245:  2F                        return_zero                        ;
; single/master.c:220
0246:  02 02 C0 22               F_PUSH                             ; push local 0, string 34
024a:  05 C2 00                  F_EFUN2                            ; EFUN: tell_object(194)
; single/master.c:223
024d:  3C 00                     transfer_local                     ; LV0
024f:  02 02 23 13               F_PUSH                             ; push string 35, string 19
0253:  07 87 00 03               F_EFUNV                            ; EFUN: call_other(135)
0257:  01                        pop                                ;
0258:  2F                        return_zero                        ;
; single/master.c:224

;; Function: string make_path_absolute(string)
0259:  0F                        const0                             ;
025a:  04 8E 00                  F_EFUN1                            ; EFUN: this_player(142)
025d:  0E 24                     short_string                       ; "query_cwd"
025f:  07 87 00 02               F_EFUNV                            ; EFUN: call_other(135)
0263:  3C 00                     transfer_local                     ; LV0
0265:  71 18 00 02               simul_efun                         ; "resolve_path" args: 2
0269:  62 00                     (void)assign_local                 ; LV0
; single/master.c:231
026b:  3C 00                     transfer_local                     ; LV0
026d:  2E                        return                             ;
; single/master.c:232

;; Function: string get_root_uid()
026e:  0E 25                     short_string                       ; "Root"
0270:  2E                        return                             ;
; single/master.c:232

;; Function: string get_bb_uid()
0271:  0E 26                     short_string                       ; "Backbone"
0273:  2E                        return                             ;
; single/master.c:232

;; Function: string creator_file(string)
0274:  02 02 27 28               F_PUSH                             ; push string 39, string 40
0278:  3C 00                     transfer_local                     ; LV0
027a:  07 87 00 03               F_EFUNV                            ; EFUN: call_other(135)
027e:  2E                        return                             ;
; single/master.c:247

;; Function: string domain_file(string)
027f:  02 02 27 29               F_PUSH                             ; push string 39, string 41
0283:  3C 00                     transfer_local                     ; LV0
0285:  07 87 00 03               F_EFUNV                            ; EFUN: call_other(135)
0289:  2E                        return                             ;
; single/master.c:252

;; Function: string author_file(string)
028a:  02 02 27 2A               F_PUSH                             ; push string 39, string 42
028e:  3C 00                     transfer_local                     ; LV0
0290:  07 87 00 03               F_EFUNV                            ; EFUN: call_other(135)
0294:  2E                        return                             ;
; single/master.c:257

;; Function: string privs_file(string)
0295:  3C 00                     transfer_local                     ; LV0
0297:  2E                        return                             ;
; single/master.c:261

;; Function: void error_handler(mapping,int)
0298:  02 02 2B C0               F_PUSH                             ; push string 43, local 0
029c:  47                        index                              ;
029d:  0E 2C                     short_string                       ; "/single/tests/efuns/call_out."
029f:  30                        ==                                 ;
02a0:  26 0A 00                  &&                                 ; 000a (02ab)
; single/master.c:269
02a3:  02 02 2D C0               F_PUSH                             ; push string 45, local 0
02a7:  47                        index                              ;
02a8:  0E 2E                     short_string                       ; "*Too long evaluation. Executi"
02aa:  30                        ==                                 ;
02ab:  17 03 00                  branch_when_zero                   ; 0003 (02af)
02ae:  2F                        return_zero                        ;
; single/master.c:270
02af:  10                        const1                             ;
02b0:  04 8E 00                  F_EFUN1                            ; EFUN: this_player(142)
02b3:  25 06 00                  ||                                 ; 0006 (02ba)
02b6:  0F                        const0                             ;
02b7:  04 8E 00                  F_EFUN1                            ; EFUN: this_player(142)
02ba:  62 02                     (void)assign_local                 ; LV2
; single/master.c:275
02bc:  3F 01                     local                              ; LV1
02be:  17 09 00                  branch_when_zero                   ; 0009 (02c8)
02c1:  0E 2F                     short_string                       ; "*Error caught\n"
02c3:  62 03                     (void)assign_local                 ; LV3
02c5:  19 06 00                  branch                             ; 0006 (02cc)
; single/master.c:277
02c8:  0E 03                     short_string                       ; ""
02ca:  62 03                     (void)assign_local                 ; LV3
; single/master.c:278
02cc:  02 03 30 2D C0            F_PUSH                             ; push string 48, string 45, local 0
; single/master.c:285
02d1:  47                        index                              ;
02d2:  02 02 31 C0               F_PUSH                             ; push string 49, local 0
02d6:  47                        index                              ;
02d7:  25 04 00                  ||                                 ; 0004 (02dc)
02da:  0E 32                     short_string                       ; "No current object"
; single/master.c:280
02dc:  02 02 2B C0               F_PUSH                             ; push string 43, local 0
02e0:  47                        index                              ;
02e1:  25 04 00                  ||                                 ; 0004 (02e6)
02e4:  0E 33                     short_string                       ; "No current program"
; single/master.c:281
02e6:  02 02 34 C0               F_PUSH                             ; push string 52, local 0
02ea:  47                        index                              ;
02eb:  02 02 35 C0               F_PUSH                             ; push string 53, local 0
02ef:  47                        index                              ;
; single/master.c:282
02f0:  0E 36                     short_string                       ; "trace"
02f2:  3C 00                     transfer_local                     ; LV0
02f4:  47                        index                              ;
; single/master.c:283
02f5:  0F                        const0                             ;
02f6:  70 05 01 24 00            (::)                               ; <functional, 1 args>: Code size: 36,
02fb:  02 03 37 35 C0            F_PUSH                             ; push string 55, string 53, local 0
; single/master.c:285
0300:  47                        index                              ;
0301:  02 02 34 C0               F_PUSH                             ; push string 52, local 0
0305:  47                        index                              ;
0306:  02 02 31 C0               F_PUSH                             ; push string 49, local 0
030a:  47                        index                              ;
030b:  25 04 00                  ||                                 ; 0004 (0310)
030e:  0E 38                     short_string                       ; "No object"
0310:  02 02 2B C0               F_PUSH                             ; push string 43, local 0
0314:  47                        index                              ;
0315:  25 04 00                  ||                                 ; 0004 (031a)
0318:  0E 39                     short_string                       ; "No program"
031a:  07 0E 01 05               F_EFUNV                            ; EFUN: sprintf(270)
031e:  2E                        return                             ;
031f:  07 2E 01 02               F_EFUNV                            ; EFUN: map(302)
0323:  0E 11                     short_string                       ; "\n"
0325:  05 97 00                  F_EFUN2                            ; EFUN: implode(151)
0328:  07 0E 01 07               F_EFUNV                            ; EFUN: sprintf(270)
; single/master.c:284
032c:  40 03                     local_lvalue                       ; LV3
032e:  60                        (void)+=                           ;
; single/master.c:279
032f:  3F 03                     local                              ; LV3
0331:  44 02 00                  global_lvalue                      ; last_error(2)
0334:  61                        (void)assign                       ;
; single/master.c:286
0335:  02 03 3A C3 40            F_PUSH                             ; push string 58, local 3, number 0
033a:  06 E1 00                  F_EFUN3                            ; EFUN: write_file(225)
033d:  01                        pop                                ;
; single/master.c:287
033e:  3C 01                     transfer_local                     ; LV1
0340:  6D                        !                                  ;
0341:  26 04 00                  &&                                 ; 0004 (0346)
0344:  3F 02                     local                              ; LV2
0346:  17 09 00                  branch_when_zero                   ; 0009 (0350)
0349:  02 02 C2 C3               F_PUSH                             ; push local 2, local 3
034d:  05 C2 00                  F_EFUN2                            ; EFUN: tell_object(194)
0350:  2F                        return_zero                        ;
; single/master.c:288

;; Function: mixed get_include_path(string)
0351:  3C 00                     transfer_local                     ; LV0
0353: switch
      type: 3f table: 0380-03d0 deflt: 0377
035b:  02 02 3D 3E               F_PUSH                             ; push string 61, string 62
035f:  11 02 00                  aggregate                          ; 2
0362:  2E                        return                             ;
; single/master.c:297
0363:  0E 41                     short_string                       ; "/include/m_gip2"
0365:  0E 3E                     short_string                       ; "/include"
0367:  11 02 00                  aggregate                          ; 2
036a:  2E                        return                             ;
; single/master.c:300
036b:  02 02 3E 3D               F_PUSH                             ; push string 62, string 61
036f:  11 02 00                  aggregate                          ; 2
0372:  2E                        return                             ;
; single/master.c:303
0373:  11 00 00                  aggregate                          ; 0
0376:  2E                        return                             ;
; single/master.c:306
0377:  0E 46                     short_string                       ; ":DEFAULT:"
0379:  11 01 00                  aggregate                          ; 1
037c:  2E                        return                             ;
037d:  19 52 00                  branch                             ; 0052 (03d0)
; single/master.c:308
      switch table (for 0353)
        "/clone/mgip1"  035b
        "/clone/mgip1.c"        035b
        "/clone/mgip2"  0363
        "/clone/mgip2.c"        0363
        "/clone/mgip3"  036b
        "/clone/mgip3.c"        036b
        "/clone/mgip4"  0373
        "/clone/mgip4.c"        0373
; single/master.c:293
03d0:  2F                        return_zero                        ;
; single/master.c:308

;; Function: int valid_database(object,string,mixed *)
03d1:  0E 47                     short_string                       ; "MASTER valid_database called:"
03d3:  0E 48                     short_string                       ; "ob:%O action:%O info:%O"
03d5:  3C 00                     transfer_local                     ; LV0
03d7:  3C 01                     transfer_local                     ; LV1
03d9:  3C 02                     transfer_local                     ; LV2
03db:  07 0E 01 04               F_EFUNV                            ; EFUN: sprintf(270)
03df:  63                        +                                  ;
03e0:  0E 11                     short_string                       ; "\n"
03e2:  63                        +                                  ;
03e3:  04 C1 00                  F_EFUN1                            ; EFUN: write(193)
03e6:  10                        const1                             ;
03e7:  2E                        return                             ;
; single/master.c:313

;; Function: string object_name(object)
03e8:  3C 00                     transfer_local                     ; LV0
03ea:  0E 49                     short_string                       ; "name"
03ec:  07 87 00 02               F_EFUNV                            ; EFUN: call_other(135)
03f0:  2E                        return                             ;
; single/master.c:320

;; Function: void #global_init#()
03f1:  2D 00 0C 00 00            call_inherited                     ;         inherit/master/valid.c::#global_init#    12
03f6:  01                        pop                                ;
; single/master.c:6
03f7:  0F                        const0                             ;
03f8:  44 01 00                  global_lvalue                      ; has_error(1)
03fb:  61                        (void)assign                       ;
; single/master.c:8
03fc:  0E 03                     short_string                       ; ""
03fe:  44 02 00                  global_lvalue                      ; last_error(2)
0401:  61                        (void)assign                       ;
0402:  2F                        return_zero                        ;
; single/master.c:9

;;;  *** Line Number Info ***

absolute line -> (file, line) table:
0 lines from 1 [single/master.c]
11 lines from 2 [include/globals.h]
27 lines from 3 [include/tests.h]
25 lines from 2 [include/globals.h]
3 lines from 1 [single/master.c]
11 lines from 2 [include/globals.h]
27 lines from 3 [include/tests.h]
25 lines from 2 [include/globals.h]
319 lines from 1 [single/master.c]

address -> absolute line table:
0000-0006: 138
0007-000b: 143
000c-0011: 144
0012-0020: 145
0021-0027: 146
0028-0029: 148
002a-0033: 144
0034-0037: 149
0038-003e: 153
003f-0049: 154
004a-004d: 156
004e-0057: 161
0058-0066: 163
0067-006b: 164
006c-0070: 165
0071-0078: 166
0079-0087: 170
0088-008c: 171
008d-0091: 172
0092-0096: 173
0097-009d: 175
009e-00c2: 178
00c3-00ce: 181
00cf-00d4: 186
00d5-00e2: 194
00e3-00e7: 196
00e8-00ec: 197
00ed-00f1: 198
00f2-00f7: 199
00f8-00fb: 201
00fc-0106: 211
0107-010d: 212
010e-0117: 213
0118-0120: 224
0121-012b: 225
012c-0132: 250
0133-0137: 251
0138-013b: 252
013c-0144: 254
0145-014a: 255
014b-0156: 256
0157-015e: 257
015f-0160: 259
0161-016a: 255
016b-016e: 260
016f-0176: 269
0177-0179: 270
017a-0187: 279
0188-018c: 282
018d-0197: 283
0198-01a6: 284
01a7-01ab: 285
01ac-01bf: 286
01c0-01c7: 288
01c8-01de: 289
01df-01e8: 298
01e9-01f1: 309
01f2-01ff: 313
0200-0205: 317
0206-0212: 318
0213-0220: 330
0221-022b: 334
022c-0238: 337
0239-023c: 338
023d-0245: 346
0246-024c: 349
024d-0258: 350
0259-026a: 357
026b-0273: 358
0274-027e: 373
027f-0289: 378
028a-0294: 383
0295-0297: 387
0298-02a2: 395
02a3-02ae: 396
02af-02bb: 401
02bc-02c7: 403
02c8-02cb: 404
02cc-02cd: 411
02ce-02db: 406
02dc-02e5: 407
02e6-02ef: 408
02f0-02f4: 409
02f5-02fc: 411
02fd-030f: 410
0310-032b: 410
032c-032e: 405
032f-0334: 412
0335-033d: 413
033e-0350: 414
0351-035a: 419
035b-0362: 423
0363-036a: 426
036b-0372: 429
0373-0376: 432
0377-03d0: 434
03d1-03e7: 439
03e8-03f0: 446
03f1-03f6: 132
03f7-03fb: 134
03fc-0402: 135
Trace duration: 16888.575000 us, dumping 71 events to trace_lpcc.json in separate thread.
[thread 140189376706112d]: Dump trace successfully to file trace_lpcc.json, cost 1 ms.