Go to file
Jörg Krause 9eca4b9f84 package/swupdate: fix build issue with some toolchains
Add patch from upstream to fix build issue with some toolchains.

For some toolchains used in Buildroot (x86_64 and mips64) partial linking using
'ld' directly doesn't work well, as the 'ld' default emulation may not
necessarily be the correct one. Note, that the default emulation depends upon
how the linker was configured at build time. The leads to different kind of
build errors, like:

  * /usr/bin/i686-pc-linux-gnu-ld: Relocatable linking with relocations from
    format elf64-x86-64 (core/swupdate.o) to format elf32-i386 (core/built-in.o)
    is not supported.

  * /usr/bin/mips-linux-gnu-ld: handlers/raw_handler.o: endianness incompatible
    with that of the selected emulation

  * /usr/bin/mips64el-linux-ld: core/swupdate.o: ABI is incompatible with that
    of the selected

Linking with gcc will pass all the appropriate linker flags to the linker.
'-nostdlib' has to be added to ldflags-y to link properly without pulling in GCC
libs during partial linking. Note, for Kbuild ldflags-y is prefered over the
deprecated EXTRA_LDFLAGS.

Build config for x86_64:
  BR2_x86_64=y
  BR2_x86_corei7=y
  BR2_TOOLCHAIN_EXTERNAL=y
  BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209=y

Runtime test:
  $ output/build/swupdate-2015.07/swupdate -v
  Swupdate v2015.07.0

  Licensed under GPLv2. See source distribution for detailed copyright notices.

  Registered handlers:
  	rawfile
	raw

Note, that a previous patch [1] had to be reverted [2] because ld does not take
gcc's constructor functions into account and so none of the handlers have been
registered at runtime.

Fixes:
http://autobuild.buildroot.net/results/de9/de920298075d32f3de83a0cfb7417846eb833425/
http://autobuild.buildroot.net/results/975/975915aa33005806e78260bae385cd4b3e359ca8/
http://autobuild.buildroot.net/results/c54/c54e7a2ea353d95d41a1e966de0dffa7b6ac432e/
http://autobuild.buildroot.net/results/019/0198596ebfed05ab86552b628da2274d55bf42ae/

and many more.

[1] https://patchwork.ozlabs.org/patch/532542/
[2] https://patchwork.ozlabs.org/patch/535408/

Cc: Bjørn Forsman <bjorn.forsman@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Yann E. MORIN <yann.morin.1998@free.fr>
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2015-11-02 15:44:25 +01:00
arch arch/arm: use EABIhf by default with VFP 2015-10-25 19:56:20 +01:00
board configs/mpc8315erdb: bump to linux 4.2.5 2015-10-29 19:56:43 +01:00
boot uboot: fix hash for 2015.10 version 2015-10-28 23:40:17 +01:00
configs configs/mpc8315erdb: bump to linux 4.2.5 2015-10-29 19:56:43 +01:00
docs Revert "manual: Add notes about GitHub and hashes" 2015-10-18 17:59:40 +02:00
fs fs/ext2: add options for extra space and extra inodes 2015-10-31 15:56:56 +01:00
linux linux: Add zImage.epapr target 2015-10-31 19:01:21 +01:00
package package/swupdate: fix build issue with some toolchains 2015-11-02 15:44:25 +01:00
support Makefile: Remove 'quiet' variable 2015-10-29 00:04:05 +01:00
system skeleton: add "operator" group 2015-10-28 23:34:16 +01:00
toolchain toolchain/wrapper: fix potential bug in foreach loop 2015-10-25 23:01:48 +01:00
.defconfig arch: kill avr32 2015-02-14 17:39:50 +01:00
.gitignore update gitignore 2013-05-04 12:41:55 +02:00
CHANGES Update for 2015.08 2015-08-31 23:06:58 +02:00
Config.in ccache: support changing the output directory 2015-10-04 18:22:21 +02:00
Config.in.legacy gst1-plugins-bad: update configure options 2015-10-21 23:36:37 +02:00
COPYING
Makefile Makefile: Remove 'quiet' variable 2015-10-29 00:04:05 +01:00
Makefile.legacy Makefile.legacy: fix recursive invocation with BUILDROOT_DL_DIR and _CONFIG 2014-02-11 08:14:57 +01:00
README README: mention 'make list-defconfigs' 2015-04-04 15:19:43 +02:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.