On 22.06.18 21:28, Simon Glass wrote: > Hi Alex, > > > On 22 June 2018 at 06:11, Alexander Graf <ag...@suse.de> wrote: >> On 06/21/2018 09:45 PM, Simon Glass wrote: >>> >>> Hi Alex, >>> >>> On 21 June 2018 at 03:59, Alexander Graf <ag...@suse.de> wrote: >>>> >>>> On 06/21/2018 04:02 AM, Simon Glass wrote: >>>>> >>>>> Hi Alex, >>>>> >>>>> On 20 June 2018 at 02:56, Alexander Graf <ag...@suse.de> wrote: >>>>>> >>>>>> On 06/20/2018 12:02 AM, Simon Glass wrote: >>>>>>> >>>>>>> Hi Alex, >>>>>>> >>>>>>> On 18 June 2018 at 08:46, Alexander Graf <ag...@suse.de> wrote: >>>>>>>> >>>>>>>> On 06/18/2018 04:08 PM, Simon Glass wrote: >>>>>>>>> >>>>>>>>> There appears to be a bug [1] in gcc when using varargs with this >>>>>>>>> attribute. Disable it for sandbox so that functions which use that >>>>>>>>> can >>>>>>>>> work correctly, such as install_multiple_protocol_interfaces(). >>>>>>>>> >>>>>>>>> [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70955 >>>>>>>>> >>>>>>>>> Signed-off-by: Simon Glass <s...@chromium.org> >>>>>>>> >>>>>>>> >>>>>>>> See my patch instead please. >>>>>>> >>>>>>> OK I see it now. Do you know what gcc fixes this problem? >>>>>> >>>>>> >>>>>> The bug you found was really just a gcc bug that hit early gcc6 >>>>>> versions. >>>>>> I >>>>>> doubt you're running into it :). >>>>> >>>>> OK, so in fact gcc does not support varargs problems with the ms_abi? >>>> >>>> >>>> Gcc needs to know whether varargs are sysv varargs or ms varargs. And it >>>> differentiates between the two with different variable types for va_list. >>>> >>> Have you seen the builtin_va_list, etc. >> >> >> I think this sentence is missing content? > > I thought that builtin_va_list and friends would work regardless of > the calling standard being used. But it looks (from your patch) like > you have to explicitly use __builtin_ms_va_list. Is that right?
I'm fairly sure builtin_va_list is just gcc's way of mapping the sysv va_list, but I'm not 100% sure. I can double check with our compiler people next week. Either way, I think this patch is good either way. For starters it's not gcc specific because it uses the normal va_args in the "normal" case. Also, it's not ambiguous. IMHO things are quite clear when reading the code if we explicitly differentiate between sysv and ms_abi va_args. Alex _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot