Make bus errno mappings non-static

__attribute__((used)) is not enough to force static variables to
be carried over to a compiled program from a library. Mappings defined
in libsystemd-shared.a were not visible in the compiled binaries.
To ensure that the mappings are present in the final binary, the
tables are made non-static and are given a real unique name by which
they can be referenced.

To use a mapping defined not in the local compilation unit (e.g. in
a library) a reference to the mapping table is added. This is done
by including a declaration in the header file.

Expected values in test-engine are fixed to reflect the new mappings.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2014-10-31 11:32:00 -04:00
parent 5e071f200c
commit fedfcdee6f
7 changed files with 24 additions and 10 deletions
+1 -1
View File
@@ -35,7 +35,7 @@
#define BUS_ERROR_OOM SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_NO_MEMORY, "Out of memory")
#define BUS_ERROR_FAILED SD_BUS_ERROR_MAKE_CONST(SD_BUS_ERROR_FAILED, "Operation failed")
SD_BUS_ERROR_MAPPING = {
SD_BUS_ERROR_MAPPING(sd_bus_standard) = {
{"org.freedesktop.DBus.Error.Failed", EACCES},
{"org.freedesktop.DBus.Error.NoMemory", ENOMEM},
{"org.freedesktop.DBus.Error.ServiceUnknown", EHOSTUNREACH},
+1 -1
View File
@@ -130,7 +130,7 @@ static void test_errno_mapping_standard(void) {
assert_se(sd_bus_error_set(NULL, "System.Error.WHATSIT", NULL) == -EIO);
}
SD_BUS_ERROR_MAPPING = {
SD_BUS_ERROR_MAPPING(test) = {
{"org.freedesktop.custom-dbus-error", 5},
{"org.freedesktop.custom-dbus-error-2", 52},
};