blob: af49d577153bff92b6de95abdb80d6dc52a44bb6 [file] [log] [blame]
Andrew Geisslerf0343792020-11-18 10:42:21 -06001.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
Andrew Geisslerc9f78652020-09-18 14:11:35 -05002
3***
4FAQ
5***
6
Andrew Geissler4c19ea12020-10-27 13:52:24 -05007**Q:** How does Poky differ from :oe_home:`OpenEmbedded <>`?
Andrew Geisslerc9f78652020-09-18 14:11:35 -05008
9**A:** The term ``Poky`` refers to the specific reference build
10system that the Yocto Project provides. Poky is based on
11:term:`OpenEmbedded-Core (OE-Core)` and :term:`BitBake`. Thus, the
12generic term used here for the build system is the "OpenEmbedded build
13system." Development in the Yocto Project using Poky is closely tied to
14OpenEmbedded, with changes always being merged to OE-Core or BitBake
15first before being pulled back into Poky. This practice benefits both
16projects immediately.
17
18**Q:** My development system does not meet the required Git, tar, and
Andrew Geissler3b8a17c2021-04-15 15:55:55 -050019Python versions. In particular, I do not have Python &MIN_PYTHON_VERSION; or greater.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050020Can I still use the Yocto Project?
21
22**A:** You can get the required tools on your host development system a
23couple different ways (i.e. building a tarball or downloading a
Andrew Geissler4c19ea12020-10-27 13:52:24 -050024tarball). See the
Andrew Geissler615f2f12022-07-15 14:00:58 -050025":ref:`ref-manual/system-requirements:required git, tar, python, make and gcc versions`"
Andrew Geissler4c19ea12020-10-27 13:52:24 -050026section for steps on how to update your build tools.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050027
28**Q:** How can you claim Poky / OpenEmbedded-Core is stable?
29
30**A:** There are three areas that help with stability;
31
32- The Yocto Project team keeps :term:`OpenEmbedded-Core (OE-Core)` small and
33 focused, containing around 830 recipes as opposed to the thousands
34 available in other OpenEmbedded community layers. Keeping it small
35 makes it easy to test and maintain.
36
37- The Yocto Project team runs manual and automated tests using a small,
38 fixed set of reference hardware as well as emulated targets.
39
40- The Yocto Project uses an autobuilder, which provides continuous
41 build and integration tests.
42
43**Q:** How do I get support for my board added to the Yocto Project?
44
45**A:** Support for an additional board is added by creating a Board
46Support Package (BSP) layer for it. For more information on how to
47create a BSP layer, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -060048":ref:`dev-manual/common-tasks:understanding and creating layers`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -050049section in the Yocto Project Development Tasks Manual and the
Andrew Geissler09209ee2020-12-13 08:44:15 -060050:doc:`/bsp-guide/index`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050051
52Usually, if the board is not completely exotic, adding support in the
53Yocto Project is fairly straightforward.
54
55**Q:** Are there any products built using the OpenEmbedded build system?
56
Patrick Williams2194f502022-10-16 14:26:09 -050057**A:** See :yocto_wiki:`Products that use the Yocto Project
58</Project_Users#Products_that_use_the_Yocto_Project>` in the Yocto Project
59Wiki. Don't hesitate to contribute to this page if you know other such
60products.
Andrew Geisslerc9f78652020-09-18 14:11:35 -050061
62**Q:** What does the OpenEmbedded build system produce as output?
63
64**A:** Because you can use the same set of recipes to create output of
65various formats, the output of an OpenEmbedded build depends on how you
66start it. Usually, the output is a flashable image ready for the target
67device.
68
69**Q:** How do I add my package to the Yocto Project?
70
71**A:** To add a package, you need to create a BitBake recipe. For
72information on how to create a BitBake recipe, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -060073":ref:`dev-manual/common-tasks:writing a new recipe`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -050074section in the Yocto Project Development Tasks Manual.
75
76**Q:** Do I have to reflash my entire board with a new Yocto Project
77image when recompiling a package?
78
79**A:** The OpenEmbedded build system can build packages in various
80formats such as IPK for OPKG, Debian package (``.deb``), or RPM. You can
81then upgrade the packages using the package tools on the device, much
82like on a desktop distribution such as Ubuntu or Fedora. However,
83package management on the target is entirely optional.
84
85**Q:** I see the error
86'``chmod: XXXXX new permissions are r-xrwxrwx, not r-xr-xr-x``'. What is
87wrong?
88
89**A:** You are probably running the build on an NTFS filesystem. Use
90``ext2``, ``ext3``, or ``ext4`` instead.
91
92**Q:** I see lots of 404 responses for files when the OpenEmbedded build
93system is trying to download sources. Is something wrong?
94
95**A:** Nothing is wrong. The OpenEmbedded build system checks any
96configured source mirrors before downloading from the upstream sources.
97The build system does this searching for both source archives and
98pre-checked out versions of SCM-managed software. These checks help in
99large installations because it can reduce load on the SCM servers
100themselves. The address above is one of the default mirrors configured
101into the build system. Consequently, if an upstream source disappears,
102the team can place sources there so builds continue to work.
103
104**Q:** I have machine-specific data in a package for one machine only
105but the package is being marked as machine-specific in all cases, how do
106I prevent this?
107
Andrew Geissler09036742021-06-25 14:25:14 -0500108**A:** Set :term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` = "0" in the ``.bb`` file
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500109but make sure the package is manually marked as machine-specific for the
110case that needs it. The code that handles
Andrew Geissler09036742021-06-25 14:25:14 -0500111:term:`SRC_URI_OVERRIDES_PACKAGE_ARCH` is in the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500112``meta/classes/base.bbclass`` file.
113
114**Q:** I'm behind a firewall and need to use a proxy server. How do I do
115that?
116
117**A:** Most source fetching by the OpenEmbedded build system is done by
118``wget`` and you therefore need to specify the proxy settings in a
119``.wgetrc`` file, which can be in your home directory if you are a
120single user or can be in ``/usr/local/etc/wgetrc`` as a global user
121file.
122
123Following is the applicable code for setting various proxy types in the
124``.wgetrc`` file. By default, these settings are disabled with comments.
Andrew Geisslerc926e172021-05-07 16:11:35 -0500125To use them, remove the comments::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500126
127 # You can set the default proxies for Wget to use for http, https, and ftp.
128 # They will override the value in the environment.
129 #https_proxy = http://proxy.yoyodyne.com:18023/
130 #http_proxy = http://proxy.yoyodyne.com:18023/
131 #ftp_proxy = http://proxy.yoyodyne.com:18023/
132
133 # If you do not want to use proxy at all, set this to off.
134 #use_proxy = on
135
136The Yocto Project also includes a
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500137``meta-poky/conf/templates/default/site.conf.sample`` file that shows
138how to configure CVS and Git proxy servers if needed. For more
139information on setting up various proxy types and configuring proxy
140servers, see the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600141":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500142Wiki page.
143
Andrew Geisslereff27472021-10-29 15:35:00 -0500144**Q:** What's the difference between ``target`` and ``target-native``?
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500145
146**A:** The ``*-native`` targets are designed to run on the system being
147used for the build. These are usually tools that are needed to assist
148the build in some way such as ``quilt-native``, which is used to apply
149patches. The non-native version is the one that runs on the target
150device.
151
152**Q:** I'm seeing random build failures. Help?!
153
154**A:** If the same build is failing in totally different and random
155ways, the most likely explanation is:
156
157- The hardware you are running the build on has some problem.
158
159- You are running the build under virtualization, in which case the
160 virtualization probably has bugs.
161
162The OpenEmbedded build system processes a massive amount of data that
163causes lots of network, disk and CPU activity and is sensitive to even
164single-bit failures in any of these areas. True random failures have
165always been traced back to hardware or virtualization issues.
166
167**Q:** When I try to build a native recipe, the build fails with
168``iconv.h`` problems.
169
170**A:** If you get an error message that indicates GNU ``libiconv`` is
171not in use but ``iconv.h`` has been included from ``libiconv``, you need
172to check to see if you have a previously installed version of the header
173file in ``/usr/local/include``.
174::
175
176 #error GNU libiconv not in use but included iconv.h is from libiconv
177
178If you find a previously installed
179file, you should either uninstall it or temporarily rename it and try
180the build again.
181
182This issue is just a single manifestation of "system leakage" issues
183caused when the OpenEmbedded build system finds and uses previously
184installed files during a native build. This type of issue might not be
185limited to ``iconv.h``. Be sure that leakage cannot occur from
186``/usr/local/include`` and ``/opt`` locations.
187
188**Q:** What do we need to ship for license compliance?
189
190**A:** This is a difficult question and you need to consult your lawyer
191for the answer for your specific case. It is worth bearing in mind that
192for GPL compliance, there needs to be enough information shipped to
193allow someone else to rebuild and produce the same end result you are
194shipping. This means sharing the source code, any patches applied to it,
195and also any configuration information about how that package was
196configured and built.
197
198You can find more information on licensing in the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600199":ref:`overview-manual/development-environment:licensing`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500200section in the Yocto
201Project Overview and Concepts Manual and also in the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600202":ref:`dev-manual/common-tasks:maintaining open source license compliance during your product's lifecycle`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500203section in the Yocto Project Development Tasks Manual.
204
205**Q:** How do I disable the cursor on my touchscreen device?
206
207**A:** You need to create a form factor file as described in the
Andrew Geissler6ce62a22020-11-30 19:58:47 -0600208":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500209the Yocto Project Board Support Packages (BSP) Developer's Guide. Set
Andrew Geisslerc926e172021-05-07 16:11:35 -0500210the ``HAVE_TOUCHSCREEN`` variable equal to one as follows::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500211
212 HAVE_TOUCHSCREEN=1
213
214**Q:** How do I make sure connected network interfaces are brought up by
215default?
216
217**A:** The default interfaces file provided by the netbase recipe does
218not automatically bring up network interfaces. Therefore, you will need
219to add a BSP-specific netbase that includes an interfaces file. See the
Andrew Geissler6ce62a22020-11-30 19:58:47 -0600220":ref:`bsp-guide/bsp:miscellaneous bsp-specific recipe files`" section in
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500221the Yocto Project Board Support Packages (BSP) Developer's Guide for
222information on creating these types of miscellaneous recipe files.
223
Andrew Geisslerc926e172021-05-07 16:11:35 -0500224For example, add the following files to your layer::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500225
226 meta-MACHINE/recipes-bsp/netbase/netbase/MACHINE/interfaces
227 meta-MACHINE/recipes-bsp/netbase/netbase_5.0.bbappend
228
229**Q:** How do I create images with more free space?
230
231**A:** By default, the OpenEmbedded build system creates images that are
2321.3 times the size of the populated root filesystem. To affect the image
233size, you need to set various configurations:
234
235- *Image Size:* The OpenEmbedded build system uses the
236 :term:`IMAGE_ROOTFS_SIZE` variable to define
237 the size of the image in Kbytes. The build system determines the size
238 by taking into account the initial root filesystem size before any
239 modifications such as requested size for the image and any requested
240 additional free disk space to be added to the image.
241
242- *Overhead:* Use the
243 :term:`IMAGE_OVERHEAD_FACTOR` variable
244 to define the multiplier that the build system applies to the initial
245 image size, which is 1.3 by default.
246
247- *Additional Free Space:* Use the
248 :term:`IMAGE_ROOTFS_EXTRA_SPACE`
249 variable to add additional free space to the image. The build system
250 adds this space to the image after it determines its
Andrew Geissler09036742021-06-25 14:25:14 -0500251 :term:`IMAGE_ROOTFS_SIZE`.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500252
253**Q:** Why don't you support directories with spaces in the pathnames?
254
255**A:** The Yocto Project team has tried to do this before but too many
256of the tools the OpenEmbedded build system depends on, such as
257``autoconf``, break when they find spaces in pathnames. Until that
258situation changes, the team will not support spaces in pathnames.
259
260**Q:** How do I use an external toolchain?
261
262**A:** The toolchain configuration is very flexible and customizable. It
Andrew Geissler09036742021-06-25 14:25:14 -0500263is primarily controlled with the :term:`TCMODE` variable. This variable
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500264controls which ``tcmode-*.inc`` file to include from the
265``meta/conf/distro/include`` directory within the :term:`Source Directory`.
266
Andrew Geissler09036742021-06-25 14:25:14 -0500267The default value of :term:`TCMODE` is "default", which tells the
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500268OpenEmbedded build system to use its internally built toolchain (i.e.
269``tcmode-default.inc``). However, other patterns are accepted. In
270particular, "external-\*" refers to external toolchains. One example is
271the Sourcery G++ Toolchain. The support for this toolchain resides in
272the separate ``meta-sourcery`` layer at
Andrew Geisslerd1e89492021-02-12 15:35:20 -0600273https://github.com/MentorEmbedded/meta-sourcery/.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500274
275In addition to the toolchain configuration, you also need a
276corresponding toolchain recipe file. This recipe file needs to package
277up any pre-built objects in the toolchain such as ``libgcc``,
278``libstdcc++``, any locales, and ``libc``.
279
280**Q:** How does the OpenEmbedded build system obtain source code and
281will it work behind my firewall or proxy server?
282
283**A:** The way the build system obtains source code is highly
284configurable. You can setup the build system to get source code in most
285environments if HTTP transport is available.
286
287When the build system searches for source code, it first tries the local
288download directory. If that location fails, Poky tries
289:term:`PREMIRRORS`, the upstream source, and then
290:term:`MIRRORS` in that order.
291
292Assuming your distribution is "poky", the OpenEmbedded build system uses
Andrew Geissler5f350902021-07-23 13:09:54 -0400293the Yocto Project source :term:`PREMIRRORS` by default for SCM-based
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500294sources, upstreams for normal tarballs, and then falls back to a number
295of other mirrors including the Yocto Project source mirror if those
296fail.
297
298As an example, you could add a specific server for the build system to
299attempt before any others by adding something like the following to the
Andrew Geisslerc926e172021-05-07 16:11:35 -0500300``local.conf`` configuration file::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500301
Patrick Williams0ca19cc2021-08-16 14:03:13 -0500302 PREMIRRORS:prepend = "\
Andrew Geissler595f6302022-01-24 19:11:47 +0000303 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
304 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
305 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
306 https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500307
308These changes cause the build system to intercept Git, FTP, HTTP, and
309HTTPS requests and direct them to the ``http://`` sources mirror. You
310can use ``file://`` URLs to point to local directories or network shares
311as well.
312
William A. Kennington IIIac69b482021-06-02 12:28:27 -0700313Here are other options::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500314
315 BB_NO_NETWORK = "1"
316
317This statement tells BitBake to issue an error
318instead of trying to access the Internet. This technique is useful if
319you want to ensure code builds only from local sources.
320
Andrew Geisslerc926e172021-05-07 16:11:35 -0500321Here is another technique::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500322
323 BB_FETCH_PREMIRRORONLY = "1"
324
325This statement
Andrew Geissler09036742021-06-25 14:25:14 -0500326limits the build system to pulling source from the :term:`PREMIRRORS` only.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500327Again, this technique is useful for reproducing builds.
328
Andrew Geisslerc926e172021-05-07 16:11:35 -0500329Here is another technique::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500330
331 BB_GENERATE_MIRROR_TARBALLS = "1"
332
333This
334statement tells the build system to generate mirror tarballs. This
335technique is useful if you want to create a mirror server. If not,
336however, the technique can simply waste time during the build.
337
338Finally, consider an example where you are behind an HTTP-only firewall.
339You could make the following changes to the ``local.conf`` configuration
Andrew Geissler09036742021-06-25 14:25:14 -0500340file as long as the :term:`PREMIRRORS` server is current::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500341
Patrick Williams0ca19cc2021-08-16 14:03:13 -0500342 PREMIRRORS:prepend = "\
Andrew Geissler595f6302022-01-24 19:11:47 +0000343 git://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
344 ftp://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
345 http://.*/.* &YOCTO_DL_URL;/mirror/sources/ \
346 https://.*/.* &YOCTO_DL_URL;/mirror/sources/"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500347 BB_FETCH_PREMIRRORONLY = "1"
348
349These changes would cause the build system to successfully fetch source
350over HTTP and any network accesses to anything other than the
Andrew Geissler09036742021-06-25 14:25:14 -0500351:term:`PREMIRRORS` would fail.
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500352
353The build system also honors the standard shell environment variables
354``http_proxy``, ``ftp_proxy``, ``https_proxy``, and ``all_proxy`` to
355redirect requests through proxy servers.
356
357.. note::
358
359 You can find more information on the
Andrew Geissler09209ee2020-12-13 08:44:15 -0600360 ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500361 Wiki page.
362
363**Q:** Can I get rid of build output so I can start over?
364
Andrew Geissler615f2f12022-07-15 14:00:58 -0500365**A:** Yes --- you can easily do this. When you use BitBake to build an
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500366image, all the build output goes into the directory created when you run
367the build environment setup script (i.e.
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500368:ref:`structure-core-script`). By default, this :term:`Build Directory`
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500369is named ``build`` but can be named
370anything you want.
371
372Within the Build Directory, is the ``tmp`` directory. To remove all the
373build output yet preserve any source code or downloaded files from
374previous builds, simply remove the ``tmp`` directory.
375
376**Q:** Why do ``${bindir}`` and ``${libdir}`` have strange values for
377``-native`` recipes?
378
379**A:** Executables and libraries might need to be used from a directory
380other than the directory into which they were initially installed.
381Complicating this situation is the fact that sometimes these executables
382and libraries are compiled with the expectation of being run from that
383initial installation target directory. If this is the case, moving them
384causes problems.
385
386This scenario is a fundamental problem for package maintainers of
387mainstream Linux distributions as well as for the OpenEmbedded build
388system. As such, a well-established solution exists. Makefiles,
389Autotools configuration scripts, and other build systems are expected to
390respect environment variables such as ``bindir``, ``libdir``, and
391``sysconfdir`` that indicate where executables, libraries, and data
392reside when a program is actually run. They are also expected to respect
393a ``DESTDIR`` environment variable, which is prepended to all the other
394variables when the build system actually installs the files. It is
395understood that the program does not actually run from within
396``DESTDIR``.
397
398When the OpenEmbedded build system uses a recipe to build a
399target-architecture program (i.e. one that is intended for inclusion on
400the image being built), that program eventually runs from the root file
401system of that image. Thus, the build system provides a value of
402"/usr/bin" for ``bindir``, a value of "/usr/lib" for ``libdir``, and so
403forth.
404
405Meanwhile, ``DESTDIR`` is a path within the :term:`Build Directory`.
406However, when the recipe builds a
407native program (i.e. one that is intended to run on the build machine),
408that program is never installed directly to the build machine's root
409file system. Consequently, the build system uses paths within the Build
410Directory for ``DESTDIR``, ``bindir`` and related variables. To better
411understand this, consider the following two paths where the first is
Andrew Geissler4c19ea12020-10-27 13:52:24 -0500412relatively normal and the second is not:
413
414.. note::
415
416 Due to these lengthy examples, the paths are artificially broken
417 across lines for readability.
418
419::
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500420
421 /home/maxtothemax/poky-bootchart2/build/tmp/work/i586-poky-linux/zlib/
422 1.2.8-r0/sysroot-destdir/usr/bin
423
424 /home/maxtothemax/poky-bootchart2/build/tmp/work/x86_64-linux/
425 zlib-native/1.2.8-r0/sysroot-destdir/home/maxtothemax/poky-bootchart2/
426 build/tmp/sysroots/x86_64-linux/usr/bin
427
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500428Even if the paths look unusual,
Andrew Geissler615f2f12022-07-15 14:00:58 -0500429they both are correct --- the first for a target and the second for a
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500430native recipe. These paths are a consequence of the ``DESTDIR``
431mechanism and while they appear strange, they are correct and in
432practice very effective.
433
434**Q:** The files provided by my ``*-native`` recipe do not appear to be
435available to other recipes. Files are missing from the native sysroot,
436my recipe is installing to the wrong place, or I am getting permissions
Patrick Williams2194f502022-10-16 14:26:09 -0500437errors during the :ref:`ref-tasks-install` task in my recipe! What is wrong?
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500438
439**A:** This situation results when a build system does not recognize the
440environment variables supplied to it by :term:`BitBake`. The
441incident that prompted this FAQ entry involved a Makefile that used an
442environment variable named ``BINDIR`` instead of the more standard
443variable ``bindir``. The makefile's hardcoded default value of
444"/usr/bin" worked most of the time, but not for the recipe's ``-native``
445variant. For another example, permissions errors might be caused by a
446Makefile that ignores ``DESTDIR`` or uses a different name for that
Andrew Geissler3b8a17c2021-04-15 15:55:55 -0500447environment variable. Check the build system to see if these kinds
Andrew Geisslerc9f78652020-09-18 14:11:35 -0500448of issues exist.
Andrew Geissler6ce62a22020-11-30 19:58:47 -0600449
450**Q:** I'm adding a binary in a recipe but it's different in the image, what is
451changing it?
452
453**A:** The first most obvious change is the system stripping debug symbols from
454it. Setting :term:`INHIBIT_PACKAGE_STRIP` to stop debug symbols being stripped and/or
455:term:`INHIBIT_PACKAGE_DEBUG_SPLIT` to stop debug symbols being split into a separate
Andrew Geissler9aee5002022-03-30 16:27:02 +0000456file will ensure the binary is unchanged.