Add --enable-static-pie variants to x86_64, x32 and i686

Message ID 20171219010956.GA3478@gmail.com
State New, archived
Headers

Commit Message

Lu, Hongjiu Dec. 19, 2017, 1:09 a.m. UTC
  Since the default GCC and binutils versions used by build-many-glibcs.py,
which are GCC 7 branch and binutils 2.29 branch, support static PIE on
x86_64, x32 and i686, this patch adds --enable-static-pie glibc variants
to x86_64, x32 and i686 to get some coverage for static PIE.

Tested with build-many-glibcs.py.

OK for master?

H.J.
--
	* scripts/build-many-glibcs.py (Context.add_all_configs): Add
	--enable-static-pie variants to x86_64, x32 and i686.
---
 scripts/build-many-glibcs.py | 9 +++++++++
 1 file changed, 9 insertions(+)
  

Comments

Joseph Myers Dec. 19, 2017, 2:05 a.m. UTC | #1
On Mon, 18 Dec 2017, H.J. Lu wrote:

> Since the default GCC and binutils versions used by build-many-glibcs.py,
> which are GCC 7 branch and binutils 2.29 branch, support static PIE on
> x86_64, x32 and i686, this patch adds --enable-static-pie glibc variants
> to x86_64, x32 and i686 to get some coverage for static PIE.
> 
> Tested with build-many-glibcs.py.
> 
> OK for master?

OK.
  
Joseph Myers Dec. 19, 2017, 4:55 p.m. UTC | #2
I see

FAIL: glibcs-x86_64-linux-gnu-static-pie check

with both GCC 6 and GCC 7, a linker error building elf/tst-prelink.

This is:

/scratch/jmyers/glibc-bot/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/7.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /scratch/jmyers/glibc-bot/build/glibcs/x86_64-linux-gnu-static-pie/glibc/elf/tst-prelink.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC

(and the same with GCC 6).
  
H.J. Lu Dec. 19, 2017, 4:58 p.m. UTC | #3
On Tue, Dec 19, 2017 at 8:55 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> I see
>
> FAIL: glibcs-x86_64-linux-gnu-static-pie check
>
> with both GCC 6 and GCC 7, a linker error building elf/tst-prelink.
>
> This is:
>
> /scratch/jmyers/glibc-bot/install/compilers/x86_64-linux-gnu/lib/gcc/x86_64-glibc-linux-gnu/7.2.1/../../../../x86_64-glibc-linux-gnu/bin/ld: /scratch/jmyers/glibc-bot/build/glibcs/x86_64-linux-gnu-static-pie/glibc/elf/tst-prelink.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
>
> (and the same with GCC 6).

This is:

https://sourceware.org/bugzilla/show_bug.cgi?id=22630
  

Patch

diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py
index 5453000df0..b317d598d1 100755
--- a/scripts/build-many-glibcs.py
+++ b/scripts/build-many-glibcs.py
@@ -368,6 +368,15 @@  class Context(object):
                                 {'arch': 'i686', 'ccopts': '-m32 -march=i686'}],
                         extra_glibcs=[{'variant': 'disable-multi-arch',
                                        'cfg': ['--disable-multi-arch']},
+                                      {'variant': 'static-pie',
+                                       'cfg': ['--enable-static-pie']},
+                                      {'variant': 'x32-static-pie',
+                                       'ccopts': '-mx32',
+                                       'cfg': ['--enable-static-pie']},
+                                      {'variant': 'static-pie',
+                                       'arch': 'i686',
+                                       'ccopts': '-m32 -march=i686',
+                                       'cfg': ['--enable-static-pie']},
                                       {'variant': 'disable-multi-arch',
                                        'arch': 'i686',
                                        'ccopts': '-m32 -march=i686',