* [bug#42555] [PATCH core-updates] build-system/gnu: strip with --strip-unneeded
@ 2020-07-26 23:38 Jakub Kądziołka
2020-07-30 0:21 ` [bug#42555] [PATCH v2 " Jakub Kądziołka
0 siblings, 1 reply; 4+ messages in thread
From: Jakub Kądziołka @ 2020-07-26 23:38 UTC (permalink / raw)
To: 42555
Apart from debug information, one can also strip some symbols. This can
be a significant difference, qtbase:out consists of about 5 MB of those
symbols. As per [1], --strip-debug is included in --strip-unneeded, and
the debug files created also contain a copy of the information removed
by --strip-unneeded.
Linux From Scratch suggests that this option shouldn't be used on static
libraries [2], however other sources [3] indicate otherwise. Building a
toolchain with this patch succeeds, and the result works fine for
'gcc -static hello-world.c'.
[1]: https://stackoverflow.com/a/52555093
[2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
[3]: https://www.technovelty.org/linux/stripping-shared-libraries.html
* guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
---
guix/build/gnu-build-system.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index 2e7dff2034..d3347c9518 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -425,7 +425,7 @@ makefiles."
(objcopy-command (if target
(string-append target "-objcopy")
"objcopy"))
- (strip-flags '("--strip-debug"
+ (strip-flags '("--strip-unneeded"
"--enable-deterministic-archives"))
(strip-directories '("lib" "lib64" "libexec"
"bin" "sbin"))
--
2.27.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#42555] [PATCH v2 core-updates] build-system/gnu: strip with --strip-unneeded
2020-07-26 23:38 [bug#42555] [PATCH core-updates] build-system/gnu: strip with --strip-unneeded Jakub Kądziołka
@ 2020-07-30 0:21 ` Jakub Kądziołka
2020-09-19 12:49 ` Ludovic Courtès
0 siblings, 1 reply; 4+ messages in thread
From: Jakub Kądziołka @ 2020-07-30 0:21 UTC (permalink / raw)
To: 42555
Apart from debug information, one can also strip some symbols. This can
be a significant difference, the closure of gcc-toolchain@7 got reduced
by 15 MB in my tests.
As per [1], --strip-debug is included in --strip-unneeded, and
the debug files created also contain a copy of the information removed
by --strip-unneeded.
Linux From Scratch suggests that this option shouldn't be used on static
libraries [2], however other sources [3] indicate otherwise. Building a
toolchain with this patch succeeds, and the result works fine for
'gcc -static hello-world.c'.
[1]: https://stackoverflow.com/a/52555093
[2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
[3]: https://www.technovelty.org/linux/stripping-shared-libraries.html
* guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
* guix/build-system/gnu.scm (static-package, gnu-build, gnu-cross-build): Likewise.
---
I have realized that my previous patch was a no-op due to default values
for arguments being scattered across files. I ran my builds again and
now I can observe results in the earlier stages of the toolchain,
accessible to a testing core-updates build.
guix/build-system/gnu.scm | 6 +++---
guix/build/gnu-build-system.scm | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 6b481ad45c..2c23197e77 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -215,7 +215,7 @@ use `--strip-all' as the arguments to `strip'."
(arguments
(let ((a (default-keyword-arguments (package-arguments p)
'(#:configure-flags '()
- #:strip-flags '("--strip-debug")))))
+ #:strip-flags '("--strip-unneeded")))))
(substitute-keyword-arguments a
((#:configure-flags flags)
`(cons* "--disable-shared" "LDFLAGS=-static" ,flags))
@@ -337,7 +337,7 @@ standard packages used as implicit inputs of the GNU build system."
(parallel-tests? #t)
(patch-shebangs? #t)
(strip-binaries? #t)
- (strip-flags ''("--strip-debug"
+ (strip-flags ''("--strip-unneeded"
"--enable-deterministic-archives"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
@@ -492,7 +492,7 @@ is one of `host' or `target'."
(parallel-build? #t) (parallel-tests? #t)
(patch-shebangs? #t)
(strip-binaries? #t)
- (strip-flags ''("--strip-debug"
+ (strip-flags ''("--strip-unneeded"
"--enable-deterministic-archives"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
diff --git a/guix/build/gnu-build-system.scm b/guix/build/gnu-build-system.scm
index 2e7dff2034..d3347c9518 100644
--- a/guix/build/gnu-build-system.scm
+++ b/guix/build/gnu-build-system.scm
@@ -425,7 +425,7 @@ makefiles."
(objcopy-command (if target
(string-append target "-objcopy")
"objcopy"))
- (strip-flags '("--strip-debug"
+ (strip-flags '("--strip-unneeded"
"--enable-deterministic-archives"))
(strip-directories '("lib" "lib64" "libexec"
"bin" "sbin"))
--
2.28.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [bug#42555] [PATCH v2 core-updates] build-system/gnu: strip with --strip-unneeded
2020-07-30 0:21 ` [bug#42555] [PATCH v2 " Jakub Kądziołka
@ 2020-09-19 12:49 ` Ludovic Courtès
2020-09-19 13:49 ` bug#42555: " Jakub Kądziołka
0 siblings, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2020-09-19 12:49 UTC (permalink / raw)
To: Jakub Kądziołka; +Cc: 42555
Hi Jakub,
Jakub Kądziołka <kuba@kadziolka.net> skribis:
> Apart from debug information, one can also strip some symbols. This can
> be a significant difference, the closure of gcc-toolchain@7 got reduced
> by 15 MB in my tests.
Nice! Now’s a good time to get that patch in on ‘core-updates’.
> As per [1], --strip-debug is included in --strip-unneeded, and
> the debug files created also contain a copy of the information removed
> by --strip-unneeded.
Hmm the Binutils manual suggests otherwise (info "(binutils) objcopy"):
--8<---------------cut here---------------start------------->8---
'-g'
'--strip-debug'
Do not copy debugging symbols or sections from the source file.
'--strip-unneeded'
Strip all symbols that are not needed for relocation processing.
--8<---------------cut here---------------end--------------->8---
… but objcopy.c reads this:
--8<---------------cut here---------------start------------->8---
else if ((flags & BSF_DEBUGGING) != 0) /* Debugging symbol. */
keep = (strip_symbols != STRIP_DEBUG
&& strip_symbols != STRIP_UNNEEDED
&& ! convert_debugging);
--8<---------------cut here---------------end--------------->8---
… confirming that ‘--strip-unneeded’ includes ‘--strip-debug’.
I submitted a patch for the Binutils manual.
> Linux From Scratch suggests that this option shouldn't be used on static
> libraries [2], however other sources [3] indicate otherwise. Building a
> toolchain with this patch succeeds, and the result works fine for
> 'gcc -static hello-world.c'.
OK.
> [1]: https://stackoverflow.com/a/52555093
Perhaps we can omit this one. In general, I think it’s safer to refer
to “primary sources” as Wikipedians would say.
> [2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
> [3]: https://www.technovelty.org/linux/stripping-shared-libraries.html
>
> * guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
> * guix/build-system/gnu.scm (static-package, gnu-build, gnu-cross-build): Likewise.
LGTM!
For the record, I tried ‘--strip-all’ before, but that was problematic
for some reason:
https://lists.gnu.org/archive/html/guix-devel/2018-03/msg00135.html
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#42555: [PATCH v2 core-updates] build-system/gnu: strip with --strip-unneeded
2020-09-19 12:49 ` Ludovic Courtès
@ 2020-09-19 13:49 ` Jakub Kądziołka
0 siblings, 0 replies; 4+ messages in thread
From: Jakub Kądziołka @ 2020-09-19 13:49 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 42555, 42555-done
On Sat Sep 19, 2020 at 4:49 PM CEST, Ludovic Courtès wrote:
> Hi Jakub,
>
> Jakub Kądziołka <kuba@kadziolka.net> skribis:
>
> > Apart from debug information, one can also strip some symbols. This can
> > be a significant difference, the closure of gcc-toolchain@7 got reduced
> > by 15 MB in my tests.
>
> Nice! Now’s a good time to get that patch in on ‘core-updates’.
Thanks. Patch pushed (with a small hiccup...)
> > [1]: https://stackoverflow.com/a/52555093
>
> Perhaps we can omit this one. In general, I think it’s safer to refer
> to “primary sources” as Wikipedians would say.
The problem with "primary sources" is that the docs on this are quite
sparse. I think this link is much more comprehensive.
> > [2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
> > [3]: https://www.technovelty.org/linux/stripping-shared-libraries.html
> >
> > * guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
> > * guix/build-system/gnu.scm (static-package, gnu-build, gnu-cross-build): Likewise.
>
> LGTM!
>
> For the record, I tried ‘--strip-all’ before, but that was
> problematic
> for some reason:
>
> https://lists.gnu.org/archive/html/guix-devel/2018-03/msg00135.html
The docs for --strip-all say "Do not copy relocation and symbol
information", so I would expect some relocation and/or linking use case
to get broken...
Regards,
Jakub Kądziołka
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-09-19 13:55 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-26 23:38 [bug#42555] [PATCH core-updates] build-system/gnu: strip with --strip-unneeded Jakub Kądziołka
2020-07-30 0:21 ` [bug#42555] [PATCH v2 " Jakub Kądziołka
2020-09-19 12:49 ` Ludovic Courtès
2020-09-19 13:49 ` bug#42555: " Jakub Kądziołka
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).