diff --git a/gcc41-rh184446.patch b/gcc41-rh184446.patch new file mode 100644 index 0000000..d74926c --- /dev/null +++ b/gcc41-rh184446.patch @@ -0,0 +1,44 @@ +for gcc/ChangeLog +from Richard Henderson , Alexandre Oliva + + * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use + secure-plt load sequence to compute the GOT address for -fPIC + -msecure-plt. + +Index: gcc/config/rs6000/rs6000.c +=================================================================== +--- gcc/config/rs6000/rs6000.c.orig 2006-03-09 20:02:13.000000000 -0300 ++++ gcc/config/rs6000/rs6000.c 2006-03-09 20:02:31.000000000 -0300 +@@ -3094,10 +3094,28 @@ rs6000_legitimize_tls_address (rtx addr, + tmp3 = gen_reg_rtx (Pmode); + mem = gen_const_mem (Pmode, tmp1); + +- first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym)); +- emit_move_insn (tmp1, tempLR); +- emit_move_insn (tmp2, mem); +- emit_insn (gen_addsi3 (tmp3, tmp1, tmp2)); ++ if (TARGET_SECURE_PLT) ++ { ++ char buf[30]; ++ rtx l; ++ ++ ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", ++ rs6000_pic_labelno++); ++ l = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (buf)); ++ ++ first = emit_insn (gen_load_toc_v4_PIC_1 (tempLR, l)); ++ emit_move_insn (tmp1, tempLR); ++ emit_insn (gen_load_toc_v4_PIC_3b (tmp2, tmp1, gsym, l)); ++ emit_insn (gen_load_toc_v4_PIC_3c (tmp3, tmp2, gsym, l)); ++ } ++ else ++ { ++ first = emit_insn (gen_load_toc_v4_PIC_1b (tempLR, gsym)); ++ emit_move_insn (tmp1, tempLR); ++ emit_move_insn (tmp2, mem); ++ emit_insn (gen_addsi3 (tmp3, tmp1, tmp2)); ++ } ++ + last = emit_move_insn (got, tmp3); + REG_NOTES (last) = gen_rtx_EXPR_LIST (REG_EQUAL, gsym, + REG_NOTES (last)); diff --git a/gcc41.spec b/gcc41.spec index 37165f5..38c9750 100644 --- a/gcc41.spec +++ b/gcc41.spec @@ -1,6 +1,6 @@ %define DATE 20060304 %define gcc_version 4.1.0 -%define gcc_release 2 +%define gcc_release 3 %define _unpackaged_files_terminate_build 0 %define multilib_64_archs sparc64 ppc64 s390x x86_64 %ifarch %{ix86} x86_64 ia64 @@ -107,6 +107,7 @@ Patch9: gcc41-ppc32-retaddr.patch Patch10: gcc41-x86_64-sse3.patch Patch11: gcc41-mni.patch Patch12: gcc41-cfaval.patch +Patch13: gcc41-rh184446.patch %define _gnu %{nil} %ifarch sparc @@ -398,6 +399,7 @@ which are required to run programs compiled with the GNAT. %patch10 -p0 -b .x86_64-sse3~ %patch11 -p0 -b .mni~ %patch12 -p0 -b .cfaval~ +%patch13 -p0 -b .rh184446~ sed -i -e 's/4\.1\.1/4.1.0/' gcc/BASE-VER gcc/version.c sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c @@ -1415,6 +1417,10 @@ fi %doc rpm.doc/changelogs/libmudflap/ChangeLog* %changelog +* Thu Mar 9 2006 Alexandre Oliva 4.1.0-3 +- make ppc32 TLS PIC code sequences compatible with secure plt (#184446) + (Richard Henderson and myself) + * Sat Mar 4 2006 Jakub Jelinek 4.1.0-2 - update from -gcc-4_1-branch (-r111570:111697) - PRs c++/26291, libgfortran/26136, libgfortran/26423, libgfortran/26464,