550302c0b9
With BR2_RELRO_PARTIAL or BR2_RELRO_FULL, our toolchain wrapper will forcibly add -Wl,-z,relro to any call to the actual compiler. This usually works OK, because gcc will only use those options it needs for the compile step it has to carry: pre-processing, compiling, assembling, or linking, and ignore those options it does not need. Excpt in one case: when -v is passed standalone, with no input file, then gcc will falsely believe it has to do a link stage; $ gcc -Wl,-z,relro -v [...] /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start': (.text+0x24): undefined reference to `main' collect2: error: ld returned 1 exit status Fixing that in our wrapper will not be easy, because we'd have to detect there is no input file. Doing so would probably require we support almost all gcc options to differentiate between the parameter of an option (e.g. -I /some/path) from an actual inpout file. This would not be very robust, and would have a high risk od breaking when we introduce the next gcc version. Since it seems that only rhash is affected, due to its inventive, custom, hand-written configure script, we just patch it to be a bit more robust in the face of a compiler that could not accept -v, and fallback to --version. Fixes: - http://autobuild.buildroot.org/results/8605c16cc28316954ce8b9dcc266974390c5da20 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> [yann.morin.1998@free.fr: - retain "$CC -v" as default, fallback to "$CC --version", in the hope that it stands better chance with upstream - write a commit log to explain the actual root-cause of the build failure ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
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. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches