| Summary: | Latest master fails to build readline with RELRO FULL | ||
|---|---|---|---|
| Product: | buildroot | Reporter: | Timothy Pearson <tpearson> |
| Component: | Other | Assignee: | unassigned |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | buildroot |
| Priority: | P5 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Host: | Target: | ||
| Build: | |||
Would you mind providing an example defconfig that reproduces this? I'm working on an update to the hardening approach, as there are link time issues with the way the current flags are included. This maybe related to your issue and I'll give it a test. Test build used master 14f5cb7 and http://patchwork.ozlabs.org/project/buildroot/list/?series=65762 with defconfig noted in https://bugs.busybox.net/show_bug.cgi?id=11206. This config included the readline package. This is fixed by the patches from Matt that add hardening awareness in the toolchain wrapper, and which have been merged in master as of: 394bdd11fc1f741c88c89f0e71571d87a29ab627 BR2_FORTIFY*: toolchain wrapper limitation note f10822d151085bcbfecd0ecf2542ac5f5623fd9d toolchain/toolchain-wrapper: add BR2_SSP_* support 7484c1c3b8065d6f2f5a67607e9917ecfea022eb toolchain/toolchain-wrapper: add BR2_RELRO_ |
When RELRO is set to Full, readline fails to build. RELRO Partial has no issues. /home/buildroot/project/buildroot# make >>> readline 7.0 Building PATH="/home/buildroot/project/buildroot/output/host/bin:/home/buildroot/project/buildroot/output/host/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" /usr/bin/make -j16 -C /home/buildroot/project/buildroot/output/build/readline-7.0/ make[1]: Entering directory '/home/buildroot/project/buildroot/output/build/readline-7.0' test -d shlib || mkdir shlib ( cd shlib ; /usr/bin/make -w -j --jobserver-fds=3,4 all ) make[2]: Entering directory '/home/buildroot/project/buildroot/output/build/readline-7.0/shlib' rm -f libreadline.so.7.0 rm -f libhistory.so.7.0 /home/buildroot/project/buildroot/output/host/bin/powerpc64le-buildroot-linux-gnu-gcc -shared -Wl,-soname,libreadline.so.7.0 -pie -Wl,-z,now -Wl,-z,relro -Wl,-rpath,/usr/lib -Wl,-soname,`basename libreadline.so.7.0 .0` -o libreadline.so.7.0 readline.so vi_mode.so funmap.so keymaps.so parens.so search.so rltty.so complete.so bind.so isearch.so display.so signals.so util.so kill.so undo.so macro.so input.so callback.so terminal.so text.so nls.so misc.so history.so histexpand.so histfile.so histsearch.so shell.so mbutil.so tilde.so colors.so parse-colors.so xmalloc.so xfree.so compat.so -lncurses /home/buildroot/project/buildroot/output/host/bin/powerpc64le-buildroot-linux-gnu-gcc -shared -Wl,-soname,libhistory.so.7.0 -pie -Wl,-z,now -Wl,-z,relro -Wl,-rpath,/usr/lib -Wl,-soname,`basename libhistory.so.7.0 .0` -o libhistory.so.7.0 history.so histexpand.so histfile.so histsearch.so shell.so mbutil.so xmalloc.so xfree.so -lncurses /home/buildroot/project/buildroot/output/host/lib/gcc/powerpc64le-buildroot-linux-gnu/8.2.0/../../../../powerpc64le-buildroot-linux-gnu/bin/ld: /home/buildroot/project/buildroot/output/host/powerpc64le-buildroot-linux-gnu/sysroot/usr/lib/../lib64/Scrt1.o:(.data.rel.ro.local+0x8): undefined reference to `main' collect2: error: ld returned 1 exit status Makefile:180: recipe for target 'libhistory.so.7.0' failed make[2]: *** [libhistory.so.7.0] Error 1 make[2]: *** Waiting for unfinished jobs.... /home/buildroot/project/buildroot/output/host/lib/gcc/powerpc64le-buildroot-linux-gnu/8.2.0/../../../../powerpc64le-buildroot-linux-gnu/bin/ld: /home/buildroot/project/buildroot/output/host/powerpc64le-buildroot-linux-gnu/sysroot/usr/lib/../lib64/Scrt1.o:(.data.rel.ro.local+0x8): undefined reference to `main' collect2: error: ld returned 1 exit status Makefile:176: recipe for target 'libreadline.so.7.0' failed make[2]: *** [libreadline.so.7.0] Error 1 make[2]: Leaving directory '/home/buildroot/project/buildroot/output/build/readline-7.0/shlib' Makefile:209: recipe for target 'shared' failed make[1]: *** [shared] Error 2 make[1]: Leaving directory '/home/buildroot/project/buildroot/output/build/readline-7.0' package/pkg-generic.mk:229: recipe for target '/home/buildroot/project/buildroot/output/build/readline-7.0/.stamp_built' failed make: *** [/home/buildroot/project/buildroot/output/build/readline-7.0/.stamp_built] Error 2