Skip to contentSkip to conversation

reenable microblaze little endian for internal musl toolchain

PATCH Superseded Waldemar Brodkorb 3 participants 8 messages May 31, 2014 – Jun 1, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

The assumption musl libc does not support microblaze little endian mode is wrong.
See http://git.musl-libc.org/cgit/musl/tree/configure
line number 447-448.

Tested with qemu.

---
 toolchain/toolchain-buildroot/Config.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
toolchain/toolchain-buildroot/Config.in +1 -1
index 840668c..7623790 100644
@@ -81,7 +81,7 @@ comment "(e)glibc only available with shared lib support"
 config BR2_TOOLCHAIN_BUILDROOT_MUSL
 	bool "musl (experimental)"
 	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_microblazebe || \
-		BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64
+		BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64
 	select BR2_TOOLCHAIN_USES_MUSL
 	help
 	  This option selects musl as the C library for the
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

Dear Waldemar Brodkorb,

toolchain/toolchain-buildroot/Config.in comment "(e)glibc only available with shared lib support" · line 84

Quoted 3 lines · Waldemar Brodkorb
toolchain/toolchain-buildroot/Config.in +1 -1
 	depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_microblazebe || \
-		BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64
+		BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64

Nope, just revert the patch I made, i.e turn BR2_microblazebe into BR2_microblaze again. We have three options in Buildroot:

BR2_microblazeel, for Microblaze LE BR2_microblazebe, for Microblaze BE BR2_microblaze, when either Microblaze LE or BE is chosen

See arch/Config.in.microblaze.

Thanks,

Thomas

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

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

In reply to Waldemar Brodkorb

Greetings,

What I know is, that the resulting images built by musl toolchain did not work, and readelf says the images are big-endian.

I selected microblaze little endian target and then chose 3 different toolchains and made 3 separate builds. -- musl, buildroot internal, and the old Xilinx. Musl was the only one that did not run.

Note that buildroot did not build the musl toolchain from source, but rather downloaded it from somewhere...

QEMU is nice but does not necessarily prove that a toolchain will work on my spartan6 microblazeel design, which I have been using with builroot, successfully, for some time now.

thank you,

William

Quoted 31 lines · Waldemar Brodkorb

The assumption musl libc does not support microblaze little endian mode is wrong.
See http://git.musl-libc.org/cgit/musl/tree/configure
line number 447-448.

Tested with qemu.

---
 toolchain/toolchain-buildroot/Config.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
toolchain/toolchain-buildroot/Config.in +1 -1
index 840668c..7623790 100644
@@ -81,7 +81,7 @@ comment "(e)glibc only available with shared lib support"
 config BR2_TOOLCHAIN_BUILDROOT_MUSL
        bool "musl (experimental)"
        depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_microblazebe ||
 \
-               BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64
+               BR2_microblaze || BR2_mips || BR2_mipsel || BR2_powerpc ||

BR2_x86_64
select BR2_TOOLCHAIN_USES_MUSL
help
This option selects musl as the C library for the
--
1.7.10.4

Quoted 5 lines

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140531/aea563cd/attachment.html>

#3 lore raw

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

Dear William Welch,

Quoted 6 lines · William Welch

What I know is, that the resulting images built by musl toolchain did not work, and readelf says the images are big-endian.

I selected microblaze little endian target and then chose 3 different toolchains and made 3 separate builds. -- musl, buildroot internal, and the old Xilinx. Musl was the only one that did not run.

You did use the musl external toolchain, right?

Quoted 3 lines

QEMU is nice but does not necessarily prove that a toolchain will work on my spartan6 microblazeel design, which I have been using with builroot, successfully, for some time now.

Absolutely. Do not hesitate to report back to us any issue that you might see on Microblaze. We're definitely interested in growing the user base of Buildroot users on this architecture.

Thanks,

Thomas

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

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

Greetings,

Recall this is for 2014.05-rc3. I just ran through the process again.

All I did was make simple selection choices in menuconfig.

I did not manually enter any specifics about where/how to download the toolchain.

When I asked for an external toolchain, Musl was the only external toolchain listed.

The resulting 'savedefconfig' looked like this (note: there is no mention of musl...)

