Skip to contentSkip to conversation

Allow musl to build with new binutils

PATCH New Timothy Lee 3 participants 4 messages Sep 24, 2017 – Oct 8, 2017

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Allow musl to build with new binutils

New binutils cannot build musl-1.1.16 due to breakage in arm atomics asm. This patch from upstream musl repository is needed until musl-1.1.17 is released:
https://git.musl-libc.org/cgit/musl/commit/?id=b261a24256792177a5f0531dbb25cc6267220ca5

---
 .../0002-arm-atomics-asm-with-new-binutils.patch   | 40 ++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 package/musl/0002-arm-atomics-asm-with-new-binutils.patch
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +40 -0
new file mode 100644
index 0000000000..f0ad408687
@@ -0,0 +1,40 @@
+From b261a24256792177a5f0531dbb25cc6267220ca5 Mon Sep 17 00:00:00 2001
+From: Rich Felker <[email protected]>
+Date: Wed, 15 Feb 2017 17:05:50 -0500
+Subject: fix build regression in arm atomics asm with new binutils
+
+binutils commit bada43421274615d0d5f629a61a60b7daa71bc15 tightened
+immediate fixup handling in gas in such a way that the final .arch of
+an object file must be compatible with the fixups used when the
+instruction was assembled; this in turn broke assembling of atomics.s,
+at least in thumb mode.
+
+it's not clear whether this should be considered a bug in gas, but
+.object_arch is preferable anyway for our purpose here of controlling
+the ISA level tag on the object file being produced, and it's the
+intended directive for use in object files with runtime code
+selection. research by Szabolcs Nagy confirmed that .object_arch is
+supported in all relevant versions of binutils and clang's integrated
+assembler.
+
+patch by Reiner Herrmann.
+---
+ src/thread/arm/atomics.s | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/thread/arm/atomics.s b/src/thread/arm/atomics.s
+index 202faa4..101ad39 100644
+--- a/src/thread/arm/atomics.s
++++ b/src/thread/arm/atomics.s
+@@ -84,7 +84,7 @@ __a_gettp_cp15:
+ 	bx lr
+ 
+ /* Tag this file with minimum ISA level so as not to affect linking. */
+-.arch armv4t
++.object_arch armv4t
+ .eabi_attribute 6,2
+ 
+ .data
+-- 
+cgit v0.11.2
+
Signature · 1 line
2.14.1
#1 lore raw

PATCH 1/1 Allow musl to build with new binutils

Hi Timothy,

Looks good, but one major problem below that will require a respin: you need to
add your Signed-off-by to the patch.

Quoted 1 line · Timothy Lee

New binutils cannot build musl-1.1.16 due to breakage in arm atomics asm. This

Can you specify which binutils version that is? Based on the log message below
it would be 2.28.

Quoted 25 lines

patch from upstream musl repository is needed until musl-1.1.17 is released:
https://git.musl-libc.org/cgit/musl/commit/?id=b261a24256792177a5f0531dbb25cc6267220ca5

---
 .../0002-arm-atomics-asm-with-new-binutils.patch   | 40 ++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 package/musl/0002-arm-atomics-asm-with-new-binutils.patch
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +10 -0
new file mode 100644
index 0000000000..f0ad408687
@@ -0,0 +1,40 @@
+From b261a24256792177a5f0531dbb25cc6267220ca5 Mon Sep 17 00:00:00 2001
+From: Rich Felker <[email protected]>
+Date: Wed, 15 Feb 2017 17:05:50 -0500
+Subject: fix build regression in arm atomics asm with new binutils
+
+binutils commit bada43421274615d0d5f629a61a60b7daa71bc15 tightened
+immediate fixup handling in gas in such a way that the final .arch of
+an object file must be compatible with the fixups used when the
+instruction was assembled; this in turn broke assembling of atomics.s,
+at least in thumb mode.

package/musl/0002-arm-atomics-asm-with-new-binutils.patch line 20

Quoted 10 lines
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +10 -0
+
+it's not clear whether this should be considered a bug in gas, but
+.object_arch is preferable anyway for our purpose here of controlling
+the ISA level tag on the object file being produced, and it's the
+intended directive for use in object files with runtime code
+selection. research by Szabolcs Nagy confirmed that .object_arch is
+supported in all relevant versions of binutils and clang's integrated
+assembler.
+
+patch by Reiner Herrmann.

