On Thu, 31 Dec 2015 14:32:45 +0100 Rikard Falkeborn <rikard.falkeborn@gmail.com> wrote:
There are some warnings recently introduced when compiling with Clang (with --enable-warningflags) for x86_64. The warnings are related to casting of specific alpm_event-types to alpm_event_t where the required alignment differs between the types. On x86, it shouldn't be a problem, but maybe there are other architectures pacman should work on where this is a real issue? Either way, I think it would be good if pacman built cleanly with Clang. Any suggestions on how to fix this?
I think the only way is not to use a specific event type but the generic one, to ensure the size is correct. I don't have clang so I didn't test this, but I think there are two ways to solve this. Basically the issue is when using code such as: alpm_event_hook_run_t event; event.type = ALPM_EVENT_HOOK_RUN_START; event.name = name; event.desc = desc; EVENT(handle, &event); So we could either use the alpm_event_t and always go into the right union member, e.g: alpm_event_t event; event.hook_run.type = ALPM_EVENT_HOOK_RUN_START; event.hook_run.name = name; event.hook_run.desc = desc; EVENT(handle, &event); Or we could use a pointer, as that may be a little less verbose, e.g: alpm_event_t _event; alpm_event_hook_run_t *event = &_event.hook_run; event->type = ALPM_EVENT_HOOK_RUN_START; event->name = name; event->desc = desc; EVENT(handle, &_event); I'm not sure if using EVENT(handle, event) would work then, even though they're basically the same in the end. Not sure which solution you guys would prefer, if any? I'd be happy to send a patch addressing this if you'd like though. -j