BR2_microblazeel=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_ENABLE_LOCALE_PURGE=y
BR2_TARGET_OPTIMIZATION="-pipe -mno-xl-soft-mul -mxl-barrel-shift -mcpu=v8.20.a"
BR2_TARGET_GENERIC_GETTY_PORT="ttyUL0" BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600=y
BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_PATCH="board/plus/reader3/linux.patch" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/plus/reader3/rdr3k_defconfig" BR2_LINUX_KERNEL_USE_CUSTOM_DTS=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/plus/reader3/rdr3.dts" BR2_PACKAGE_MTD=y
BR2_TARGET_ROOTFS_INITRAMFS=y

I noticed in the log this toolchain was downloaded:

https://googledrive.com/host/0BwnS5DMB0YQ6bDhPZkpOYVFhbk0/musl-1.0.0/crossx86-microblaze-linux-musl-1.0.0.tar.xz

thank you,

William

Quoted 21 lines · Thomas Petazzoni

Dear William Welch,

Quoted 6 lines · William Welch

What I know is, that the resulting images built by musl toolchain did not work, and readelf says the images are big-endian.

I selected microblaze little endian target and then chose 3 different toolchains and made 3 separate builds. -- musl, buildroot internal, and the old Xilinx. Musl was the only one that did not run.

You did use the musl external toolchain, right?

Quoted 3 lines

QEMU is nice but does not necessarily prove that a toolchain will work on my spartan6 microblazeel design, which I have been using with builroot, successfully, for some time now.

Absolutely. Do not hesitate to report back to us any issue that you might see on Microblaze. We're definitely interested in growing the user base of Buildroot users on this architecture.

Quoted 8 lines

Thanks,

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20140531/e87dda4a/attachment.html>

#5 lore raw

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

Dear William Welch,

Quoted 5 lines · William Welch

I did not manually enter any specifics about where/how to download the toolchain.

When I asked for an external toolchain, Musl was the only external toolchain listed.

Right.

Quoted 8 lines

The resulting 'savedefconfig' looked like this (note: there is no mention of musl...)

BR2_microblazeel=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_ENABLE_LOCALE_PURGE=y BR2_TARGET_OPTIMIZATION="-pipe -mno-xl-soft-mul -mxl-barrel-shift -mcpu=v8.20.a"

There is nothing wrong in what you did. There was a bug in Buildroot, and I already sent a patch to fix it, and the fix is part of the final 2014.05 release.

The problem was that Buildroot was assuming the pre-built Musl toolchain was valid for both Microblaze BE and Microblaze LE, which is not the case. Therefore, in commit
http://git.buildroot.net/buildroot/commit/?id=77ef6a3a12ec1e41317ddfa54842c6a59d75dab8
this problem was fixed. You were in Cc of the patch.

So from now on, if you select Microblaze little endian as the architecture, the pre-built Musl toolchain will not be selectable.

Best regards,

Thomas

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

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

In reply to William Welch

Hi,
William Welch wrote,

Quoted 11 lines

Greetings,

Recall this is for 2014.05-rc3. ?I just ran through the process again.

All I did was make simple selection choices in menuconfig.

I did not manually enter any specifics about where/how to download the toolchain.

When I asked for an external toolchain, Musl was the only external toolchain listed.?

Try the internal buildroot toolchain and musl, this will work for little endian targets. The external toolchain for musl is big endian only and furthermore contains a bug, because musl 1.0 didn't work for microblaze. At least not for qemu-system-microblazeel. Rich Felker fixed the Bug after 1.0 release, after I reported it via #musl on IRC.

best regards
Waldemar

#7 lore raw

PATCH 1/1 reenable microblaze little endian for internal musl toolchain

Dear Waldemar Brodkorb,

Quoted 2 lines · Waldemar Brodkorb

Try the internal buildroot toolchain and musl, this will work for little endian targets.

Unfortunately, due to a misunderstanding from me, in 2014.05, it's not possible to build a Microblaze little endian toolchain with musl in Buildroot. It will be re-enabled for 2014.08, or in a 2014.05.1 release if we do one.

Quoted 5 lines

The external toolchain for musl is big endian
only and furthermore contains a bug, because musl 1.0 didn't work for microblaze. At least not for qemu-system-microblazeel. Rich Felker fixed the Bug after 1.0 release, after I reported it via #musl on IRC.

I'm going to send soon a patch that updates a lot of external toolchains, including the musl ones, and they use a more recent musl version than 1.0.0.

Thanks!

Thomas

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