glGetProgramBinary return zero length binary

I have ATI Radeon HD 4800 Series which supports OpenGL 3.3 with extension GL_ARB_get_program_binary.

When I am trying to retrieve binary code from a freshly compiled program, I get zero size.
What is the problem?

Procedure:

[ul]
[li]Trying to load previous existed binary code of program [/li][li]If binary exist, glProgramBinary() and GL_LINK_STATUS == GL_TRUE then end. [/li][li]Load, Compile with success, attach shaders to program. [/li][li]glProgramParameteri(program, GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE); [/li][li]Link program. [/li][li]If GL_LINK_STATUS == GL_FALSE then throw. [/li][li]GL_PROGRAM_BINARY_LENGTH returns 0 [/li][li]glGetError() returns 0. [/li][/ul]