These MIPS specific symbols should be global because in general they can have an arbitrary value. By default this value is a fixed offset from .got section.
This patch adds more checks to the mips-gp-local.s test case but marks it as XFAIL because LLD does not allow redefinition of absolute symbols value by a linker script. This should be fixed by D27276.
Doesn't _gp_disp represents offset between _gp and .got? I'm not sure what you mean by "a function" in the above description.