+2012-06-11  Alan Modra  <amodra@gmail.com>
+
+       PR ld/14215
+       * ldexp.c (fold_name <SIZEOF, ALIGNOF>): Allow forward section
+       references.
+       * emulparams/elf32_x86_64.sh (SEPARATE_GOTPLT): Depend on size of
+       .got.plt.
+       * emulparams/elf32mb_linux.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf32tilegx.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf32tilepro.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf64tilegx.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf_i386.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf_k1om.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf_l1om.sh (SEPARATE_GOTPLT): Likewise.
+       * emulparams/elf_x86_64.sh (SEPARATE_GOTPLT): Likewise.
+
 2012-06-07  Georg-Johann Lay  <avr@gjlay.de>
 
        PR 13697
 
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
 LARGE_SECTIONS=yes
-SEPARATE_GOTPLT=24
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
 IREL_IN_PLT=
 
 if [ "x${host}" = "x${target}" ]; then
 
 GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
-SEPARATE_GOTPLT=12
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"
       
 
 GENERATE_COMBRELOC_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
-SEPARATE_GOTPLT=8
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0"
 # Look for 32 bit target libraries in /lib32, /usr/lib32 etc., first.
 LIBPATH_SUFFIX=32
 OTHER_SECTIONS="
 
 GENERATE_COMBRELOC_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
-SEPARATE_GOTPLT=8
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0"
 OTHER_SECTIONS="
   /* TILEPRO architecture interrupt vector areas */
   .intrpt0 0xfc000000 : { KEEP(*(.intrpt0)) }
 
 GENERATE_COMBRELOC_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
-SEPARATE_GOTPLT=16
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 16 ? 16 : 0"
 OTHER_SECTIONS="
   /* TILE architecture interrupt vector areas */
   .intrpt0 0xfffffffffc000000 : { KEEP(*(.intrpt0)) }
 
 GENERATE_SHLIB_SCRIPT=yes
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
-SEPARATE_GOTPLT=12
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 12 ? 12 : 0"
 IREL_IN_PLT=
 
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
 LARGE_SECTIONS=yes
-SEPARATE_GOTPLT=24
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
 
 if [ "x${host}" = "x${target}" ]; then
   case " $EMULATION_LIBPATH " in
 
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
 LARGE_SECTIONS=yes
-SEPARATE_GOTPLT=24
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
 
 if [ "x${host}" = "x${target}" ]; then
   case " $EMULATION_LIBPATH " in
 
 GENERATE_PIE_SCRIPT=yes
 NO_SMALL_DATA=yes
 LARGE_SECTIONS=yes
-SEPARATE_GOTPLT=24
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 24 ? 24 : 0"
 IREL_IN_PLT=
 
 if [ "x${host}" = "x${target}" ]; then
 
                       tree, tree->name.name);
              new_number (0);
            }
-         else if (os->processed_vma)
+         else if (os->bfd_section != NULL)
            {
              bfd_vma val;
 
              
              new_number (val);
            }
+         else
+           new_number (0);
        }
       break;
 
 
+2012-06-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/14215
+       * ld-i386/i386.exp: Run pr14215.
+       * ld-x86-64/x86-64.exp: Likewise.
+
+       * ld-i386/pr14215.d: New file.
+       * ld-i386/pr14215.s: Likewise.
+       * ld-x86-64/pr14215.d: Likewise.
+       * ld-x86-64/pr14215.s: Likewise.
+
 2012-06-06  Alan Modra  <amodra@gmail.com>
 
        * ld-alpha/tlsbin.rd, * ld-alpha/tlsbinr.rd, * ld-alpha/tlspic.rd,
 
 run_dump_test "compressed1"
 run_dump_test "pr12627"
 run_dump_test "pr13302"
+run_dump_test "pr14215"
 
--- /dev/null
+#name: PR ld/14215
+#as: --32
+#ld: -melf_i386 -shared -z relro
+#readelf: -l --wide
+
+#failif
+#...
+   03     .dynamic .got .data 
+#...
 
--- /dev/null
+       .section .got
+       .space 0x2a8, 4
+       .data
+       .zero 12
 
--- /dev/null
+#name: PR ld/14215
+#as: --64
+#ld: -melf_x86_64 -shared -z relro
+#readelf: -l --wide
+
+#failif
+#...
+   03     .dynamic .got .data 
+#...
 
--- /dev/null
+       .section .got
+       .space 0x2a8, 4
+       .data
+       .zero 24
 
 run_dump_test "pr13947"
 run_dump_test "pr12570a"
 run_dump_test "pr12570b"
+run_dump_test "pr14215"
 
 if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
     return