clGetProgramBuildInfo has a pointer size_t *param_value_size_ret. The specification reads "param_value_size_ret returns the actual size in bytes of data copied to param_value. ". Either the description is incomplete or we have no way of knowing the size we need before attempting a call.