From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [U-Boot, v0, 07/20] vsprintf.c: add wide string (%ls) support
Date: Wed, 9 Aug 2017 07:27:01 -0400 [thread overview]
Message-ID: <20170809112701.GH5837@bill-the-cat> (raw)
In-Reply-To: <CAF6AEGvMdZ70N9hyZNy0bug+Pw8uqsw=OaiBMJD2J6hNn8-tOQ@mail.gmail.com>
On Tue, Aug 08, 2017 at 08:14:41PM -0400, Rob Clark wrote:
> On Tue, Aug 8, 2017 at 7:55 PM, Alexander Graf <agraf@suse.de> wrote:
> >
> >
> > On 09.08.17 00:39, Rob Clark wrote:
> >>
> >> On Tue, Aug 8, 2017 at 7:08 PM, Heinrich Schuchardt <xypron.glpk@gmx.de>
> >> wrote:
> >>>
> >>> On 08/09/2017 12:44 AM, Rob Clark wrote:
> >>>>
> >>>> On Tue, Aug 8, 2017 at 6:03 PM, Heinrich Schuchardt <xypron.glpk@gmx.de>
> >>>> wrote:
> >>>>>
> >>>>> On 08/04/2017 09:31 PM, Rob Clark wrote:
> >>>>>>
> >>>>>> This is convenient for efi_loader which deals a lot with utf16.
> >>>>>>
> >>>>>> Signed-off-by: Rob Clark <robdclark@gmail.com>
> >>>>>
> >>>>>
> >>>>> Please, put this patch together with
> >>>>> [PATCH] vsprintf.c: add GUID printing
> >>>>> https://patchwork.ozlabs.org/patch/798362/
> >>>>> and
> >>>>> [PATCH v0 06/20] common: add some utf16 handling helpers
> >>>>> https://patchwork.ozlabs.org/patch/797968/
> >>>>> into a separate patch series.
> >>>>>
> >>>>> These three patches can be reviewed independently of the efi_loader
> >>>>> patches and probably will not be integrated via the efi-next tree.
> >>>>
> >>>>
> >>>> I'll resend these as a separate patchset, and just not in next
> >>>> revision of efi_loader patchset that it is a dependency
> >>>>
> >>>>>> ---
> >>>>>> lib/vsprintf.c | 30 ++++++++++++++++++++++++++++--
> >>>>>> 1 file changed, 28 insertions(+), 2 deletions(-)
> >>>>>>
> >>>>>> diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> >>>>>> index 874a2951f7..0c40f852ce 100644
> >>>>>> --- a/lib/vsprintf.c
> >>>>>> +++ b/lib/vsprintf.c
> >>>>>> @@ -17,6 +17,7 @@
> >>>>>> #include <linux/ctype.h>
> >>>>>>
> >>>>>> #include <common.h>
> >>>>>> +#include <charset.h>
> >>>>>>
> >>>>>> #include <div64.h>
> >>>>>> #define noinline __attribute__((noinline))
> >>>>>> @@ -270,6 +271,26 @@ static char *string(char *buf, char *end, char
> >>>>>> *s, int field_width,
> >>>>>> return buf;
> >>>>>> }
> >>>>>>
> >>>>>> +static char *string16(char *buf, char *end, u16 *s, int field_width,
> >>>>>> + int precision, int flags)
> >>>>>> +{
> >>>>>> + u16 *str = s ? s : L"<NULL>";
> >>>>>
> >>>>> Please, do not use the L-notation here as it requires -fshort-wchar.
> >>>>> As we currently cannot switch the complete project to C11 you cannot
> >>>>> use
> >>>>> the u-notation either.
> >>>>
> >>>>
> >>>> current plan was to either switch whole project to -fshort-wchar or
> >>>> c11 and rework these patches (as well as a few patches in the
> >>>> efi_loader patchset). (In the c11 case, I'm not sure what we'll use
> >>>> as the fmt string, since afaict that isn't specified. We could use %S
> >>>> although that seems to be a deprecated way to do %ls, or something
> >>>> different like %A, I guess)..
> >>>>
> >>>> how far are we from c11? If there is stuff I can do to help let me
> >>>> know. If feasible, I'd rather do that first rather than have a bunch
> >>>> of stuff in vsprintf and elsewhere that needs to be cleaned up later
> >>>> after the switch.
> >>>
> >>>
> >>> buildman downloads very old compilers (gcc < 4.8) from kernel.org which
> >>> do not support C11.
> >>> Travis CI uses Ubuntu 14.04 with gcc 4.8.4 which incorrectly throws an
> >>> error for disk/part.c in C11 mode.
> >>
> >>
> >> ugg, 4.8 is pretty old.. Not sure how much older than 4.8 buildman
> >> uses. It seems like *some* c11 was supported w/ >=4.6 so if we
> >> approach the conversion piecemeal (for example skipping code that
> >> triggers gcc bugs on old compilers) we might be able to keep 4.8.4
> >> working until travis provides something newer.
> >>
> >> (btw, even going back say 8 fedora releases or more, I've used distro
> >> packaged arm and aarch64 toolchains exclusively.. are there that many
> >> distro's where we really can't assume availability of an
> >> cross-toolchain? If there isn't something newer from kernel.org can
> >> we just drop relying on ancient prebuilt toolchains? I'm anyways not
> >> hugely a fan of downloading binary executables from even kernel.org,
> >> instead of using something from a distro build system which I at least
> >> know is very locked down.)
> >>
> >>> To get things right we would have to
> >>> * build our own cross tool chains based on a current gcc version
> >>> * use our own tool chain in Travis for x86-64 or use a docker
> >>> container with a current gcc version.
> >>>
> >>> In the long run heading for C11 would be the right thing to do.
> >>> Until then use an initializer { '<', 'N', 'U', 'L', 'L', '>' }.
> >>> It looks ugly but does not consume more bytes once compiled.
> >>>
> >>
> >> Sure, that I'm less worried about, as much as adding stuff that is
> >> very soon going to be legacy. Even in vfprintf.c it isn't such a big
> >> deal, as efi_loader where it would be more cumbersome.
> >>
> >> Maybe we can write out u"<NULL>" longhand in vsprintf.c as you
> >> suggest, but restrict efi_loader to gcc >= 4.9? That seems like it
> >> shouldn't be a problem for any arm/arm64 device and it shouldn't be a
> >> problem for any device that is likely to have an efi payload to load
> >> in the first place..
> >
> >
> > I don't understand? We enable EFI_LOADER on all arm/arm64 systems for a good
> > reason, so they all get checked by travis. If we break travis, that won't do
> > anyone any good.
>
> I was more thinking if there was some oddball non-arm arch that u-boot
> supported which didn't haven good mainline gcc support and required
> something ancient ;-)
So, with v2018.01 I want to say that for ARM*, gcc-6.x is the minimum.
Looking around, nds32 requires gcc-4.4.4. NDS32 folks, is there a newer
toolchain available?
Other than that, everything else has a gcc-6.x available in some form or
another. Thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170809/20d99599/attachment.sig>
next prev parent reply other threads:[~2017-08-09 11:27 UTC|newest]
Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-04 19:31 [U-Boot] [PATCH v0 00/20] enough UEFI for standard distro boot Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 01/20] fs: add fs_readdir() Rob Clark
2017-08-07 18:19 ` Brüns, Stefan
2017-08-07 19:11 ` Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 02/20] fs/fat: implement readdir Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 03/20] short-wchar Rob Clark
2017-08-04 20:28 ` Heinrich Schuchardt
2017-08-04 20:36 ` Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 04/20] part: extract MBR signature from partitions Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 05/20] efi: add some more device path structures Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 06/20] common: add some utf16 handling helpers Rob Clark
2017-08-06 5:17 ` Simon Glass
2017-08-08 22:50 ` [U-Boot] [U-Boot, v0, " Heinrich Schuchardt
2017-08-08 23:21 ` Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 07/20] vsprintf.c: add wide string (%ls) support Rob Clark
2017-08-08 22:03 ` [U-Boot] [U-Boot, v0, " Heinrich Schuchardt
2017-08-08 22:44 ` Rob Clark
2017-08-08 23:08 ` Heinrich Schuchardt
2017-08-08 23:20 ` Alexander Graf
2017-08-08 23:39 ` Rob Clark
2017-08-08 23:55 ` Alexander Graf
2017-08-09 0:14 ` Rob Clark
2017-08-09 1:14 ` Rob Clark
2017-08-09 11:27 ` Tom Rini [this message]
2017-08-10 2:16 ` rick at andestech.com
2017-08-09 8:50 ` Peter Robinson
2017-08-08 22:52 ` Rob Clark
2017-08-09 13:38 ` Rob Clark
2017-08-09 13:48 ` Alexander Graf
2017-08-09 14:35 ` Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 08/20] efi_loader: add back optional efi_handler::open() Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 09/20] efi_loader: add device-path utils Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 10/20] efi_loader: drop redundant efi_device_path_protocol Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 11/20] efi_loader: add guidstr helper Rob Clark
2017-08-05 19:33 ` Heinrich Schuchardt
2017-08-05 19:56 ` Rob Clark
2017-08-05 20:18 ` Heinrich Schuchardt
2017-08-04 19:31 ` [U-Boot] [PATCH v0 12/20] efi_loader: flesh out device-path to text Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 13/20] efi_loader: use proper device-paths for partitions Rob Clark
2017-08-04 20:41 ` Mark Kettenis
2017-08-04 20:57 ` Rob Clark
2017-08-05 14:01 ` Mark Kettenis
2017-08-05 14:19 ` Rob Clark
2017-08-05 14:28 ` Mark Kettenis
2017-08-05 14:35 ` Rob Clark
2017-08-05 15:08 ` Mark Kettenis
2017-08-05 15:22 ` Rob Clark
2017-08-05 16:02 ` Heinrich Schuchardt
2017-08-05 16:13 ` Rob Clark
2017-08-05 15:10 ` Heinrich Schuchardt
2017-08-05 15:24 ` Rob Clark
2017-08-05 15:36 ` Rob Clark
2017-08-06 13:16 ` Mark Kettenis
2017-08-06 14:17 ` Rob Clark
2017-08-06 14:26 ` Rob Clark
2017-08-06 14:28 ` Mark Kettenis
2017-08-06 14:45 ` Rob Clark
2017-08-06 15:34 ` Rob Clark
2017-08-06 16:00 ` Heinrich Schuchardt
2017-08-06 16:14 ` Jonathan Gray
2017-08-06 17:28 ` Mark Kettenis
2017-08-06 17:49 ` Rob Clark
2017-08-06 18:13 ` Peter Robinson
2017-08-06 18:21 ` Mark Kettenis
2017-08-06 18:37 ` Mark Kettenis
2017-08-06 18:47 ` Rob Clark
2017-08-06 18:53 ` Rob Clark
2017-08-06 18:41 ` Rob Clark
2017-08-07 15:47 ` Jonathan Gray
2017-08-07 16:16 ` Rob Clark
2017-08-08 1:36 ` Jonathan Gray
2017-08-05 14:28 ` Rob Clark
2017-08-06 12:53 ` Mark Kettenis
2017-08-07 17:32 ` Peter Jones
2017-08-04 19:31 ` [U-Boot] [PATCH v0 14/20] efi_loader: use proper device-paths for net Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 15/20] efi_loader: refactor boot device and loaded_image handling Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 16/20] efi_loader: add file/filesys support Rob Clark
2017-08-04 19:31 ` [U-Boot] [PATCH v0 17/20] efi_loader: support load_image() from a file-path Rob Clark
2017-08-04 19:32 ` [U-Boot] [PATCH v0 18/20] efi_loader: make pool allocations cacheline aligned Rob Clark
2017-08-04 19:32 ` [U-Boot] [PATCH v0 19/20] efi_loader: efi variable support Rob Clark
2017-08-06 5:17 ` Simon Glass
2017-08-04 19:32 ` [U-Boot] [PATCH v0 20/20] efi_loader: add bootmgr Rob Clark
2017-08-04 20:06 ` Heinrich Schuchardt
2017-08-04 20:28 ` Rob Clark
2017-08-04 20:29 ` Rob Clark
2017-08-04 22:46 ` Peter Jones
2017-08-05 15:58 ` [U-Boot] [PATCH v0 21/20] efi_loader: hack for archs that cannot do unaligned accesses Rob Clark
2017-08-05 16:12 ` Heinrich Schuchardt
2017-08-05 16:16 ` Rob Clark
2017-08-05 16:19 ` Rob Clark
2017-08-05 16:26 ` Heinrich Schuchardt
2017-08-05 16:46 ` Rob Clark
2017-08-05 16:52 ` Heinrich Schuchardt
2017-08-05 17:06 ` Rob Clark
2017-08-05 18:43 ` Rob Clark
2017-08-05 20:05 ` Heinrich Schuchardt
2017-08-05 20:31 ` Rob Clark
2017-08-07 20:19 ` Alexander Graf
2017-08-07 21:14 ` Mark Kettenis
2017-08-07 22:18 ` Rob Clark
2017-08-08 6:52 ` Alexander Graf
2017-08-08 8:11 ` Ard Biesheuvel
2017-08-08 11:32 ` Leif Lindholm
2017-08-08 12:01 ` Rob Clark
2017-08-08 12:39 ` Leif Lindholm
2017-08-08 9:27 ` Rob Clark
2017-08-08 12:26 ` Mark Kettenis
2017-08-08 12:54 ` Rob Clark
2017-08-08 13:33 ` Mark Kettenis
2017-08-08 14:03 ` Rob Clark
2017-08-08 14:10 ` Rob Clark
2017-08-08 18:20 ` Rob Clark
2017-08-07 16:56 ` Rob Clark
2017-08-07 17:15 ` Peter Jones
2017-08-10 1:32 ` [U-Boot] [PATCH v0 00/20] enough UEFI for standard distro boot Tom Rini
2017-08-10 10:41 ` Rob Clark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170809112701.GH5837@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox