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:
@@ -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},
|
||||
|
||||
@@ -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},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user