PR ld/11458

* ld-cris/pcrelcp-1.d, ld-cris/pcrelcp-1.s: New test.
This commit is contained in:
Hans-Peter Nilsson 2010-03-31 13:23:40 +00:00
parent 164de317d2
commit bb4a8e7106
3 changed files with 87 additions and 0 deletions

View file

@ -1,5 +1,8 @@
2010-03-31 Hans-Peter Nilsson <hp@axis.com> 2010-03-31 Hans-Peter Nilsson <hp@axis.com>
PR ld/11458
* ld-cris/pcrelcp-1.d, ld-cris/pcrelcp-1.s: New test.
* lib/ld-lib.exp (run_dump_test): When checking linker message and * lib/ld-lib.exp (run_dump_test): When checking linker message and
return code, when success with no message is expected, don't return code, when success with no message is expected, don't
continue if we have an abnormal exit with a message. Check output continue if we have an abnormal exit with a message. Check output

View file

@ -0,0 +1,34 @@
#as: --no-underscore --em=criself
#ld: -shared -m crislinux -z nocombreloc
#ld_after_inputfiles: tmpdir/libdso-1b.so
#warning: \A[^\n]*\.o, section `.text', to symbol `expfn@@TST2':\n
#warning: [^\n]*recompile with -fPIC\Z
#readelf: -a
# Building a DSO with (unrecommended) non-pic pc-relative references
# to a versioned symbol in a library got caught by an assert in
# elf_cris_copy_indirect_symbol wherein the list of pc-relative
# references wasn't merged, but simply asserted to be NULL before
# copied to, on the merged-to (direct) symbol. For versioned symbols,
# there was an "extra" copy made, to make a base-version symbol, where
# the copied-from pc-relative list was NULL but the copied-to symbol
# already had a list merged.
# The list was used to emit warning messages, but incorrectly held the
# relocation section for the reference, resulting in warnings being
# emitted for any section with a pc-relative relocation.
# The test checks that there's a warning message only for the
# read-only sections section (.text) (not the read-write sections),
# that the correct number of relocations is emitted and we also check
# for the TEXTREL dynamic marker.
#...
0x00000016 \(TEXTREL\)[ ]+0x0
#...
Relocation section '\.rela\.text' at offset .* contains 4 entries:
#...
Relocation section '\.rela\.data' at offset .* contains 8 entries:
#...
Relocation section '.rela.data2' at offset .* contains 16 entries:
#pass

View file

@ -0,0 +1,50 @@
.symver x,expfn@TST2 ; .symver required to make @ part of name.
.global _start
.type _start,@function
_start:
.dword 0,0,0,0
.reloc 0,R_CRIS_32_PCREL,expfn
.reloc 4,R_CRIS_32_PCREL,expfn
.reloc 8,R_CRIS_32_PCREL,x
.reloc 12,R_CRIS_32_PCREL,x
.Lfe3:
.size _start,.Lfe3-_start
.data
.global tab1
.type tab1,@object
tab1:
.dword 0,0,0,0,0,0,0,0
.reloc 0,R_CRIS_32_PCREL,expfn
.reloc 4,R_CRIS_32_PCREL,expfn
.reloc 8,R_CRIS_32_PCREL,expfn
.reloc 12,R_CRIS_32_PCREL,expfn
.reloc 16,R_CRIS_32_PCREL,x
.reloc 20,R_CRIS_32_PCREL,x
.reloc 24,R_CRIS_32_PCREL,x
.reloc 28,R_CRIS_32_PCREL,x
.size tab1,.-tab1
.section .data2,"aw",@progbits
.global tab2
.type tab2,@object
tab2:
.dword 0,0,0,0,0,0,0,0
.dword 0,0,0,0,0,0,0,0
.reloc 0,R_CRIS_32_PCREL,expfn
.reloc 4,R_CRIS_32_PCREL,expfn
.reloc 8,R_CRIS_32_PCREL,expfn
.reloc 12,R_CRIS_32_PCREL,expfn
.reloc 16,R_CRIS_32_PCREL,expfn
.reloc 20,R_CRIS_32_PCREL,expfn
.reloc 24,R_CRIS_32_PCREL,expfn
.reloc 28,R_CRIS_32_PCREL,expfn
.reloc 32,R_CRIS_32_PCREL,x
.reloc 36,R_CRIS_32_PCREL,x
.reloc 40,R_CRIS_32_PCREL,x
.reloc 44,R_CRIS_32_PCREL,x
.reloc 48,R_CRIS_32_PCREL,x
.reloc 52,R_CRIS_32_PCREL,x
.reloc 56,R_CRIS_32_PCREL,x
.reloc 60,R_CRIS_32_PCREL,x
.size tab1,.-tab2