# Pass this file to Valgrind with "--suppressions=tests/valgrind.supp"

{
    Mesa_glsl_parsing
    Memcheck:Cond
    fun:_ZN22_mesa_glsl_parse_stateC1EP10gl_contextjPv
    obj:/usr/lib/x86_64-linux-gnu/dri/libglsl.so
}
{
    lib_png_inflate
    Memcheck:Cond
    fun:inflateReset2
    fun:inflateInit2_
    fun:png_create_read_struct_2
    fun:png_create_read_struct
}
{
    Mesa_ReadPixels
    Memcheck:Value8
    obj:/usr/lib/x86_64-linux-gnu/dri/libdricore.so
    fun:_mesa_readpixels
}
{
    FcConfig
    Memcheck:Addr4
    fun:FcConfigFileExists
}
{
    Mesa_add_symbol_leak
    Memcheck:Leak
    fun:malloc
    fun:strdup
    fun:_mesa_symbol_table_add_symbol
}
{
    Mesa_symbol_table_add_symbol_leak
    Memcheck:Leak
    fun:calloc
    fun:_mesa_symbol_table_add_symbol
}
{
    Mesa_symbol_table_add_symbol_hash_leak
    Memcheck:Leak
    fun:calloc
    fun:hash_table_insert
    fun:_mesa_symbol_table_add_symbol
}
{
    Mesa_add_global_symbol_leak
    Memcheck:Leak
    fun:malloc
    fun:strdup
    fun:_mesa_symbol_table_add_global_symbol
}
{
    Mesa_add_global_symbol_calloc_leak
    Memcheck:Leak
    fun:calloc
    fun:_mesa_symbol_table_add_global_symbol
}
{
    Mesa_add_global_symbol_hash_leak
    Memcheck:Leak
    fun:calloc
    fun:hash_table_insert
    fun:_mesa_symbol_table_add_global_symbol
}
{
    Mesa_hash_table_replace
    Memcheck:Leak
    fun:calloc
    fun:hash_table_replace
}
{
    Mesa_symbol_table_push_scope_leak
    Memcheck:Leak
    fun:calloc
    fun:_mesa_symbol_table_push_scope
}
{
    Mesa_symbol_table_ctor_leak
    Memcheck:Leak
    fun:calloc
    fun:_mesa_symbol_table_ctor
}
{
    Mesa_bindAttribLocation_leak
    Memcheck:Leak
    fun:malloc
    fun:strdup
    fun:_mesa_BindAttribLocationARB
}
{
    Mesa_init_shader_program_leak
    Memcheck:Leak
    fun:_Znwm
    fun:string_to_uint_map_ctor
    fun:_mesa_init_shader_program
}
{
    Mesa_fix_func_fragment_program_leak
    Memcheck:Leak
    fun:malloc
    fun:_mesa_get_fixed_func_fragment_program
}
{
    Mega_get_fixed_func_fragment_program_leak
    Memcheck:Leak
    fun:realloc
    ...
    fun:_mesa_get_fixed_func_fragment_program
}
{
    Mesa_link_shader_leak
    Memcheck:Leak
    fun:_Znwm
    fun:_Z29link_assign_uniform_locationsP17gl_shader_program
    fun:_Z12link_shadersP10gl_contextP17gl_shader_program
    fun:_mesa_glsl_link_shader
}
{
    Mesa_link_shader_leak_2
    Memcheck:Leak
    fun:calloc
    fun:st_link_shader
    fun:_mesa_glsl_link_shader
}
{
    Mesa_leak
    Memcheck:Leak
    fun:malloc
    fun:_mesa_realloc
    obj:/usr/lib/x86_64-linux-gnu/dri/libdricore.so
}
{
    lib_png_inflate
    Memcheck:Cond
    fun:inflateReset2
    fun:inflateInit2_
    fun:png_create_read_struct_2
    fun:png_create_read_struct
}
{
    Mesa_ReadPixels
    Memcheck:Value8
    obj:/usr/lib/x86_64-linux-gnu/dri/libdricore.so
    fun:_mesa_readpixels
}
{
    Mesa_compile_shader
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:ralloc_strdup
    ...
    fun:_mesa_glsl_compile_shader
}
{
    Mesa_compile_shader_2
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    ...
    fun:_mesa_glsl_compile_shader
}
{
    Mesa_link_shader
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    ...
    fun:_mesa_glsl_link_shader
}
{
    Mesa_link_shader2
    Memcheck:Leak
    fun:calloc
    obj:/usr/lib/x86_64-linux-gnu/dri/libgallium.so
    fun:st_link_shader
    fun:_mesa_glsl_link_shader
}
{
    Mesa_update_state
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    ...
    fun:_mesa_update_state
}
{
    Mesa_associate_uniform_storage
    Memcheck:Leak
    fun:malloc
    fun:realloc
    fun:_mesa_uniform_attach_driver_storage
    fun:_mesa_associate_uniform_storage
}
{
    Mesa_init_ralloc_type
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:ralloc_autofree_context
    fun:_ZN9glsl_type20init_ralloc_type_ctxEv
}
{
    Mesa_glsl_parse_state
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    ...
    fun:_ZN23ast_function_expression3hirEP9exec_listP22_mesa_glsl_parse_state
}
{
    Mesa_ir_variable
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:ralloc_strdup
    fun:_ZN11ir_variableC1EPK9glsl_typePKc16ir_variable_mode
}
{
    Mesa_glsl_to_tgsi_visitor
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:rzalloc_size
    fun:_ZN20glsl_to_tgsi_visitor4emitEP14ir_instructionj10st_dst_reg10st_src_regS3_S3_
}
{
    LLVMModuleCreateWithNameInContext_Leak
    Memcheck:Leak
    fun:_Znwm
    fun:_ZNSs4_Rep9_S_createEmmRKSaIcE
    fun:_ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag
}
{
    glsl_type_glsl_base_type_leak
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:ralloc_strdup
    fun:_ZN9glsl_typeC1Ej14glsl_base_typejjPKc
}
{
    glsl_type_glsl_struct_field_leak
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    ...
    fun:_ZN9glsl_typeC1EPK17glsl_struct_fieldjPKc
}
{
    glsl_type_glsl_sampler_dim_leak
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:ralloc_strdup
    fun:_ZN9glsl_typeC1Ej16glsl_sampler_dimbbjPKc
}
{
    Mesa_glsl_parse_state
    Memcheck:Leak
    fun:malloc
    fun:strdup
    fun:_Z14_mesa_glsl_lexP7YYSTYPEP7YYLTYPEPv
    fun:_Z16_mesa_glsl_parseP22_mesa_glsl_parse_state
}
{
    st_get_fp_variant_calloc_leak
    Memcheck:Leak
    fun:calloc
    ...
    fun:st_get_fp_variant
}
{
    st_get_fp_variant_reall_leak
    Memcheck:Leak
    fun:realloc
    ...
    fun:st_get_fp_variant
}
{
    st_validate_state_leak
    Memcheck:Leak
    fun:calloc
    obj:/usr/lib/x86_64-linux-gnu/dri/libgallium.so
    fun:st_get_fp_variant
    obj:/usr/lib/x86_64-linux-gnu/dri/libgallium.so
    fun:st_validate_state
}
{
    tgsi_dup_tokens_leak
    Memcheck:Leak
    fun:malloc
    fun:tgsi_dup_tokens
}
{
    llvm_registerclassinfo_leak
    Memcheck:Leak
    fun:_Znam
    fun:_ZNK4llvm17RegisterClassInfo7computeEPKNS_19TargetRegisterClassE
}
{
    add_variable_ir_variable_leak
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:_ZN17glsl_symbol_table12add_variableEP11ir_variable
}
{
{
    glsl_to_tgsi_visitor_add_constant_leak
    Memcheck:Leak
    fun:calloc
    fun:ralloc_size
    fun:_ZN20glsl_to_tgsi_visitor12add_constantE16gl_register_fileP17gl_constant_valueiiPj
}
