1# Copyright (C) 1993-2014 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program; if not, write to the Free Software 15# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 16 17# Please email any bugs, comments, and/or additions to this file to: 18# dejagnu@gnu.org 19 20# Written by the Center for Software Science at the University of Utah 21# and by Cygnus Support. 22 23proc do_ble_relocation_test {} { 24 set testname "blebug.s: Test for proper relocation for BLE (part 2)" 25 set x 0 26 27 if [gas_test_old "blebug.s" "" "Proper relocation for BLE (part 1)"] then { 28 objdump_start_no_subdir "a.out" "-r" 29 30 if {[istarget hppa*64*-*-*] 31 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 32 # At one time both versions of the assembler would incorrectly use 33 # a PC-relative relocation for a BLE instruction. 34 while 1 { 35 expect { 36 -re "^0+\[^\n\]*DIR21L\[^\n\]*\n" { set x 1 } 37 -re "^0+4\[^\n\]*DIR17R\[^\n\]*\n" { set x 1 } 38 -re "\[^\n\]*\n" { } 39 timeout { perror "timeout\n"; break } 40 eof { break } 41 } 42 } 43 } else { 44 # At one time both versions of the assembler would incorrectly use 45 # a PC-relative relocation for a BLE instruction. 46 while 1 { 47 expect { 48 -re "^0+4\[^\n\]*ABS_CALL\[^\n\]*\n" { set x 1 } 49 -re "\[^\n\]*\n" { } 50 timeout { perror "timeout\n"; break } 51 eof { break } 52 } 53 } 54 } 55 } 56 57 # This was intended to do any cleanup necessary. It kinda looks like it 58 # isn't needed, but just in case, please keep it in for now. 59 objdump_finish 60 61 # Did we find what we were looking for? If not, flunk it. 62 if [expr $x==1] then { pass $testname } else { fail $testname } 63} 64 65proc do_relocation_reduction_tests {} { 66 set testname "reduce.s: Test relocation reductions (part 2)" 67 set x 0 68 69 if {[istarget hppa*64*-*-*] 70 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 71 return 72 } 73 74 if [gas_test_old "reduce.s" "" "Relocation reductions (part1)"] then { 75 objdump_start_no_subdir "a.out" "-r" 76 77 # Check to make sure relocations involving procedure labels 78 # are not reduced to a relocation involving some other symbol. 79 # Doing so makes generating parameter relocation stubs impossible. 80 while 1 { 81 expect { 82 -re "^0+4\[^\n\]*PLABEL\[^\n\]*foo\[^\n\]*\n" 83 { set x [expr $x+1] } 84 -re "^0+14\[^\n\]*PCREL\[^\n\]*foo\[^\n\]*\n" 85 { set x [expr $x+1] } 86 -re "\[^\n\]*\n" { } 87 timeout { perror "timeout\n"; break } 88 eof { break } 89 } 90 } 91 } 92 93 # This was intended to do any cleanup necessary. It kinda looks like it 94 # isn't needed, but just in case, please keep it in for now. 95 objdump_finish 96 97 # Did we find what we were looking for? If not, flunk it. 98 if [expr $x==2] then { pass $testname } else { fail $testname } 99 100 set testname "reduce2.s: More relocation reduction tests (part 2)" 101 set x 0 102 103 if [gas_test_old "reduce2.s" "" "More relocation reductions (part1)"] then { 104 objdump_start_no_subdir "a.out" "-r" 105 106 # Check to make sure DLT relative relocs are not reduced to sym+addend 107 # Doing so doesn't work as one might expect 108 while 1 { 109 expect { 110 -re "^0+4\[^\n\]*DLT\[^\n\]*L.C0000\[^\n\]*\n" 111 { set x [expr $x+1] } 112 -re "^0+1c\[^\n\]*DLT\[^\n\]*L.C0000\[^\n\]*\n" 113 { set x [expr $x+1] } 114 -re "^0+30\[^\n\]*DLT\[^\n\]*L.C0001\[^\n\]*\n" 115 { set x [expr $x+1] } 116 -re "^0+48\[^\n\]*DLT\[^\n\]*L.C0001\[^\n\]*\n" 117 { set x [expr $x+1] } 118 -re "\[^\n\]*\n" { } 119 timeout { perror "timeout\n"; break } 120 eof { break } 121 } 122 } 123 } 124 125 # This was intended to do any cleanup necessary. It kinda looks like it 126 # isn't needed, but just in case, please keep it in for now. 127 objdump_finish 128 129 # Did we find what we were looking for? If not, flunk it. 130 if [expr $x==2] then { pass $testname } else { fail $testname } 131 132 set testname "reduce3.s: Test even more relocation reductions (part 2)" 133 set x 0 134 135 if [gas_test_old "reduce3.s" "" "Even more relocation reductions (part1)"] then { 136 objdump_start_no_subdir "a.out" "-r" 137 138 # Check to make sure relocations involving procedure labels 139 # are not reduced to a relocation involving some other symbol. 140 # Doing so makes generating parameter relocation stubs impossible. 141 while 1 { 142 expect { 143 -re "^0+c\[^\n\]*yabba\[^\n\+\]*\n" 144 { set x [expr $x+1] } 145 -re "^0+c\[^\n\]*yabba\+\[^\n\]*\n" 146 { set x 0; break } 147 -re "^0+10\[^\n\]*yabba\[^\n\+\]*\n" 148 { set x [expr $x+1] } 149 -re "^0+10\[^\n\]*yabba\+\[^\n\]*\n" 150 { set x 0; break } 151 -re "\[^\n\]*\n" { } 152 timeout { perror "timeout\n"; break } 153 eof { break } 154 } 155 } 156 } 157 158 # This was intended to do any cleanup necessary. It kinda looks like it 159 # isn't needed, but just in case, please keep it in for now. 160 objdump_finish 161 162 # Did we find what we were looking for? If not, flunk it. 163 if [expr $x==2] then { pass $testname } else { fail $testname } 164} 165 166proc do_ble_mode_selector_test {} { 167 set testname "blebug2.s: blebug2" 168 set x 0 169 170 gas_start "blebug2.s" "-al" 171 172 # GAS uses too many bits on the BLE instruction. 173 while 1 { 174 expect { 175 -re "^ +\[0-9\]+ 0000 20202801\[^\n\]*\n" { set x [expr $x+1] } 176 -re "^ +\[0-9\]+ 0004 E420E008\[^\n\]*\n" { set x [expr $x+1] } 177 -re "\[^\n\]*\n" { } 178 timeout { perror "timeout\n"; break } 179 eof { break } 180 } 181 } 182 183 # This was intended to do any cleanup necessary. It kinda looks like it 184 # isn't needed, but just in case, please keep it in for now. 185 gas_finish 186 187 # Did we find what we were looking for? If not, flunk it. 188 if [expr $x==2] then { pass $testname } else { fail $testname } 189} 190 191proc do_ble_relocation_test {} { 192 set testname "blebug3.s: blebug3" 193 set x 0 194 195 gas_start "blebug3.s" "-al" 196 197 while 1 { 198 expect { 199 -re "^ +\[0-9\]+ 0000 E4002000\[^\n\]*\n" { set x [expr $x+1] } 200 -re "\[^\n\]*\n" { } 201 timeout { perror "timeout\n"; break } 202 eof { break } 203 } 204 } 205 206 # This was intended to do any cleanup necessary. It kinda looks like it 207 # isn't needed, but just in case, please keep it in for now. 208 gas_finish 209 210 # Did we find what we were looking for? If not, flunk it. 211 if [expr $x==1] then { pass $testname } else { fail $testname } 212} 213 214proc do_plabel_relocation_test {} { 215 set testname "plabelbug.s: Old gas-1.36 plabel bug (part 2)" 216 set x 0 217 218 if [gas_test_old "plabelbug.s" "" "Old gas-1.36 plabel bug (part 1)"] { 219 objdump_start_no_subdir "a.out" "-r" 220 221 # Check that we make PLABEL relocation entries when they're needed. 222 while 1 { 223 expect { 224 -re "^0+\[^\n\]*PLABEL\[^\n\]*\n" 225 { set x [expr $x+1] } 226 -re "^0+4\[^\n\]*PLABEL\[^\n\]*\n" 227 { set x [expr $x+1] } 228 -re "\[^\n\]*\n" { } 229 timeout { perror "timeout\n"; break } 230 eof { break } 231 } 232 } 233 234 # This was intended to do any cleanup necessary. It kinda looks like it 235 # isn't needed, but just in case, please keep it in for now. 236 objdump_finish 237 238 # Did we find what we were looking for? If not, flunk it. 239 if [expr $x==2] then { pass $testname } else { fail $testname } 240 } 241} 242 243proc do_selector_scope_test {} { 244 set testname "selectorbug.s: Test scope of field selector" 245 set x 0 246 247 if [istarget hppa*64*-*-*] then { 248 return 249 } 250 251 if [gas_test_old "selectorbug.s" "" "Test scope of field selector (part 1)"] { 252 objdump_start_no_subdir "a.out" "-r" 253 254 # Check to make sure the relocation entry after the plabel is correct. 255 # If an old field selector was incorrectly "carried" over, then 256 # this test will fail. 257 if {[istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 258 while 1 { 259 expect { 260 -re "^0+14\[^\n\]*DIR32\[^\n\]*\n" 261 { set x 1 } 262 -re "^0+14\[^\n\]*PLABEL\[^\n\]*foo\[^\n\]*\n" 263 { set x 0 } 264 -re "\[^\n\]*\n" { } 265 timeout { perror "timeout\n"; break } 266 eof { break } 267 } 268 } 269 } else { 270 while 1 { 271 expect { 272 -re "^0+14\[^\n\]*DATA_ONE\[^\n\]*\n" 273 { set x 1 } 274 -re "^0+14\[^\n\]*PLABEL\[^\n\]*foo\[^\n\]*\n" 275 { set x 0 } 276 -re "\[^\n\]*\n" { } 277 timeout { perror "timeout\n"; break } 278 eof { break } 279 } 280 } 281 } 282 283 # This was intended to do any cleanup necessary. It kinda looks like it 284 # isn't needed, but just in case, please keep it in for now. 285 objdump_finish 286 287 # Did we find what we were looking for? If not, flunk it. 288 if [expr $x==1] then { pass $testname } else { fail $testname } 289 } 290} 291 292proc do_local_label_as_operand_test {} { 293 set testname "labelopbug.s: Test local label as operand (non-branching)" 294 set x 0 295 296 if [gas_test_old "labelopbug.s" "" "Local label as operand (part 1)"] { 297 objdump_start_no_subdir "a.out" "-r" 298 299 # Check to make sure we handle difference of local labels as an operand 300 # to a non-branching instruction correctly. On hppa elf targets, the 301 # R_PARISC_DIR21 and R_PARISC_DIR14R relocations are done with LR and 302 # RR selectors, respectively. As a result, we can't reduce these to 303 # section offsets without risking incorrect rounding. So, we just 304 # check to see if the label hasn't been reduced. 305 if {[istarget hppa*64*-*-*] 306 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 307 while 1 { 308 expect { 309 -re "^0+2c\[^\n\]*L.0002\[^\n\]*\n" 310 { set x [expr $x+1] } 311 -re "^0+30\[^\n\]*L.0002\[^\n\]*\n" 312 { set x [expr $x+1] } 313 -re "\[^\n\]*\n" { } 314 timeout { perror "timeout\n"; break } 315 eof { break } 316 } 317 } 318 } else { 319 while 1 { 320 expect { 321 -re "^0+2c\[^\n\]*0x0+24\[^\n\]*\n" 322 { set x [expr $x+1] } 323 -re "^0+30\[^\n\]*0x0+24\[^\n\]*\n" 324 { set x [expr $x+1] } 325 -re "\[^\n\]*\n" { } 326 timeout { perror "timeout\n"; break } 327 eof { break } 328 } 329 } 330 } 331 332 # This was intended to do any cleanup necessary. It kinda looks like it 333 # isn't needed, but just in case, please keep it in for now. 334 objdump_finish 335 336 # Did we find what we were looking for? If not, flunk it. 337 if [expr $x==2] then { pass $testname } else { fail $testname } 338 } 339} 340 341proc do_exit_relocation_test {} { 342 set testname "exitbug.s: Test for bogus R_EXIT relocation (part 2)" 343 set x 0 344 345 # Elf (osf) does not use ENTRY/EXIT relocations. 346 # I guess we could look at the unwind subspaces it builds... 347 # Until then, make sure it still assembles. 348 if {[istarget hppa*64*-*-*] 349 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 350 gas_test_old "exitbug.s" "" "Test for bogus R_EXIT relocation (part 1)" 351 return 352 } 353 354 if [gas_test_old "exitbug.s" "" "Test for bogus R_EXIT relocation (part 1)"] { 355 objdump_start_no_subdir "a.out" "-r" 356 357 # Note that a match here is really a FAILURE! 358 while 1 { 359 expect { 360 -re "^0+\[^\n\]*R_EXIT\[^\n\]*\n" 361 { set x [expr $x+1] } 362 -re "\[^\n\]*\n" { } 363 timeout { perror "timeout\n"; break } 364 eof { break } 365 } 366 } 367 368 # This was intended to do any cleanup necessary. It kinda looks like it 369 # isn't needed, but just in case, please keep it in for now. 370 objdump_finish 371 372 # Did we find what we were looking for? If not, flunk it. 373 if [expr $x==0] then { pass $testname } else { fail $testname } 374 } 375} 376 377proc do_cross_space_fixup_test_1 {} { 378 set testname "fixupbug.s: Test cross space jump/call fixup bug (part 2)" 379 set x 0 380 381 # ELF doesn't really handle extra sections too well... 382 if {[istarget hppa*64*-*-*] 383 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 384 return 385 } 386 387 if [gas_test_old "fixupbug.s" "" "Test cross space jump/call fixup bug (part 1)"] { 388 objdump_start_no_subdir "a.out" "-r" 389 390 # Make sure GAS generated a fixup/relocation for the cross-space 391 # branch/call 392 while 1 { 393 expect { 394 -re "^0+\[^\n\]*PCREL_CALL\[^\n\]*\n" 395 { set x [expr $x+1] } 396 -re "\[^\n\]*\n" { } 397 timeout { perror "timeout\n"; break } 398 eof { break } 399 } 400 } 401 402 # This was intended to do any cleanup necessary. It kinda looks like it 403 # isn't needed, but just in case, please keep it in for now. 404 objdump_finish 405 406 # Did we find what we were looking for? If not, flunk it. 407 if [expr $x==1] then { pass $testname } else { fail $testname } 408 } 409} 410 411proc do_cross_space_fixup_test_2 {} { 412 set testname "fixupbug.s: Test cross space jump/call fixup bug (part 3)" 413 set x 0 414 415 # ELF doesn't really handle extra sections too well... 416 if {[istarget hppa*64*-*-*] 417 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 418 return 419 } 420 421 gas_start "fixupbug.s" "-al" 422 423 while 1 { 424 expect { 425 -re "^ +\[0-9\]+ 0000 E8000002\[^\n\]*\n" { set x [expr $x+1] } 426 -re "\[^\n\]*\n" { } 427 timeout { perror "timeout\n"; break } 428 eof { break } 429 } 430 } 431 432 # This was intended to do any cleanup necessary. It kinda looks like it 433 # isn't needed, but just in case, please keep it in for now. 434 gas_finish 435 436 # Did we find what we were looking for? If not, flunk it. 437 if [expr $x==1] then { pass $testname } else { fail $testname } 438} 439 440proc do_round_mode_test {} { 441 set testname "roundmode.s: Test switching of rounding modes (part 2)" 442 set x 0 443 444 if [gas_test_old "roundmode.s" "" "Test switch of rounding modes(part 1)"] { 445 objdump_start_no_subdir "a.out" "-r" 446 447 # Make sure GAS generated correct relocations to switch rounding modes. 448 # Also make sure (for SOM) that redundant rounding mode relocations 449 # were eliminated. 450 if {[istarget hppa*64*-*-*] 451 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 452 while 1 { 453 expect { 454 -re "^0+\[^\n\]*DIR21L\[^\n\]*\n" 455 { set x [expr $x+1] } 456 -re "^0+4\[^\n\]*DIR14R\[^\n\]*\n" 457 { set x [expr $x+1] } 458 -re "^0+8\[^\n\]*DIR21L\[^\n\]*\n" 459 { set x [expr $x+1] } 460 -re "^0+c\[^\n\]*DIR14R\[^\n\]*\n" 461 { set x [expr $x+1] } 462 -re "^0+10\[^\n\]*DIR21L\[^\n\]*\n" 463 { set x [expr $x+1] } 464 -re "^0+14\[^\n\]*DIR14R\[^\n\]*\n" 465 { set x [expr $x+1] } 466 -re "^0+18\[^\n\]*DIR21L\[^\n\]*\n" 467 { set x [expr $x+1] } 468 -re "^0+1c\[^\n\]*DIR14R\[^\n\]*\n" 469 { set x [expr $x+1] } 470 -re "\[^\n\]*\n" { } 471 timeout { perror "timeout\n"; break } 472 eof { break } 473 } 474 } 475 } else { 476 while 1 { 477 expect { 478 -re "^0+\[^\n\]*R_R_MODE\[^\n\]*\n" 479 { set x [expr $x+1] } 480 -re "^0+4\[^\n\]*R_R_MODE\[^\n\]*\n" 481 { fail $testname } 482 -re "^0+8\[^\n\]*R_N_MODE\[^\n\]*\n" 483 { set x [expr $x+1] } 484 -re "^0+c\[^\n\]*R_N_MODE\[^\n\]*\n" 485 { fail $testname } 486 -re "^0+10\[^\n\]*R_R_MODE\[^\n\]*\n" 487 { set x [expr $x+1] } 488 -re "^0+14\[^\n\]*R_R_MODE\[^\n\]*\n" 489 { fail $testname } 490 -re "^0+1c\[^\n\]*R_R_MODE\[^\n\]*\n" 491 { fail $testname } 492 -re "\[^\n\]*\n" { } 493 timeout { perror "timeout\n"; break } 494 eof { break } 495 } 496 } 497 } 498 499 # This was intended to do any cleanup necessary. It kinda looks like it 500 # isn't needed, but just in case, please keep it in for now. 501 objdump_finish 502 503 # Did we find what we were looking for? If not, flunk it. 504 if {[istarget hppa*64*-*-*] 505 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 506 if [expr $x==8] then { pass $testname } else { fail $testname } 507 } else { 508 if [expr $x==3] then { pass $testname } else { fail $testname } 509 } 510 } 511} 512 513proc do_function_reloc_bug {} { 514 set testname "funcrelocbug.s: Test for reloc bug in non-plabel function reference (part 2)" 515 set x 0 516 517 if [gas_test_old "funcrelocbug.s" "" "Test for reloc bug in non-plabel function reference (part 1)"] { 518 objdump_start_no_subdir "a.out" "-r" 519 520 # Make sure GAS generated a correct relocation for the reference. 521 # branch/call 522 while 1 { 523 expect { 524 -re "^0+cc\[^\n\]*f2___4\[^\n+\]*\n" 525 { set x [expr $x+1] } 526 -re "^0+d0\[^\n\]*f2___4\[^\n+\]*\n" 527 { set x [expr $x+1] } 528 -re "\[^\n\]*\n" { } 529 timeout { perror "timeout\n"; break } 530 eof { break } 531 } 532 } 533 534 # This was intended to do any cleanup necessary. It kinda looks like it 535 # isn't needed, but just in case, please keep it in for now. 536 objdump_finish 537 538 # Did we find what we were looking for? If not, flunk it. 539 if [expr $x==2] then { pass $testname } else { fail $testname } 540 541 set testname "funcrelocbug.s: Test for reloc bug in non-plabel function reference (part3)" 542 set x 0 543 544 objdump_start_no_subdir "a.out" "--prefix-addresses -d" 545 # Make sure we didn't put anything in the instruction itself! 546 while 1 { 547 expect { 548 -re "^0+cc\[^\n\]*ldil L%0,r20\[^\n\]*\n" 549 { set x [expr $x+1] } 550 -re "^0+d0\[^\n\]*ldo 0\[\(\]+r20\[\)\]+,r19\[^\n\]*\n" 551 { set x [expr $x+1] } 552 -re "\[^\n\]*\n" { } 553 timeout { perror "timeout\n"; break } 554 eof { break } 555 } 556 } 557 558 # This was intended to do any cleanup necessary. It kinda looks like it 559 # isn't needed, but just in case, please keep it in for now. 560 objdump_finish 561 562 # Did we find what we were looking for? If not, flunk it. 563 if [expr $x==2] then { pass $testname } else { fail $testname } 564 } 565 566} 567 568proc do_r_no_reloc {} { 569 set testname "r_no_reloc.s: Test for reloc bug in 4-byte R_NO_RELCOATION fixups (part 2)" 570 set x 0 571 572 if [gas_test_old "r_no_reloc.s" "" "Test for reloc bug in 4-byte R_NO_RELOCATION fixups (part 1)"] { 573 objdump_start_no_subdir "a.out" "-r" 574 575 # Make sure GAS generated a correct relocation for the reference. 576 while 1 { 577 expect { 578 -re "^0+c0004\[^\n\]*PLABEL\[^\n]*g\[^\n\]*\n" 579 { set x [expr $x+1] } 580 -re "\[^\n\]*\n" { } 581 timeout { perror "timeout\n"; break } 582 eof { break } 583 } 584 } 585 586 # This was intended to do any cleanup necessary. It kinda looks like it 587 # isn't needed, but just in case, please keep it in for now. 588 objdump_finish 589 590 # Did we find what we were looking for? If not, flunk it. 591 if [expr $x==1] then { pass $testname } else { fail $testname } 592 593 } 594} 595 596proc do_pic_relocation_test {} { 597 set testname "picreloc.s: Test for proper PIC relocation (part 2)" 598 set x 0 599 600 # ELF doesn't really handle extra sections too well... 601 if {[istarget hppa*64*-*-*] 602 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 603 return 604 } 605 606 gas_start "picreloc.s" "-al" 607 608 while 1 { 609 expect { 610 -re "^ +\[0-9\]+ 0000 00000004\[^\n\]*\n" { set x [expr $x+1] } 611 -re "\[^\n\]*\n" { } 612 timeout { perror "timeout\n"; break } 613 eof { break } 614 } 615 } 616 617 # This was intended to do any cleanup necessary. It kinda looks like it 618 # isn't needed, but just in case, please keep it in for now. 619 gas_finish 620 621 # Did we find what we were looking for? If not, flunk it. 622 if [expr $x==1] then { pass $testname } else { fail $testname } 623} 624 625proc do_apply_test {} { 626 set testname "applybug.s: Test for proper fixup application (part 2)" 627 set x 0 628 629 # ELF doesn't really handle extra sections too well... 630 if {[istarget hppa*64*-*-*] 631 || [istarget hppa*-*-*elf*] || [istarget hppa*-*-linux*]} then { 632 return 633 } 634 635 gas_start "applybug.s" "-al" 636 637 while 1 { 638 expect { 639 -re "^ +\[0-9\]+ 0000 00000044\[^\n\]*\n" { set x [expr $x+1] } 640 -re "^ +\[0-9\]+ 0004 00000058\[^\n\]*\n" { set x [expr $x+1] } 641 -re "^ +\[0-9\]+ 0008 0000006C\[^\n\]*\n" { set x [expr $x+1] } 642 -re "\[^\n\]*\n" { } 643 timeout { perror "timeout\n"; break } 644 eof { break } 645 } 646 } 647 648 # This was intended to do any cleanup necessary. It kinda looks like it 649 # isn't needed, but just in case, please keep it in for now. 650 gas_finish 651 652 # Did we find what we were looking for? If not, flunk it. 653 if [expr $x==3] then { pass $testname } else { fail $testname } 654} 655 656if [istarget hppa*-*-*] then { 657 # Make sure we put the right relocation entry on a BLE instruction. 658 do_ble_relocation_test 659 660 # Make sure relocation reductions are not too agressive about 661 # adjusting relocations against some symbols. 662 do_relocation_reduction_tests 663 664 # Check that mode selectors on a ble instruction actually work. 665 do_ble_mode_selector_test 666 667 # Check that we take the -8 adjustment into account when zeroing 668 # out the displacement field in a ble instruction with a reloc 669 do_ble_relocation_test 670 671 # 1.36 simply didn't generate all the plabels it should have. Make 672 # sure gas-2 does. 673 do_plabel_relocation_test 674 675 # Make sure a field selector only effects the current instruction 676 # or assembler directive. 677 do_selector_scope_test 678 679 # This should really generate a relocation. It would make life much 680 # easier on the optimizing linker. Until then just make sure the 681 # difference is computed correctly. 682 do_local_label_as_operand_test 683 684 # GAS2 incorrectly generated R_EXIT relocations when .exit directives 685 # were not in the source code. 686 do_exit_relocation_test 687 688 # GAS2 incorrectly thought it could apply a fixup for a pc-relative 689 # branch/call which crossed different subspaces. 690 # Also check that the assembled instruction is correct 691 do_cross_space_fixup_test_1 692 do_cross_space_fixup_test_2 693 694 # Make sure we switch rounding modes correctly 695 do_round_mode_test 696 697 # Test for a bug found when a function was used in a non-branching 698 # instruction *without* a plabel (for portable runtime model) 699 do_function_reloc_bug 700 701 # Test for an off-by-one bug in the handling of 4-byte R_NO_RELOCATION 702 # fixups. 703 do_r_no_reloc 704 705 # Test a relocation problem which shows up when building shared 706 # libraries in SOM 707 do_pic_relocation_test 708 709 # Test a problem with md_apply_fix that was introduced when fixing 710 # the pic relocation test. 711 do_apply_test 712 713 # Make sure gas doesn't resolve long-calls which are to be fixed 714 # by the linker 715 gas_test "longcall.s" "" "" "Avoid resolving long-calls" 716} 717