| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is required for LLVM 22's ld.lld to avoid a build error:
ld.lld: error: section '.text' address (0x38000) is smaller than image base (0x10000000); specify --image-base
ld.lld: error: section '.rodata' address (0x3b308) is smaller than image base (0x10000000); specify --image-base
ld.lld: error: section '.data' address (0x3b610) is smaller than image base (0x10000000); specify --image-base
ld.lld: error: section '.bss' address (0x3f618) is smaller than image base (0x10000000); specify --image-base
Use 0x38000 for the image base, which is the address of the lowest
(and only) LOAD segment in the file.
Sponsored by: https://www.patreon.com/bsdivy
Differential Revision: https://reviews.freebsd.org/D56459
(cherry picked from commit aa0bc7cca153f67f8becec8a8fb259ff5fd30fd0)
(cherry picked from commit ee58056e1e42de9230a159412827da97ae7f03bc)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since this original comment was written, the actual issue in SLOF
was diagnosed and documented in commit 424089a0fc, which fixed it
for loader(8). Update the comment in boot1 to be more informative
to future readers.
MFC after: 3 days
Reviewed by: jhibbits, adrian
Sponsored by: https://www.patreon.com/bsdivy
Differential Revision: https://reviews.freebsd.org/D56470
(cherry picked from commit eb0279550d52962241b4178101cd7f7d732eb682)
(cherry picked from commit 66f55b90b6bcbbf3c26b2da7f56d17052e39018f)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix powerpc 64 little endian booting by adding some padding. Due to
https://gitlab.com/slof/slof/-/blob/master/lib/libelf/elf32.c?ref_type=heads#L114
https://gitlab.com/slof/slof/-/blob/master/lib/libelf/elf32.c?ref_type=heads#L150
using <= instead of <, slof used to loop over the phdrs. It overruns by
1 and so on little endian it swizzles the first 32 bytes of .text. Work
around this by adding 32 bytes of padding after the headers. We should
fix this in slof, but it's in the just released QEMU 10.2, so we have to
pad things here for now.
Now powerpc64le + qemu works.
MFC After: 3 days (maybe EN too)
Reviewed by: adrian, jhibbits
Sponsored by: Netflix
(cherry picked from commit 424089a0fc82ee9db8659b8c1099bbbde8999473)
(cherry picked from commit 0b2011f50cd31ce384445ed04a554c0cf5e5300f)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
bi_load itself loads various things into the staging area which can
cause it to grow, which may result in the staging area moving, including
the kernel. Therefore the address we get for the kernel entry point
prior to bi_load may not be correct afterwards when we actually call it,
and so we must defer the translation.
On arm and riscv (but not arm64, which predates both of them in
loader.efi and did not gain a copy of arm's added printf when arm
support was added) we also printf this entry point to the console, which
we can no longer do since bi_load calls ExitBootServices, so remove this
printf that, in practice, seems to not be so useful, given nobody ever
felt the need to add it to arm64. If anyone really feels this is an
important printf to have then bi_load will need to be split so we can
call printf after all the loading and potential reallocation of the
staging area, but before ExitBootServices is called.
We may also want to make this code more uniform and shared between the
three architectures here, since there isn't much architecture-specific
about this (and something like the RISC-V boot hart protocol could
easily be made an MD hook).
Reviewed by: imp
Fixes: 0cafabf97fae ("Add support for arm64 to loader.efi and boot1.efi")
Fixes: ea7796a9ae6b ("EFI: don't call printf after ExitBootServices, since it uses Boot Services")
Fixes: 2192efc03bc4 ("RISC-V boot1.efi and loader.efi support")
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D56431
(cherry picked from commit ab1d659e78e454995b7c2b4566e035269b215e48)
|
| |
|
|
|
|
| |
- s/limitiations/limitations/
(cherry picked from commit 4177af3b0e2db36238bbd6f973943f830d1ff46f)
|
| |
|
|
|
|
|
|
|
|
|
| |
Both (U)EFI and BIOS are completely different things, be precise and don't use
them together.
Reviewed by: imp
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D56329
(cherry picked from commit 4f684e929de1275b1099b17b2a2cff0d3f4af223)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows something like the following local.lua to install a filter
to implement its own notion of hidden BEs using a naming convention of
a leading dot to hide them:
-- file: /boot/lua/local.lua
local core = require("core")
local function be_hide(be)
if core.isSingleUserBoot() then
-- All BEs are accepted for single-user
return true
end
local name = be:match("/([^/]+)$")
if not name then
-- Accept malformed BEs, for whatever reason
return true
end
return name:match("^%.") == nil
end
if core.bootenvFilter then
-- Just in case we need to be compatible with older versions of
-- core.lua without the filtering functionality.
core.bootenvFilter(be_hide)
end
-- EOF
Requested by: Marek Zarychta
Reviewed by: imp
(cherry picked from commit bf0881060ecd75ce79683b82ebcd4809eadf7cf5)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Our only user of this at the moment is teken.{fg,bg}_color. These are
special because teken is a library common to both the kernel and the
loader, and we want to avoid having special vars to control the loader
vs. the kernel. Ideally, if a user wants a different set of console
colors, then they set the appropriate teken variable and it
Just Works(TM) everywhere. We can't just avoid setting the env vars,
because we specifically want to install a hook to adjust how loader is
drawn.
This allows us to avoid breaking a kernel config(5) that has some
default teken colors set with our defaults. That's a valid
configuration, even if it might seem weird that they don't want to set
colors in both loader and the kernel -- they may not anticipate spending
any time in loader, and thus prefer to just let it do its default
behavior.
NOKENV is expected to be unset if the value is overwritten, rather than
acting as a persistent marker that we do not want the value to persist
under any circumstance. We can always add another flag bit later for
persistence if we find a use for that, but most variables are fine to
carry over. This is mostly needed for environment variables that we
really just want to set a hook for.
Future work could expand this to break it out to the scripted
interfaces. We have discussed some options like a new built-in command,
or adding a flag to the existing `set` command, but haven't really come
up with a concrete plan to avoid confusion.
Reviewed by: imp
(cherry picked from commit 510e473ff3a6d4620c603c1b9ba06fb2bf5745fd)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These can be setup independently, so we should also check them and
initialize each independently. This fixes a pre-existing bug where-in
we may not pickup a bg color specified in the environment if a fg color
wasn't set.
The new version also ensures that we're hooking the color vars properly
if we're using a value that was already there, as the console may need
to adjust if something wants to switch them up again. Otherwise, a
teken.fg_color set in loader could conceivably occur that only changes
the color when you get to the kernel, which could be surprising.
Reviewed by: imp
(cherry picked from commit 95e6fd1fd85a448d2c68473b85a61fba24c9bc4f)
|
| |
|
|
|
|
|
|
|
|
|
| |
These are basically identical, with exception to the hook installed
which is specific to the loader we're building by necessity. Pull these
out into common/gfx_fb.c and just parameterize the hooks to make it
easier to change the logic.
Reviewed by: imp
(cherry picked from commit c43de099d0138b369b705b3af2c3254d3f3afc6e)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is known that nvidia modules, like the drm modules that are already
present, will panic if loaded in early boot rather than later. Pop them
into our list to deny loading them if someone were to add, e.g.,
nvidia-modeset_load="YES", to their loader.conf. This doesn't prevent
them from being loaded if one drops to the loader prompt, but it does
prevent the standard user from easy foot-shooting if they find old or
inaccurate information out in the wild.
Reviewed by: imp, kbowling
(cherry picked from commit 763a097c156f36830e774b3cc789f68c5d1ae601)
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
A loader built with MD_IMAGE_SIZE is almost always meant for use with
its embedded image and should try that as currdev before anything else.
Recent changes (d69fc3a9dc71, 784150fd2535) seem to have relaxed the ZFS
code's search for a rootfs and exposed this problem.
Reviewed by: imp, tsoome
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D55979
(cherry picked from commit 0661997cea165e951e4e215e6aed41596d8b1d52)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Fix the beaste, beastiebw and fbsdbw postions broken after
ee233742a569
PR: 285044, 286356
Fixes: 1b4e11713153
Reviewed by: imp
MFC After: 2 days (14.3 candiate)
Sponsored by: PANS Jarosław
(cherry picked from commit 9486d6d57d14844972ee63382045e2ed7a300963)
|
| |
|
|
|
|
| |
- s/crypo/crypto/
(cherry picked from commit fa567fe7c537950fe48e35fa3b0827af4a45ec57)
|
| |
|
|
|
|
|
| |
Fixes: a37825313f62 (Fix mdoc typos for emails, tag spdx)
MFC after: 3 days
(cherry picked from commit 1961785e35484a89e49672c5ac7f9da6a7f56b3c)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reorganise and clarify the legacy role of boot1.efi in DESCRIPTION to
improve clarity.
Add a minor missing word in the BUGS section ["...caution is required*..."].
See also - PR: 290794
Signed-off-by: Aaditya Singh <aadityavksingh@gmail.com>
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1939
(cherry picked from commit 7b3fb3caef9495cdfcc1c8ec39907defb65ce860)
|
| |
|
|
|
|
|
|
|
| |
Reflow comments in literal text blocks
so this manual is legible at MANWIDTH 78.
MFC after: 1 day
(cherry picked from commit de36d0dbaeaf05e9bf949fdf22b560c34b2c0d74)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Begin documenting module loader commands in loader(8), where the reader
would look for them. Segregate them by their availability in individual
loader implementations, like build(7) targets.
These details were graciously donated by kevans.
MFC after: 3 days
Reviewed by: kevans
Co-authored-by: Kyle Evans <kevans@freebsd.org>
Differential Revision: https://reviews.freebsd.org/D50727
(cherry picked from commit 6fb0d67819f730e8def56e139f780eff3c0cab0f)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
console=comconsole is for the loader and boot_serial is for the kernel.
I think we should centralize documentation on the loader settings in one
manual, such a loader.8. The current proliferation is not obvious where
to find the documentation. To the user, these are all set in loader.conf
or at the loader prompt.
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D53695
(cherry picked from commit 09ffaa4e07d749c83cc1db13829505f21b025f29)
|
| |
|
|
|
|
| |
MFC after: 3 days
(cherry picked from commit a37825313f624121c6f07bc03f9cf655c300885b)
|
| |
|
|
|
|
|
|
|
|
| |
+ Mention relevance of this file in the vt manual screen.font entry
+ The vidfont manual is in section one, not eight
+ Remove leftover blank line from freebsd tag removal
MFC after: 3 days
(cherry picked from commit 1f5795b6422a1c6e4b71fd7e93717522ccb822f9)
|
| |
|
|
|
|
|
|
|
| |
PR: 292595
Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D54923
(cherry picked from commit 56970c3c4b0bc61d972837661a31cc2b9e8e8d7c)
|
| |
|
|
|
|
|
|
|
| |
PR: 292595
Approved by: ziaee, dab, imp, tsoome
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D54843
(cherry picked from commit 240c614d48cb0484bfe7876decdf6bbdcc99ba73)
|
| |
|
|
|
|
|
|
|
|
| |
Make it obvious to users that the system is booting into the installer.
Reviewed by: kevans, manu
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D51001
(cherry picked from commit ac7a19d41ee5eb1271c46fbc620b2f98dffa2230)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removing the kernel from the list of available kernels is sufficient to
avoid rendering it in the list, but we need more for booting to actually
work. Notably, the 'kernel' loader.conf var was left intact to its
default value, so if one didn't use the kernel selector in the menu then
we'd try to boot the nonexistent 'kernel' instead of the new default
(first autodetected).
There's room to improve the error messages here, but for now let's just
make it actually work correctly.
PR: 292232
Fixes: d04415c520b03 ("loader: lua: remove the default kernel [...]")
(cherry picked from commit e30086ab4c8778ea70a3b19e83546ce1b4a16492)
|
| |
|
|
|
|
|
|
|
|
| |
Note that there are three variants of this MacBook. We only have the
stride and offset values for the 17" 1680x1050 model.
Reviewed by: vexeduxr
Pull Request: https://github.com/freebsd/freebsd-src/pull/1584
(cherry picked from commit be6ba97aaee762c2e5300834f1916ae5dfd5a0b9)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gfx_state.tg_private points to a EFI_GRAPHICS_OUTPUT_PROTOCOL only when
using GOP.
The firmware provided Blt functions on UGA platforms have been observed
to not work on old MacBooks, and are likley hit or miss anyways as UGA
has been deprecated since 2006.
Reviewed by: tsoome
PR: 291935
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D54432
(cherry picked from commit 9595055ae7494997bb07b4aaed544f88ac4c5e7f)
|
| |
|
|
|
|
|
|
|
|
|
| |
Probe for UGA instead of returning early if we can't find GOP.
Reviewed by: tsoome
PR: 291935
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D54431
(cherry picked from commit 5d85dde27b4769604fc108b89328607e70e767ed)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
What we really want here is to know if pointers can refer to 64-bit
addresses, regardless of whether they also hold other information (such
as capabilities in CHERI). __SIZEOF_SIZE_T__ is probably the closest
indication to that piece of information, so let's use it. __ILP32__
wasn't wrong in practice though, as we don't support 32-bit CHERI
hardware (and likely never will).
Consistently with this change, test whether we can actually address the
64-bit SMBIOS's structure table by converting the end address to
'size_t' and checking whether its value is preserved.
Suggested by: jhb (for the __ILP32__ => __SIZEOF_SIZE_T__ part)
Reviewed by: jhb, imp
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D49318
(cherry picked from commit d3bfcd66409befc2d545e5449963b41c25c369a9)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Add several missing .Pp after lists and literal blocks.
- Fix the column widths for the console table and use a shorter indent
so that it doesn't wrap on an 80-col display.
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D53866
(cherry picked from commit 46d05a49a1d0d655af6cae2afd48a973698cbf71)
|
| |
|
|
|
|
|
| |
- s/Additionnaly/Additionally/
- s/commmand/command/
(cherry picked from commit 6f14b6025a6f6475522697362aaf6c84514b85bf)
|
| |
|
|
|
|
|
|
|
| |
Reported-by: Daniel O'Connor darius-dons.net.au
MFC-after: 1 week
Sponsored-by: Netflix
Differential-Revision: https://reviews.freebsd.org/D2844
(cherry picked from commit 690ae8a2025ca1ce58d08a90a1df1645c81392ea)
|
| |
|
|
|
|
| |
- s/externel/external/
(cherry picked from commit a7818e34209579b5e1bba0df73c4d0d5ed2b1397)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
While these should be moved to the new format, it wasn't my intention
to force them over immediately. Downstreams may embed their own brands
in drawer.lua, and we shouldn't break them for something like this.
Move adapt_fb_shim() up and use it for preloaded definitions to avoid
forcing the matter for now. Perhaps in the future we'll start writing
out warnings for those that do need adapted.
Reported by: 0x1eef on IRC
(cherry picked from commit abdbd85d1b6af892c18eaae0330a146b01ff6712)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Setting loader_brand to none in loader.conf now result in a lua error
as we try to get a non-existant table
Defines it
Fixes: bef6d85b6de5 ("lualoader: allow graphical bits to be disabled with loader_gfx")
Reviewed by: kevans, tsoome
Sponsored by: Beckhoff Automation GmbH & Co. KG
(cherry picked from commit 7e1930480bef285cca1c14c25b4fd62abdf5dabf)
|
| |
|
|
|
|
|
|
| |
The global `shift` is a special little hack for shifting everything when
the logo is gone, and we should explain that.
Fixes: 33d3373faf30d ("stand: lua: convert orb to a new format [...]")
(cherry picked from commit 1beab149d0b9768ad6d07501326a2060d7b0ba58)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, we had one shift that had to work for both the ASCII version
and the image that we may draw if we have a framebuffer to play with.
That makes it more difficult to get the positioning just right, so split
them out into their own tables for convenience.
While we're here, stop clipping off the bottom of the orb when the
autoboot sequence is interrupted. There's plenty of space for it to
move up a hair, so let's do that..
Reviewed by: imp, tsoome
(cherry picked from commit 33d3373faf30d5e7a1890ab686d932c984bc4b75)
|
| |
|
|
|
|
|
| |
This shadows an `i` used for indexing earlier in the function, and we
don't care that much about the name.
(cherry picked from commit d0d5415881b7ed6908a2a734d893eb870b93b33f)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some people prefer the old ASCII art look and it's good to have a way
to confirm that the fallbacks still work right on systems that have a
functional framebuffer available. Add a loader_gfx loader.conf(5)
variable to disable the eager use of graphics for these use-cases.
While we're here, clean up the style in the area a little bit; the early
porting that I did to lualoader did a lot of redundant ~= nil that has
carried over into some of the later work. We can drop some of that, and
also re-organize some of these variables to improve readability.
ziaee notes that the positioning of the orb is a bit off; this is due to
a change in positioning that happened in
1b4e1171315398dec ("loader: Fix orb position") to account for the image
dimensions. This should be partially reverted to get it right; we
shouldn't assume that we can use the same shift in gfx-* definitions for
both the ASCII art and the associated image -- the {image, image_rl}
pair should be converted to something more like an fbimg or gfx table
that has the image, image width and a shift override to avoid messing
up the ASCII positioning when disabled (or with no graphics available).
Reviewed by: imp, manu, ziaee (manpages)
(cherry picked from commit bef6d85b6de55e0e7adcfa1fd2e4abdcecbf9564)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This word was accidentally removed when gfx bindings were made optional
to remove some overhead not needed for all loaders. This one isn't
graphics related, so we can safely restore it without irritating anyone.
Reported by: sjg
Reviewed by: adrian, imp
Fixes: 9c8bf69a53f ("loader: Only create gfx 4th bindings when [...]")
(cherry picked from commit 354fb783e6d5ff9abcb6529cbb17cbb2ff6a7375)
|
| |
|
|
|
|
|
|
|
| |
Fix the orb position to be aligned with the menu
Reviewed by: imp, tsoome
Sponsored by: Beckhoff Automation GmbH & Co. KG
(cherry picked from commit 1b4e1171315398decb1ad3fceffcacf29cff218b)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Follow the path of what is done with bsnmp, build the modules along
with the main binary, this allows to build the modules at a moment
where all needed libraries are already built and available in the
linker path instead of having to declare all the libraries which a
flua module will be linked to in _prebuild_libs.
Discused with: markj
Reviewed by: markj, jrtc27, kevans, imp
Accepted by: kevans, imp
Differential Revision: https://reviews.freebsd.org/D46610
(cherry picked from commit 7899f917b1c0ea178f1d2be0cfb452086d079d23)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Despite being discouraged in the man page people are trying to load
the driver from loader. In that case firmware is missing and the
root file system is not there yet and the LinuxKPI based drivers
will panic the system on boot. Simply avoid any further support
trouble by disallowing them to be loaded from loader.
If someone still wants to do it, they will need to figure out how
to remove them from the blocklst and how to loader the firmware
file(s) in advance themselves.
Sponsored by: The FreeBSD Foundation
PR: 287480
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D50817
(cherry picked from commit 55efb3bf2b6edb8e1b888dc7ed52046f5b9b6591)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
With the new 32-bit UEFI loader, it's convenient to have a sysctl to
figure out how we booted. Can be accessed at machdep.efi_arch
Reviewed by: imp
Pull Request: https://github.com/freebsd/freebsd-src/pull/1098
(cherry picked from commit b538d4911004ca541507166b8ec9689d2e87d1aa)
Approved by: imp (mentor)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add cdboot to the reference manual, fixing an undocumented bug where it
is undocumented. There's almost nothing here, but that's better than
"only imp and jhb know what this is".
MFC after: 3 days
Reported by: jhb, imp
Reviewed by: mhorne
Approved by: mhorne (mentor)
Differential Revision: https://reviews.freebsd.org/D50274
(cherry picked from commit ecdb0b79bf93a2b8392694bd266c5930ca42bab5)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The lua boot loader module manuals were getting pulled into search
results for FreeBSD, but not for "boot" or "loader". Reword them to
increase clarity for boot or loader searches, as well as the FreeBSD
search term which we've been scoping to system topic overview manuals.
MFC after: 3 days
Reviewed by: imp, mhorne
Approved by: mhorne (mentor)
Pull Request: https://github.com/freebsd/freebsd-src/pulls/1628
(cherry picked from commit 5d59c1b4f14e2fa6388b1d75ee3243085f1c69f2)
|
| |
|
|
|
|
|
|
|
|
| |
Also provide an error message when argc is too long instead of printing
"no error message".
Reviewed by: imp, kib
Pull Request: https://github.com/freebsd/freebsd-src/pull/1381
(cherry picked from commit 6fdb07d5b7e9293a6851a23b7ecb26636cf1ec1e)
|
| |
|
|
|
|
|
| |
Reviewed by: imp, kib
Pull Request: https://github.com/freebsd/freebsd-src/pull/1381
(cherry picked from commit a698c15a41afca19f87e11d4f8ce5664f992673b)
|
| |
|
|
|
|
|
| |
Reviewed by: imp, kib
Pull Request: https://github.com/freebsd/freebsd-src/pull/1381
(cherry picked from commit c10511375252e53d6c9fe47f97e254f1380a89c5)
|
| |
|
|
|
|
|
|
|
|
|
| |
in the bootloader.
Reviewed by: imp
MFC after: 1 week
Sponsored by: Vdura
Differential Revision: https://reviews.freebsd.org/D49708
(cherry picked from commit 3adae4f27d600f0be7904eb1bb30e79d90386793)
|