]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
ld: Add tests for PR ld/32690
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Feb 2025 04:19:12 +0000 (12:19 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 18 Feb 2025 04:31:30 +0000 (12:31 +0800)
Without

commit 230a788eb28a64d628e623068c44add2a24aa5d3
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Feb 18 08:54:06 2025 +1030

    PR32690, assertion failure in lang_size_relro_segment

this test triggers the linker error:

.../ld: internal error .../ld/ldlang.c 6618
collect2: error: ld returned 1 exit status

with GCC 10 or above on x86-64.

PR ld/32690
* testsuite/ld-elf/elf.exp: Run PR ld/32690 tests.
* testsuite/ld-elf/pr32690.h: New file.
* testsuite/ld-elf/pr32690a.c: Likewise.
* testsuite/ld-elf/pr32690b.c: Likewise.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
ld/testsuite/ld-elf/elf.exp
ld/testsuite/ld-elf/pr32690.h [new file with mode: 0644]
ld/testsuite/ld-elf/pr32690a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr32690b.c [new file with mode: 0644]

index 914be9043ae631433db7954d75bb49a60951c501..19e9b16c9da4c5290c62321f984257ecc133e621 100644 (file)
@@ -497,6 +497,17 @@ if { [istarget *-*-linux*]
        ]
     }
 
+    run_cc_link_tests [list \
+       [list \
+           "Build pr32690.so" \
+           "-shared" \
+           "-O2 -fPIC" \
+           { pr32690b.c } \
+           {} \
+           "pr32690.so" \
+       ] \
+    ]
+
     run_ld_link_exec_tests [list \
        [list \
            "Run mbind2a" \
@@ -516,6 +527,18 @@ if { [istarget *-*-linux*]
            "pass.out" \
            "-O2 -I../bfd" \
        ] \
+       [list \
+           "Run pr32690" \
+           "-pie -Wl,-z,now" \
+           "" \
+           { pr32690a.c } \
+           "pr32690" \
+           "pass.out" \
+           "-O2 -fPIE" \
+           "C" \
+           {} \
+           "-Wl,-R,tmpdir tmpdir/pr32690.so" \
+       ] \
     ]
 }
 
