Comment 8 for bug 1553563

Revision history for this message
Hiroaki Hashi (hashiz) wrote :

Configurations using these handler, the default value is not correct.(Group A)
store_alist_res
store_bit
store_bool
store_dir
store_int32
store_pint32
store_res
store_size64
store_str
store_time

However , Another configuration using following handlers has correct default value.(Group B)
store_addresses
store_addresses_address
store_addresses_port
store_alist_str
store_label
store_name
store_password
store_speed
store_strname

What's different?
Group A is referenced from dird.c and dird_conf.c.
Group B is referenced from only dird_conf.c.
In dird.c, symbol address is written in the .text segment.
In dird_conf.c, symbol addres is written in the .data segment.

What's problem?
In "/usr/sbin/bacula-dir", Group A are resolved to PLT stub code's address.
In "libbaccfg.so", these address are resolved to true function address.
So, symbol address is different between "bacula-dir" and "libbaccfg.so".

Why some configuration has correct default value?
Group B are placed on relocation table, it will be resolved to true function address at time of dynamic link.
So, these symbol address is same in "bacula-dir" and "libbaccfg.so".