I've done some more testing including turning on verbose. Here are the results loadrt or2 is completely ignored in place of the loadrt or2 names= line causing the addf or2.in0 to fail later on.
Code:
wopass: loadrt pid names=pid.x,pid.y,pid.y2,pid.z,pid.s
twopass: loadrt or2 names=pendant:run_or2,pendant:pause_or2,pendant:resume_or2,pendant:stop_or2,pendant:jog_speed_or2
twopass: loadrt plasmac
twopass: loadrt dbounce names=db_breakaway,db_float,db_ohmic,db_arc-ok
twopass: loadrt ilowpass names=pendant:mpg_ilowpass,pendant:mpg_height-ovr
twopass: loadrt mult2 names=pendant:jog_mult2
twopass: loadrt mux2 names=pendant:jog_enable_mux
twopass: loadrt flipflop names=pendant:run_ff,pendant:pause_ff,pendant:resume_ff
twopass: loadrt toggle names=pendant:power-button_toggle
twopass: loadrt toggle2nist names=pendant:power-machine_toggle
twopass: pass0:END
twopass: pass1:BEGIN
twopass: sourcing: /tmp/tmp_plasmanew.hal
HAL: ERROR: function 'or2.0' not found
twopass: Error in file ./plasmanew.hal:
addf failed
twopass: sourcing: ././plasmac/plasmac.tcl
twopass: sourcing: /tmp/tmp_plasmanew_connections.hal
twopass: sourcing: /tmp/tmp_pendant.hal
I changed the loadrt or2 to loadrt or2 names=or2.0 and that works as it should and linuxcnc runs. so for some reason, with multiple lines of or2, you need to name them or they are ignored. I do not know if it's only because one set is named or not.