diff --git a/ld/testsuite/ld-elf/pr32690.h b/ld/testsuite/ld-elf/pr32690.h
new file mode 100644 (file)
index 0000000..dff2d7d
--- /dev/null
@@ -0,0 +1,17 @@
+struct data1
+{
+  char c[0x1000];
+} __attribute__ ((aligned (128)));
+
+struct data2
+{
+  char c[872];
+};
+
+extern const struct data1 d1[];
+extern const struct data2 d2;
+extern const char c1[];
+
+extern const int var0;
+extern const int var1;
+extern const int var2;
diff --git a/ld/testsuite/ld-elf/pr32690a.c b/ld/testsuite/ld-elf/pr32690a.c
new file mode 100644 (file)
index 0000000..e7150d4
--- /dev/null
@@ -0,0 +1,1297 @@
+#include <stdio.h>
+#include <string.h>
+#include "pr32690.h"
+
+static const char * const phdr_types[] =
+{
+  "PT_NULL", "PT_LOAD", "PT_DYNAMIC", "PT_PHDR"
+};
+
+int
+main (int argc, char **argv)
+{
+  unsigned int i = 0, j;
+  i += d1[0].c[0] + c1[0];
+  i += d2.c[0];
+
+  extern void func0 (void);
+  func0 ();
+
+  extern void func1 (void);
+  func1 ();
+
+  extern void func2 (void);
+  func2 ();
+
+  extern void func3 (void);
+  func3 ();
+
+  extern void func4 (void);
+  func4 ();
+
+  extern void func5 (void);
+  func5 ();
+
+  extern void func6 (void);
+  func6 ();
+
+  extern void func7 (void);
+  func7 ();
+
+  extern void func8 (void);
+  func8 ();
+
+  extern void func9 (void);
+  func9 ();
+
+  extern void func10 (void);
+  func10 ();
+
+  extern void func11 (void);
+  func11 ();
+
+  extern void func12 (void);
+  func12 ();
+
+  extern void func13 (void);
+  func13 ();
+
+  extern void func14 (void);
+  func14 ();
+
+  extern void func15 (void);
+  func15 ();
+
+  extern void func16 (void);
+  func16 ();
+
+  extern void func17 (void);
+  func17 ();
+
+  extern void func18 (void);
+  func18 ();
+
+  extern void func19 (void);
+  func19 ();
+
+  extern void func20 (void);
+  func20 ();
+
+  extern void func21 (void);
+  func21 ();
+
+  extern void func22 (void);
+  func22 ();
+
+  extern void func23 (void);
+  func23 ();
+
+  extern void func24 (void);
+  func24 ();
+
+  extern void func25 (void);
+  func25 ();
+
+  extern void func26 (void);
+  func26 ();
+
+  extern void func27 (void);
+  func27 ();
+
+  extern void func28 (void);
+  func28 ();
+
+  extern void func29 (void);
+  func29 ();
+
+  extern void func30 (void);
+  func30 ();
+
+  extern void func31 (void);
+  func31 ();
+
+  extern void func32 (void);
+  func32 ();
+
+  extern void func33 (void);
+  func33 ();
+
+  extern void func34 (void);
+  func34 ();
+
+  extern void func35 (void);
+  func35 ();
+
+  extern void func36 (void);
+  func36 ();
+
+  extern void func37 (void);
+  func37 ();
+
+  extern void func38 (void);
+  func38 ();
+
+  extern void func39 (void);
+  func39 ();
+
+  extern void func40 (void);
+  func40 ();
+
+  extern void func41 (void);
+  func41 ();
+
+  extern void func42 (void);
+  func42 ();
+
+  extern void func43 (void);
+  func43 ();
+
+  extern void func44 (void);
+  func44 ();
+
+  extern void func45 (void);
+  func45 ();
+
+  extern void func46 (void);
+  func46 ();
+
+  extern void func47 (void);
+  func47 ();
+
+  extern void func48 (void);
+  func48 ();
+
+  extern void func49 (void);
+  func49 ();
+
+  extern void func50 (void);
+  func50 ();
+
+  extern void func51 (void);
+  func51 ();
+
+  extern void func52 (void);
+  func52 ();
+
+  extern void func53 (void);
+  func53 ();
+
+  extern void func54 (void);
+  func54 ();
+
+  extern void func55 (void);
+  func55 ();
+
+  extern void func56 (void);
+  func56 ();
+
+  extern void func57 (void);
+  func57 ();
+
+  extern void func58 (void);
+  func58 ();
+
+  extern void func59 (void);
+  func59 ();
+
+  extern void func60 (void);
+  func60 ();
+
+  extern void func61 (void);
+  func61 ();
+
+  extern void func62 (void);
+  func62 ();
+
+  extern void func63 (void);
+  func63 ();
+
+  extern void func64 (void);
+  func64 ();
+
+  extern void func65 (void);
+  func65 ();
+
+  extern void func66 (void);
+  func66 ();
+
+  extern void func67 (void);
+  func67 ();
+
+  extern void func68 (void);
+  func68 ();
+
+  extern void func69 (void);
+  func69 ();
+
+  extern void func70 (void);
+  func70 ();
+
+  extern void func71 (void);
+  func71 ();
+
+  extern void func72 (void);
+  func72 ();
+
+  extern void func73 (void);
+  func73 ();
+
+  extern void func74 (void);
+  func74 ();
+
+  extern void func75 (void);
+  func75 ();
+
+  extern void func76 (void);
+  func76 ();
+
+  extern void func77 (void);
+  func77 ();
+
+  extern void func78 (void);
+  func78 ();
+
+  extern void func79 (void);
+  func79 ();
+
+  extern void func80 (void);
+  func80 ();
+
+  extern void func81 (void);
+  func81 ();
+
+  extern void func82 (void);
+  func82 ();
+
+  extern void func83 (void);
+  func83 ();
+
+  extern void func84 (void);
+  func84 ();
+
+  extern void func85 (void);
+  func85 ();
+
+  extern void func86 (void);
+  func86 ();
+
+  extern void func87 (void);
+  func87 ();
+
+  extern void func88 (void);
+  func88 ();
+
+  extern void func89 (void);
+  func89 ();
+
+  extern void func90 (void);
+  func90 ();
+
+  extern void func91 (void);
+  func91 ();
+
+  extern void func92 (void);
+  func92 ();
+
+  extern void func93 (void);
+  func93 ();
+
+  extern void func94 (void);
+  func94 ();
+
+  extern void func95 (void);
+  func95 ();
+
+  extern void func96 (void);
+  func96 ();
+
+  extern void func97 (void);
+  func97 ();
+
+  extern void func98 (void);
+  func98 ();
+
+  extern void func99 (void);
+  func99 ();
+
+  extern void func100 (void);
+  func100 ();
+
+  extern void func101 (void);
+  func101 ();
+
+  extern void func102 (void);
+  func102 ();
+
+  extern void func103 (void);
+  func103 ();
+
+  extern void func104 (void);
+  func104 ();
+
+  extern void func105 (void);
+  func105 ();
+
+  extern void func106 (void);
+  func106 ();
+
+  extern void func107 (void);
+  func107 ();
+
+  extern void func108 (void);
+  func108 ();
+
+  extern void func109 (void);
+  func109 ();
+
+  extern void func110 (void);
+  func110 ();
+
+  extern void func111 (void);
+  func111 ();
+
+  extern void func112 (void);
+  func112 ();
+
+  extern void func113 (void);
+  func113 ();
+
+  extern void func114 (void);
+  func114 ();
+
+  extern void func115 (void);
+  func115 ();
+
+  extern void func116 (void);
+  func116 ();
+
+  extern void func117 (void);
+  func117 ();
+
+  extern void func118 (void);
+  func118 ();
+
+  extern void func119 (void);
+  func119 ();
+
+  extern void func120 (void);
+  func120 ();
+
+  extern void func121 (void);
+  func121 ();
+
+  extern void func122 (void);
+  func122 ();
+
+  extern void func123 (void);
+  func123 ();
+
+  extern void func124 (void);
+  func124 ();
+
+  extern void func125 (void);
+  func125 ();
+
+  extern void func126 (void);
+  func126 ();
+
+  extern void func127 (void);
+  func127 ();
+
+  extern void func128 (void);
+  func128 ();
+
+  extern void func129 (void);
+  func129 ();
+
+  extern void func130 (void);
+  func130 ();
+
+  extern void func131 (void);
+  func131 ();
+
+  extern void func132 (void);
+  func132 ();
+
+  extern void func133 (void);
+  func133 ();
+
+  extern void func134 (void);
+  func134 ();
+
+  extern void func135 (void);
+  func135 ();
+
+  extern void func136 (void);
+  func136 ();
+
+  extern void func137 (void);
+  func137 ();
+
+  extern void func138 (void);
+  func138 ();
+
+  extern void func139 (void);
+  func139 ();
+
+  extern void func140 (void);
+  func140 ();
+
+  extern void func141 (void);
+  func141 ();
+
+  extern void func142 (void);
+  func142 ();
+
+  extern void func143 (void);
+  func143 ();
+
+  extern void func144 (void);
+  func144 ();
+
+  extern void func145 (void);
+  func145 ();
+
+  extern void func146 (void);
+  func146 ();
+
+  extern void func147 (void);
+  func147 ();
+
+  extern void func148 (void);
+  func148 ();
+
+  extern void func149 (void);
+  func149 ();
+
+  extern void func150 (void);
+  func150 ();
+
+  extern void func151 (void);
+  func151 ();
+
+  extern void func152 (void);
+  func152 ();
+
+  extern void func153 (void);
+  func153 ();
+
+  extern void func154 (void);
+  func154 ();
+
+  extern void func155 (void);
+  func155 ();
+
+  extern void func156 (void);
+  func156 ();
+
+  extern void func157 (void);
+  func157 ();
+
+  extern void func158 (void);
+  func158 ();
+
+  extern void func159 (void);
+  func159 ();
+
+  extern void func160 (void);
+  func160 ();
+
+  extern void func161 (void);
+  func161 ();
+
+  extern void func162 (void);
+  func162 ();
+
+  extern void func163 (void);
+  func163 ();
+
+  extern void func164 (void);
+  func164 ();
+
+  extern void func165 (void);
+  func165 ();
+
+  extern void func166 (void);
+  func166 ();
+
+  extern void func167 (void);
+  func167 ();
+
+  extern void func168 (void);
+  func168 ();
+
+  extern void func169 (void);
+  func169 ();
+
+  extern void func170 (void);
+  func170 ();
+
+  extern void func171 (void);
+  func171 ();
+
+  extern void func172 (void);
+  func172 ();
+
+  extern void func173 (void);
+  func173 ();
+
+  extern void func174 (void);
+  func174 ();
+
+  extern void func175 (void);
+  func175 ();
+
+  extern void func176 (void);
+  func176 ();
+
+  extern void func177 (void);
+  func177 ();
+
+  extern void func178 (void);
+  func178 ();
+
+  extern void func179 (void);
+  func179 ();
+
+  extern void func180 (void);
+  func180 ();
+
+  extern void func181 (void);
+  func181 ();
+
+  extern void func182 (void);
+  func182 ();
+
+  extern void func183 (void);
+  func183 ();
+
+  extern void func184 (void);
+  func184 ();
+
+  extern void func185 (void);
+  func185 ();
+
+  extern void func186 (void);
+  func186 ();
+
+  extern void func187 (void);
+  func187 ();
+
+  extern void func188 (void);
+  func188 ();
+
+  extern void func189 (void);
+  func189 ();
+
+  extern void func190 (void);
+  func190 ();
+
+  extern void func191 (void);
+  func191 ();
+
+  extern void func192 (void);
+  func192 ();
+
+  extern void func193 (void);
+  func193 ();
+
+  extern void func194 (void);
+  func194 ();
+
+  extern void func195 (void);
+  func195 ();
+
+  extern void func196 (void);
+  func196 ();
+
+  extern void func197 (void);
+  func197 ();
+
+  extern void func198 (void);
+  func198 ();
+
+  extern void func199 (void);
+  func199 ();
+
+  extern void func200 (void);
+  func200 ();
+
+  extern void func201 (void);
+  func201 ();
+
+  extern void func202 (void);
+  func202 ();
+
+  extern void func203 (void);
+  func203 ();
+
+  extern void func204 (void);
+  func204 ();
+
+  extern void func205 (void);
+  func205 ();
+
+  extern void func206 (void);
+  func206 ();
+
+  extern void func207 (void);
+  func207 ();
+
+  extern void func208 (void);
+  func208 ();
+
+  extern void func209 (void);
+  func209 ();
+
+  extern void func210 (void);
+  func210 ();
+
+  extern void func211 (void);
+  func211 ();
+
+  extern void func212 (void);
+  func212 ();
+
+  extern void func213 (void);
+  func213 ();
+
+  extern void func214 (void);
+  func214 ();
+
+  extern void func215 (void);
+  func215 ();
+
+  extern void func216 (void);
+  func216 ();
+
+  extern void func217 (void);
+  func217 ();
+
+  extern void func218 (void);
+  func218 ();
+
+  extern void func219 (void);
+  func219 ();
+
+  extern void func220 (void);
+  func220 ();
+
+  extern void func221 (void);
+  func221 ();
+
+  extern void func222 (void);
+  func222 ();
+
+  extern void func223 (void);
+  func223 ();
+
+  extern void func224 (void);
+  func224 ();
+
+  extern void func225 (void);
+  func225 ();
+
+  extern void func226 (void);
+  func226 ();
+
+  extern void func227 (void);
+  func227 ();
+
+  extern void func228 (void);
+  func228 ();
+
+  extern void func229 (void);
+  func229 ();
+
+  extern void func230 (void);
+  func230 ();
+
+  extern void func231 (void);
+  func231 ();
+
+  extern void func232 (void);
+  func232 ();
+
+  extern void func233 (void);
+  func233 ();
+
+  extern void func234 (void);
+  func234 ();
+
+  extern void func235 (void);
+  func235 ();
+
+  extern void func236 (void);
+  func236 ();
+
+  extern void func237 (void);
+  func237 ();
+
+  extern void func238 (void);
+  func238 ();
+
+  extern void func239 (void);
+  func239 ();
+
+  extern void func240 (void);
+  func240 ();
+
+  extern void func241 (void);
+  func241 ();
+
+  extern void func242 (void);
+  func242 ();
+
+  extern void func243 (void);
+  func243 ();
+
+  extern void func244 (void);
+  func244 ();
+
+  extern void func245 (void);
+  func245 ();
+
+  extern void func246 (void);
+  func246 ();
+
+  extern void func247 (void);
+  func247 ();
+
+  extern void func248 (void);
+  func248 ();
+
+  extern void func249 (void);
+  func249 ();
+
+  extern void func250 (void);
+  func250 ();
+
+  extern void func251 (void);
+  func251 ();
+
+  extern void func252 (void);
+  func252 ();
+
+  extern void func253 (void);
+  func253 ();
+
+  extern void func254 (void);
+  func254 ();
+
+  extern void func255 (void);
+  func255 ();
+
+  extern void func256 (void);
+  func256 ();
+
+  extern void func257 (void);
+  func257 ();
+
+  extern void func258 (void);
+  func258 ();
+
+  extern void func259 (void);
+  func259 ();
+
+  extern void func260 (void);
+  func260 ();
+
+  extern void func261 (void);
+  func261 ();
+
+  extern void func262 (void);
+  func262 ();
+
+  extern void func263 (void);
+  func263 ();
+
+  extern void func264 (void);
+  func264 ();
+
+  extern void func265 (void);
+  func265 ();
+
+  extern void func266 (void);
+  func266 ();
+
+  extern void func267 (void);
+  func267 ();
+
+  extern void func268 (void);
+  func268 ();
+
+  extern void func269 (void);
+  func269 ();
+
+  extern void func270 (void);
+  func270 ();
+
+  extern void func271 (void);
+  func271 ();
+
+  extern void func272 (void);
+  func272 ();
+
+  extern void func273 (void);
+  func273 ();
+
+  extern void func274 (void);
+  func274 ();
+
+  extern void func275 (void);
+  func275 ();
+
+  extern void func276 (void);
+  func276 ();
+
+  extern void func277 (void);
+  func277 ();
+
+  extern void func278 (void);
+  func278 ();
+
+  extern void func279 (void);
+  func279 ();
+
+  extern void func280 (void);
+  func280 ();
+
+  extern void func281 (void);
+  func281 ();
+
+  extern void func282 (void);
+  func282 ();
+
+  extern void func283 (void);
+  func283 ();
+
+  extern void func284 (void);
+  func284 ();
+
+  extern void func285 (void);
+  func285 ();
+
+  extern void func286 (void);
+  func286 ();
+
+  extern void func287 (void);
+  func287 ();
+
+  extern void func288 (void);
+  func288 ();
+
+  extern void func289 (void);
+  func289 ();
+
+  extern void func290 (void);
+  func290 ();
+
+  extern void func291 (void);
+  func291 ();
+
+  extern void func292 (void);
+  func292 ();
+
+  extern void func293 (void);
+  func293 ();
+
+  extern void func294 (void);
+  func294 ();
+
+  extern void func295 (void);
+  func295 ();
+
+  extern void func296 (void);
+  func296 ();
+
+  extern void func297 (void);
+  func297 ();
+
+  extern void func298 (void);
+  func298 ();
+
+  extern void func299 (void);
+  func299 ();
+
+  extern void func300 (void);
+  func300 ();
+
+  extern void func301 (void);
+  func301 ();
+
+  extern void func302 (void);
+  func302 ();
+
+  extern void func303 (void);
+  func303 ();
+
+  extern void func304 (void);
+  func304 ();
+
+  extern void func305 (void);
+  func305 ();
+
+  extern void func306 (void);
+  func306 ();
+
+  extern void func307 (void);
+  func307 ();
+
+  extern void func308 (void);
+  func308 ();
+
+  extern void func309 (void);
+  func309 ();
+
+  extern void func310 (void);
+  func310 ();
+
+  extern void func311 (void);
+  func311 ();
+
+  extern void func312 (void);
+  func312 ();
+
+  extern void func313 (void);
+  func313 ();
+
+  extern void func314 (void);
+  func314 ();
+
+  extern void func315 (void);
+  func315 ();
+
+  extern void func316 (void);
+  func316 ();
+
+  extern void func317 (void);
+  func317 ();
+
+  extern void func318 (void);
+  func318 ();
+
+  extern void func319 (void);
+  func319 ();
+
+  extern void func320 (void);
+  func320 ();
+
+  extern void func321 (void);
+  func321 ();
+
+  extern void func322 (void);
+  func322 ();
+
+  extern void func323 (void);
+  func323 ();
+
+  extern void func324 (void);
+  func324 ();
+
+  extern void func325 (void);
+  func325 ();
+
+  extern void func326 (void);
+  func326 ();
+
+  extern void func327 (void);
+  func327 ();
+
+  extern void func328 (void);
+  func328 ();
+
+  extern void func329 (void);
+  func329 ();
+
+  extern void func330 (void);
+  func330 ();
+
+  extern void func331 (void);
+  func331 ();
+
+  extern void func332 (void);
+  func332 ();
+
+  extern void func333 (void);
+  func333 ();
+
+  extern void func334 (void);
+  func334 ();
+
+  extern void func335 (void);
+  func335 ();
+
+  extern void func336 (void);
+  func336 ();
+
+  extern void func337 (void);
+  func337 ();
+
+  extern void func338 (void);
+  func338 ();
+
+  extern void func339 (void);
+  func339 ();
+
+  extern void func340 (void);
+  func340 ();
+
+  extern void func341 (void);
+  func341 ();
+
+  extern void func342 (void);
+  func342 ();
+
+  extern void func343 (void);
+  func343 ();
+
+  extern void func344 (void);
+  func344 ();
+
+  extern void func345 (void);
+  func345 ();
+
+  extern void func346 (void);
+  func346 ();
+
+  extern void func347 (void);
+  func347 ();
+
+  extern void func348 (void);
+  func348 ();
+
+  extern void func349 (void);
+  func349 ();
+
+  extern void func350 (void);
+  func350 ();
+
+  extern void func351 (void);
+  func351 ();
+
+  extern void func352 (void);
+  func352 ();
+
+  extern void func353 (void);
+  func353 ();
+
+  extern void func354 (void);
+  func354 ();
+
+  extern void func355 (void);
+  func355 ();
+
+  extern void func356 (void);
+  func356 ();
+
+  extern void func357 (void);
+  func357 ();
+
+  extern void func358 (void);
+  func358 ();
+
+  extern void func359 (void);
+  func359 ();
+
+  extern void func360 (void);
+  func360 ();
+
+  extern void func361 (void);
+  func361 ();
+
+  extern void func362 (void);
+  func362 ();
+
+  extern void func363 (void);
+  func363 ();
+
+  extern void func364 (void);
+  func364 ();
+
+  extern void func365 (void);
+  func365 ();
+
+  extern void func366 (void);
+  func366 ();
+
+  extern void func367 (void);
+  func367 ();
+
+  extern void func368 (void);
+  func368 ();
+
+  extern void func369 (void);
+  func369 ();
+
+  extern void func370 (void);
+  func370 ();
+
+  extern void func371 (void);
+  func371 ();
+
+  extern void func372 (void);
+  func372 ();
+
+  extern void func373 (void);
+  func373 ();
+
+  extern void func374 (void);
+  func374 ();
+
+  extern void func375 (void);
+  func375 ();
+
+  extern void func376 (void);
+  func376 ();
+
+  extern void func377 (void);
+  func377 ();
+
+  extern void func378 (void);
+  func378 ();
+
+  extern void func379 (void);
+  func379 ();
+
+  extern void func380 (void);
+  func380 ();
+
+  extern void func381 (void);
+  func381 ();
+
+  extern void func382 (void);
+  func382 ();
+
+  extern void func383 (void);
+  func383 ();
+
+  extern void func384 (void);
+  func384 ();
+
+  extern void func385 (void);
+  func385 ();
+
+  extern void func386 (void);
+  func386 ();
+
+  extern void func387 (void);
+  func387 ();
+
+  extern void func388 (void);
+  func388 ();
+
+  extern void func389 (void);
+  func389 ();
+
+  extern void func390 (void);
+  func390 ();
+
+  extern void func391 (void);
+  func391 ();
+
+  extern void func392 (void);
+  func392 ();
+
+  extern void func393 (void);
+  func393 ();
+
+  extern void func394 (void);
+  func394 ();
+
+  extern void func395 (void);
+  func395 ();
+
+  extern void func396 (void);
+  func396 ();
+
+  extern void func397 (void);
+  func397 ();
+
+  extern void func398 (void);
+  func398 ();
+
+  extern void func399 (void);
+  func399 ();
+
+  extern void func400 (void);
+  func400 ();
+
+  extern void func401 (void);
+  func401 ();
+
+  extern void func402 (void);
+  func402 ();
+
+  extern void func403 (void);
+  func403 ();
+
+  extern void func404 (void);
+  func404 ();
+
+  extern void func405 (void);
+  func405 ();
+
+  extern void func406 (void);
+  func406 ();
+
+  extern void func407 (void);
+  func407 ();
+
+  extern void func408 (void);
+  func408 ();
+
+  extern void func409 (void);
+  func409 ();
+
+  extern void func410 (void);
+  func410 ();
+
+  extern void func411 (void);
+  func411 ();
+
+  extern void func412 (void);
+  func412 ();
+
+  extern void func413 (void);
+  func413 ();
+
+  extern void func414 (void);
+  func414 ();
+
+  extern void func415 (void);
+  func415 ();
+
+  extern void func416 (void);
+  func416 ();
+
+  extern void func417 (void);
+  func417 ();
+
+  extern void func418 (void);
+  func418 ();
+
+  extern void func419 (void);
+  func419 ();
+
+  extern void func420 (void);
+  func420 ();
+
+  extern void func421 (void);
+  func421 ();
+
+  i += var0;
+  i += var1;
+  i += var2;
+
+  for (j = 0;
+       j < sizeof phdr_types / sizeof phdr_types[0];
+       j++)
+    if (strcmp (argv[0], phdr_types[j]) == 0)
+      i++;
+
+  if (i == 3)
+    printf ("PASS\n");
+
+  return 0;
+}
diff --git a/ld/testsuite/ld-elf/pr32690b.c b/ld/testsuite/ld-elf/pr32690b.c
new file mode 100644 (file)
index 0000000..5c0dab8
--- /dev/null
@@ -0,0 +1,2119 @@
+#include "pr32690.h"
+
+const struct data1 d1[44];
+const char c1[2748];
+
+const int var0 = 1;
+const int var1 = 1;
+const int var2 = 1;
+const struct data2 d2;
+
+void
+func0 (void)
+{
+}
+
+void
+func1 (void)
+{
+}
+
+void
+func2 (void)
+{
+}
+
+void
+func3 (void)
+{
+}
+
+void
+func4 (void)
+{
+}
+
+void
+func5 (void)
+{
+}
+
+void
+func6 (void)
+{
+}
+
+void
+func7 (void)
+{
+}
+
+void
+func8 (void)
+{
+}
+
+void
+func9 (void)
+{
+}
+
+void
+func10 (void)
+{
+}
+
+void
+func11 (void)
+{
+}
+
+void
+func12 (void)
+{
+}
+
+void
+func13 (void)
+{
+}
+
+void
+func14 (void)
+{
+}
+
+void
+func15 (void)
+{
+}
+
+void
+func16 (void)
+{
+}
+
+void
+func17 (void)
+{
+}
+
+void
+func18 (void)
+{
+}
+
+void
+func19 (void)
+{
+}
+
+void
+func20 (void)
+{
+}
+
+void
+func21 (void)
+{
+}
+
+void
+func22 (void)
+{
+}
+
+void
+func23 (void)
+{
+}
+
+void
+func24 (void)
+{
+}
+
+void
+func25 (void)
+{
+}
+
+void
+func26 (void)
+{
+}
+
+void
+func27 (void)
+{
+}
+
+void
+func28 (void)
+{
+}
+
+void
+func29 (void)
+{
+}
+
+void
+func30 (void)
+{
+}
+
+void
+func31 (void)
+{
+}
+
+void
+func32 (void)
+{
+}
+
+void
+func33 (void)
+{
+}
+
+void
+func34 (void)
+{
+}
+
+void
+func35 (void)
+{
+}
+
+void
+func36 (void)
+{
+}
+
+void
+func37 (void)
+{
+}
+
+void
+func38 (void)
+{
+}
+
+void
+func39 (void)
+{
+}
+
+void
+func40 (void)
+{
+}
+
+void
+func41 (void)
+{
+}
+
+void
+func42 (void)
+{
+}
+
+void
+func43 (void)
+{
+}
+
+void
+func44 (void)
+{
+}
+
+void
+func45 (void)
+{
+}
+
+void
+func46 (void)
+{
+}
+
+void
+func47 (void)
+{
+}
+
+void
+func48 (void)
+{
+}
+
+void
+func49 (void)
+{
+}
+
+void
+func50 (void)
+{
+}
+
+void
+func51 (void)
+{
+}
+
+void
+func52 (void)
+{
+}
+
+void
+func53 (void)
+{
+}
+
+void
+func54 (void)
+{
+}
+
+void
+func55 (void)
+{
+}
+
+void
+func56 (void)
+{
+}
+
+void
+func57 (void)
+{
+}
+
+void
+func58 (void)
+{
+}
+
+void
+func59 (void)
+{
+}
+
+void
+func60 (void)
+{
+}
+
+void
+func61 (void)
+{
+}
+
+void
+func62 (void)
+{
+}
+
+void
+func63 (void)
+{
+}
+
+void
+func64 (void)
+{
+}
+
+void
+func65 (void)
+{
+}
+
+void
+func66 (void)
+{
+}
+
+void
+func67 (void)
+{
+}
+
+void
+func68 (void)
+{
+}
+
+void
+func69 (void)
+{
+}
+
+void
+func70 (void)
+{
+}
+
+void
+func71 (void)
+{
+}
+
+void
+func72 (void)
+{
+}
+
+void
+func73 (void)
+{
+}
+
+void
+func74 (void)
+{
+}
+
+void
+func75 (void)
+{
+}
+
+void
+func76 (void)
+{
+}
+
+void
+func77 (void)
+{
+}
+
+void
+func78 (void)
+{
+}
+
+void
+func79 (void)
+{
+}
+
+void
+func80 (void)
+{
+}
+
+void
+func81 (void)
+{
+}
+
+void
+func82 (void)
+{
+}
+
+void
+func83 (void)
+{
+}
+
+void
+func84 (void)
+{
+}
+
+void
+func85 (void)
+{
+}
+
+void
+func86 (void)
+{
+}
+
+void
+func87 (void)
+{
+}
+
+void
+func88 (void)
+{
+}
+
+void
+func89 (void)
+{
+}
+
+void
+func90 (void)
+{
+}
+
+void
+func91 (void)
+{
+}
+
+void
+func92 (void)
+{
+}
+
+void
+func93 (void)
+{
+}
+
+void
+func94 (void)
+{
+}
+
+void
+func95 (void)
+{
+}
+
+void
+func96 (void)
+{
+}
+
+void
+func97 (void)
+{
+}
+
+void
+func98 (void)
+{
+}
+
+void
+func99 (void)
+{
+}
+
+void
+func100 (void)
+{
+}
+
+void
+func101 (void)
+{
+}
+
+void
+func102 (void)
+{
+}
+
+void
+func103 (void)
+{
+}
+
+void
+func104 (void)
+{
+}
+
+void
+func105 (void)
+{
+}
+
+void
+func106 (void)
+{
+}
+
+void
+func107 (void)
+{
+}
+
+void
+func108 (void)
+{
+}
+
+void
+func109 (void)
+{
+}
+
+void
+func110 (void)
+{
+}
+
+void
+func111 (void)
+{
+}
+
+void
+func112 (void)
+{
+}
+
+void
+func113 (void)
+{
+}
+
+void
+func114 (void)
+{
+}
+
+void
+func115 (void)
+{
+}
+
+void
+func116 (void)
+{
+}
+
+void
+func117 (void)
+{
+}
+
+void
+func118 (void)
+{
+}
+
+void
+func119 (void)
+{
+}
+
+void
+func120 (void)
+{
+}
+
+void
+func121 (void)
+{
+}
+
+void
+func122 (void)
+{
+}
+
+void
+func123 (void)
+{
+}
+
+void
+func124 (void)
+{
+}
+
+void
+func125 (void)
+{
+}
+
+void
+func126 (void)
+{
+}
+
+void
+func127 (void)
+{
+}
+
+void
+func128 (void)
+{
+}
+
+void
+func129 (void)
+{
+}
+
+void
+func130 (void)
+{
+}
+
+void
+func131 (void)
+{
+}
+
+void
+func132 (void)
+{
+}
+
+void
+func133 (void)
+{
+}
+
+void
+func134 (void)
+{
+}
+
+void
+func135 (void)
+{
+}
+
+void
+func136 (void)
+{
+}
+
+void
+func137 (void)
+{
+}
+
+void
+func138 (void)
+{
+}
+
+void
+func139 (void)
+{
+}
+
+void
+func140 (void)
+{
+}
+
+void
+func141 (void)
+{
+}
+
+void
+func142 (void)
+{
+}
+
+void
+func143 (void)
+{
+}
+
+void
+func144 (void)
+{
+}
+
+void
+func145 (void)
+{
+}
+
+void
+func146 (void)
+{
+}
+
+void
+func147 (void)
+{
+}
+
+void
+func148 (void)
+{
+}
+
+void
+func149 (void)
+{
+}
+
+void
+func150 (void)
+{
+}
+
+void
+func151 (void)
+{
+}
+
+void
+func152 (void)
+{
+}
+
+void
+func153 (void)
+{
+}
+
+void
+func154 (void)
+{
+}
+
+void
+func155 (void)
+{
+}
+
+void
+func156 (void)
+{
+}
+
+void
+func157 (void)
+{
+}
+
+void
+func158 (void)
+{
+}
+
+void
+func159 (void)
+{
+}
+
+void
+func160 (void)
+{
+}
+
+void
+func161 (void)
+{
+}
+
+void
+func162 (void)
+{
+}
+
+void
+func163 (void)
+{
+}
+
+void
+func164 (void)
+{
+}
+
+void
+func165 (void)
+{
+}
+
+void
+func166 (void)
+{
+}
+
+void
+func167 (void)
+{
+}
+
+void
+func168 (void)
+{
+}
+
+void
+func169 (void)
+{
+}
+
+void
+func170 (void)
+{
+}
+
+void
+func171 (void)
+{
+}
+
+void
+func172 (void)
+{
+}
+
+void
+func173 (void)
+{
+}
+
+void
+func174 (void)
+{
+}
+
+void
+func175 (void)
+{
+}
+
+void
+func176 (void)
+{
+}
+
+void
+func177 (void)
+{
+}
+
+void
+func178 (void)
+{
+}
+
+void
+func179 (void)
+{
+}
+
+void
+func180 (void)
+{
+}
+
+void
+func181 (void)
+{
+}
+
+void
+func182 (void)
+{
+}
+
+void
+func183 (void)
+{
+}
+
+void
+func184 (void)
+{
+}
+
+void
+func185 (void)
+{
+}
+
+void
+func186 (void)
+{
+}
+
+void
+func187 (void)
+{
+}
+
+void
+func188 (void)
+{
+}
+
+void
+func189 (void)
+{
+}
+
+void
+func190 (void)
+{
+}
+
+void
+func191 (void)
+{
+}
+
+void
+func192 (void)
+{
+}
+
+void
+func193 (void)
+{
+}
+
+void
+func194 (void)
+{
+}
+
+void
+func195 (void)
+{
+}
+
+void
+func196 (void)
+{
+}
+
+void
+func197 (void)
+{
+}
+
+void
+func198 (void)
+{
+}
+
+void
+func199 (void)
+{
+}
+
+void
+func200 (void)
+{
+}
+
+void
+func201 (void)
+{
+}
+
+void
+func202 (void)
+{
+}
+
+void
+func203 (void)
+{
+}
+
+void
+func204 (void)
+{
+}
+
+void
+func205 (void)
+{
+}
+
+void
+func206 (void)
+{
+}
+
+void
+func207 (void)
+{
+}
+
+void
+func208 (void)
+{
+}
+
+void
+func209 (void)
+{
+}
+
+void
+func210 (void)
+{
+}
+
+void
+func211 (void)
+{
+}
+
+void
+func212 (void)
+{
+}
+
+void
+func213 (void)
+{
+}
+
+void
+func214 (void)
+{
+}
+
+void
+func215 (void)
+{
+}
+
+void
+func216 (void)
+{
+}
+
+void
+func217 (void)
+{
+}
+
+void
+func218 (void)
+{
+}
+
+void
+func219 (void)
+{
+}
+
+void
+func220 (void)
+{
+}
+
+void
+func221 (void)
+{
+}
+
+void
+func222 (void)
+{
+}
+
+void
+func223 (void)
+{
+}
+
+void
+func224 (void)
+{
+}
+
+void
+func225 (void)
+{
+}
+
+void
+func226 (void)
+{
+}
+
+void
+func227 (void)
+{
+}
+
+void
+func228 (void)
+{
+}
+
+void
+func229 (void)
+{
+}
+
+void
+func230 (void)
+{
+}
+
+void
+func231 (void)
+{
+}
+
+void
+func232 (void)
+{
+}
+
+void
+func233 (void)
+{
+}
+
+void
+func234 (void)
+{
+}
+
+void
+func235 (void)
+{
+}
+
+void
+func236 (void)
+{
+}
+
+void
+func237 (void)
+{
+}
+
+void
+func238 (void)
+{
+}
+
+void
+func239 (void)
+{
+}
+
+void
+func240 (void)
+{
+}
+
+void
+func241 (void)
+{
+}
+
+void
+func242 (void)
+{
+}
+
+void
+func243 (void)
+{
+}
+
+void
+func244 (void)
+{
+}
+
+void
+func245 (void)
+{
+}
+
+void
+func246 (void)
+{
+}
+
+void
+func247 (void)
+{
+}
+
+void
+func248 (void)
+{
+}
+
+void
+func249 (void)
+{
+}
+
+void
+func250 (void)
+{
+}
+
+void
+func251 (void)
+{
+}
+
+void
+func252 (void)
+{
+}
+
+void
+func253 (void)
+{
+}
+
+void
+func254 (void)
+{
+}
+
+void
+func255 (void)
+{
+}
+
+void
+func256 (void)
+{
+}
+
+void
+func257 (void)
+{
+}
+
+void
+func258 (void)
+{
+}
+
+void
+func259 (void)
+{
+}
+
+void
+func260 (void)
+{
+}
+
+void
+func261 (void)
+{
+}
+
+void
+func262 (void)
+{
+}
+
+void
+func263 (void)
+{
+}
+
+void
+func264 (void)
+{
+}
+
+void
+func265 (void)
+{
+}
+
+void
+func266 (void)
+{
+}
+
+void
+func267 (void)
+{
+}
+
+void
+func268 (void)
+{
+}
+
+void
+func269 (void)
+{
+}
+
+void
+func270 (void)
+{
+}
+
+void
+func271 (void)
+{
+}
+
+void
+func272 (void)
+{
+}
+
+void
+func273 (void)
+{
+}
+
+void
+func274 (void)
+{
+}
+
+void
+func275 (void)
+{
+}
+
+void
+func276 (void)
+{
+}
+
+void
+func277 (void)
+{
+}
+
+void
+func278 (void)
+{
+}
+
+void
+func279 (void)
+{
+}
+
+void
+func280 (void)
+{
+}
+
+void
+func281 (void)
+{
+}
+
+void
+func282 (void)
+{
+}
+
+void
+func283 (void)
+{
+}
+
+void
+func284 (void)
+{
+}
+
+void
+func285 (void)
+{
+}
+
+void
+func286 (void)
+{
+}
+
+void
+func287 (void)
+{
+}
+
+void
+func288 (void)
+{
+}
+
+void
+func289 (void)
+{
+}
+
+void
+func290 (void)
+{
+}
+
+void
+func291 (void)
+{
+}
+
+void
+func292 (void)
+{
+}
+
+void
+func293 (void)
+{
+}
+
+void
+func294 (void)
+{
+}
+
+void
+func295 (void)
+{
+}
+
+void
+func296 (void)
+{
+}
+
+void
+func297 (void)
+{
+}
+
+void
+func298 (void)
+{
+}
+
+void
+func299 (void)
+{
+}
+
+void
+func300 (void)
+{
+}
+
+void
+func301 (void)
+{
+}
+
+void
+func302 (void)
+{
+}
+
+void
+func303 (void)
+{
+}
+
+void
+func304 (void)
+{
+}
+
+void
+func305 (void)
+{
+}
+
+void
+func306 (void)
+{
+}
+
+void
+func307 (void)
+{
+}
+
+void
+func308 (void)
+{
+}
+
+void
+func309 (void)
+{
+}
+
+void
+func310 (void)
+{
+}
+
+void
+func311 (void)
+{
+}
+
+void
+func312 (void)
+{
+}
+
+void
+func313 (void)
+{
+}
+
+void
+func314 (void)
+{
+}
+
+void
+func315 (void)
+{
+}
+
+void
+func316 (void)
+{
+}
+
+void
+func317 (void)
+{
+}
+
+void
+func318 (void)
+{
+}
+
+void
+func319 (void)
+{
+}
+
+void
+func320 (void)
+{
+}
+
+void
+func321 (void)
+{
+}
+
+void
+func322 (void)
+{
+}
+
+void
+func323 (void)
+{
+}
+
+void
+func324 (void)
+{
+}
+
+void
+func325 (void)
+{
+}
+
+void
+func326 (void)
+{
+}
+
+void
+func327 (void)
+{
+}
+
+void
+func328 (void)
+{
+}
+
+void
+func329 (void)
+{
+}
+
+void
+func330 (void)
+{
+}
+
+void
+func331 (void)
+{
+}
+
+void
+func332 (void)
+{
+}
+
+void
+func333 (void)
+{
+}
+
+void
+func334 (void)
+{
+}
+
+void
+func335 (void)
+{
+}
+
+void
+func336 (void)
+{
+}
+
+void
+func337 (void)
+{
+}
+
+void
+func338 (void)
+{
+}
+
+void
+func339 (void)
+{
+}
+
+void
+func340 (void)
+{
+}
+
+void
+func341 (void)
+{
+}
+
+void
+func342 (void)
+{
+}
+
+void
+func343 (void)
+{
+}
+
+void
+func344 (void)
+{
+}
+
+void
+func345 (void)
+{
+}
+
+void
+func346 (void)
+{
+}
+
+void
+func347 (void)
+{
+}
+
+void
+func348 (void)
+{
+}
+
+void
+func349 (void)
+{
+}
+
+void
+func350 (void)
+{
+}
+
+void
+func351 (void)
+{
+}
+
+void
+func352 (void)
+{
+}
+
+void
+func353 (void)
+{
+}
+
+void
+func354 (void)
+{
+}
+
+void
+func355 (void)
+{
+}
+
+void
+func356 (void)
+{
+}
+
+void
+func357 (void)
+{
+}
+
+void
+func358 (void)
+{
+}
+
+void
+func359 (void)
+{
+}
+
+void
+func360 (void)
+{
+}
+
+void
+func361 (void)
+{
+}
+
+void
+func362 (void)
+{
+}
+
+void
+func363 (void)
+{
+}
+
+void
+func364 (void)
+{
+}
+
+void
+func365 (void)
+{
+}
+
+void
+func366 (void)
+{
+}
+
+void
+func367 (void)
+{
+}
+
+void
+func368 (void)
+{
+}
+
+void
+func369 (void)
+{
+}
+
+void
+func370 (void)
+{
+}
+
+void
+func371 (void)
+{
+}
+
+void
+func372 (void)
+{
+}
+
+void
+func373 (void)
+{
+}
+
+void
+func374 (void)
+{
+}
+
+void
+func375 (void)
+{
+}
+
+void
+func376 (void)
+{
+}
+
+void
+func377 (void)
+{
+}
+
+void
+func378 (void)
+{
+}
+
+void
+func379 (void)
+{
+}
+
+void
+func380 (void)
+{
+}
+
+void
+func381 (void)
+{
+}
+
+void
+func382 (void)
+{
+}
+
+void
+func383 (void)
+{
+}
+
+void
+func384 (void)
+{
+}
+
+void
+func385 (void)
+{
+}
+
+void
+func386 (void)
+{
+}
+
+void
+func387 (void)
+{
+}
+
+void
+func388 (void)
+{
+}
+
+void
+func389 (void)
+{
+}
+
+void
+func390 (void)
+{
+}
+
+void
+func391 (void)
+{
+}
+
+void
+func392 (void)
+{
+}
+
+void
+func393 (void)
+{
+}
+
+void
+func394 (void)
+{
+}
+
+void
+func395 (void)
+{
+}
+
+void
+func396 (void)
+{
+}
+
+void
+func397 (void)
+{
+}
+
+void
+func398 (void)
+{
+}
+
+void
+func399 (void)
+{
+}
+
+void
+func400 (void)
+{
+}
+
+void
+func401 (void)
+{
+}
+
+void
+func402 (void)
+{
+}
+
+void
+func403 (void)
+{
+}
+
+void
+func404 (void)
+{
+}
+
+void
+func405 (void)
+{
+}
+
+void
+func406 (void)
+{
+}
+
+void
+func407 (void)
+{
+}
+
+void
+func408 (void)
+{
+}
+
+void
+func409 (void)
+{
+}
+
+void
+func410 (void)
+{
+}
+
+void
+func411 (void)
+{
+}
+
+void
+func412 (void)
+{
+}
+
+void
+func413 (void)
+{
+}
+
+void
+func414 (void)
+{
+}
+
+void
+func415 (void)
+{
+}
+
+void
+func416 (void)
+{
+}
+
+void
+func417 (void)
+{
+}
+
+void
+func418 (void)
+{
+}
+
+void
+func419 (void)
+{
+}
+
+void
+func420 (void)
+{
+}
+
+void
+func421 (void)
+{
+}