Just like in the patch itself, you need to add your Signed-off-by here. This
is a short way for you to assert that you are entitled to contribute the patch under the package license.

Quoted 4 lines
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +4 -0
+---
+ src/thread/arm/atomics.s | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+

package/musl/0002-arm-atomics-asm-with-new-binutils.patch line 34

Quoted 10 lines
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +10 -0
+diff --git a/src/thread/arm/atomics.s b/src/thread/arm/atomics.s
+index 202faa4..101ad39 100644
+--- a/src/thread/arm/atomics.s
++++ b/src/thread/arm/atomics.s
+@@ -84,7 +84,7 @@ __a_gettp_cp15:
+ 	bx lr
+ 
+ /* Tag this file with minimum ISA level so as not to affect linking. */
+-.arch armv4t
++.object_arch armv4t

I was surprised that this problem was not discovered in
http://toolchains.free-electrons.com/ but I guess that's because the problem only applies to ARMv4 and no ARMv4 toolchains are built. Maybe add to the commit log that this is only for ARMv4.

Regards,
Arnout

Quoted 7 lines
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +6 -0
+ .eabi_attribute 6,2
+ 
+ .data
+-- 
+cgit v0.11.2
+
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7493 020B C7E3 8618 8DEC 222C 82EB F404 F9AC 0DDF
#2 lore raw

PATCH 1/1 Allow musl for ARMv4 to build with new binutils

New binutils (since 2.27.51) cannot build musl-1.1.16 due to breakage in ARMv4 atomics asm. This patch from upstream musl repository is needed until musl-1.1.17 is released:
https://git.musl-libc.org/cgit/musl/commit/?id=b261a24256792177a5f0531dbb25cc6267220ca5

---
 .../0002-arm-atomics-asm-with-new-binutils.patch   | 42 ++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 package/musl/0002-arm-atomics-asm-with-new-binutils.patch
package/musl/0002-arm-atomics-asm-with-new-binutils.patch new file +42 -0
new file mode 100644
index 0000000000..510c38a90d
@@ -0,0 +1,42 @@
+From b261a24256792177a5f0531dbb25cc6267220ca5 Mon Sep 17 00:00:00 2001
+From: Rich Felker <[email protected]>
+Date: Wed, 15 Feb 2017 17:05:50 -0500
+Subject: fix build regression in arm atomics asm with new binutils
+
+binutils commit bada43421274615d0d5f629a61a60b7daa71bc15 tightened
+immediate fixup handling in gas in such a way that the final .arch of
+an object file must be compatible with the fixups used when the
+instruction was assembled; this in turn broke assembling of atomics.s,
+at least in thumb mode.
+
+it's not clear whether this should be considered a bug in gas, but
+.object_arch is preferable anyway for our purpose here of controlling
+the ISA level tag on the object file being produced, and it's the
+intended directive for use in object files with runtime code
+selection. research by Szabolcs Nagy confirmed that .object_arch is
+supported in all relevant versions of binutils and clang's integrated
+assembler.
+
+patch by Reiner Herrmann.
+
+Signed-off-by: Timothy Lee <[email protected]>
+---
+ src/thread/arm/atomics.s | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/thread/arm/atomics.s b/src/thread/arm/atomics.s
+index 202faa4..101ad39 100644
+--- a/src/thread/arm/atomics.s
++++ b/src/thread/arm/atomics.s
+@@ -84,7 +84,7 @@ __a_gettp_cp15:
+ 	bx lr
+ 
+ /* Tag this file with minimum ISA level so as not to affect linking. */
+-.arch armv4t
++.object_arch armv4t
+ .eabi_attribute 6,2
+ 
+ .data
+-- 
+cgit v0.11.2
+
Signature · 1 line
2.14.1
#3 lore raw

PATCH 1/1 Allow musl for ARMv4 to build with new binutils

Hello,

Quoted 10 lines · Timothy Lee

New binutils (since 2.27.51) cannot build musl-1.1.16 due to breakage in ARMv4 atomics asm. This patch from upstream musl repository is needed until musl-1.1.17 is released:
https://git.musl-libc.org/cgit/musl/commit/?id=b261a24256792177a5f0531dbb25cc6267220ca5

---
 .../0002-arm-atomics-asm-with-new-binutils.patch   | 42 ++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 package/musl/0002-arm-atomics-asm-with-new-binutils.patch

Applied to master, thanks.

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com