old-cross-binutils/ld/testsuite/ld-aarch64
Jiong Wang 2e0488d33f Enable elf_backend_rela_normal for AArch64
If we are generating non-relocatable object and --emit-relocs specified,
  aarch64 ld is actually generating wrong addend for rela entry when
  relocate against local symbol.

  for example, for simple testcase

  foo.c
  ===

  const char * const a = "foo";

  const char *
  foo ()
  {
    return a;
  }

  bar.c
  ===

  const char * const b = "bar";

  const char * bar ()
  {
    return b;
  }

  aarch64-none-linux-gnu-ld --emit-relocs -o x.o  foo.o bar.o
  aarch64-none-linux-gnu-readelf -r x.o

   ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0
   ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0
   ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0
   ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0

   while it should be:

   ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 0
   ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 0
   ... R_AARCH64_ADR_PRE 0000000000400018 .rodata + 10
   ... R_AARCH64_ADD_ABS 0000000000400018 .rodata + 10

   bfd generic code could actually handle this properly, but only when
   elf_backend_rela_normal set to '1'.

   this patch enable this and remove those target specific hack.

    bfd/
      * elfnn-aarch64.c (elf_backend_rela_normal): Set to 1.
      (elfNN_aarch64_relocate_section): Remove duplicated addend adjustment
      when info->relocatable be true.

    ld/testsuite/
      * ld-aarch64/emit-relocs-local-addend-bar.s: * New source file.
      * ld-aarch64/emit-relocs-local-addend-foo.s: * Likewise.
      * ld-aarch64/emit-relocs-local-addend.d: * New testcase.
      * ld-aarch64/local-addend-r.d: Likewise.
2014-07-08 09:29:06 +01:00
..
aarch64-elf.exp
aarch64.ld
eh-frame-bar.s
eh-frame-foo.s
eh-frame.d
emit-relocs-257-be.d
emit-relocs-257.d
emit-relocs-257.s
emit-relocs-260-be.d
emit-relocs-260.d
emit-relocs-260.s
emit-relocs-262.d
emit-relocs-262.s
emit-relocs-263.d
emit-relocs-263.s
emit-relocs-264.d
emit-relocs-264.s
emit-relocs-265.d
emit-relocs-265.s
emit-relocs-266.d
emit-relocs-266.s
emit-relocs-267.d
emit-relocs-267.s
emit-relocs-268.d
emit-relocs-268.s
emit-relocs-269.d
emit-relocs-269.s
emit-relocs-270-bad.d
emit-relocs-270.d
emit-relocs-270.s
emit-relocs-271.d
emit-relocs-271.s
emit-relocs-272.d
emit-relocs-272.s
emit-relocs-273.d
emit-relocs-273.s
emit-relocs-274.d
emit-relocs-274.s
emit-relocs-275.d
emit-relocs-275.s
emit-relocs-276.d
emit-relocs-276.s
emit-relocs-277.d
emit-relocs-277.s
emit-relocs-278.d
emit-relocs-278.s
emit-relocs-279-bad.d
emit-relocs-279.d
emit-relocs-279.s
emit-relocs-280.d
emit-relocs-280.s
emit-relocs-282.d
emit-relocs-282.s
emit-relocs-283.d
emit-relocs-283.s
emit-relocs-284.d
emit-relocs-284.s
emit-relocs-285.d
emit-relocs-285.s
emit-relocs-286-bad.d
emit-relocs-286.d
emit-relocs-286.s
emit-relocs-287.d
emit-relocs-287.s
emit-relocs-299.d
emit-relocs-299.s
emit-relocs-309-low-bad.d
emit-relocs-309-low.d
emit-relocs-309-up-bad.d
emit-relocs-309-up.d
emit-relocs-309.s
emit-relocs-311.d
emit-relocs-311.s
emit-relocs-312.d
emit-relocs-312.s
emit-relocs-local-addend-bar.s
emit-relocs-local-addend-foo.s
emit-relocs-local-addend.d
emit-relocs1.s
farcall-b-none-function.d
farcall-b-none-function.s
farcall-b.d
farcall-b.s
farcall-back.d
farcall-back.s
farcall-bl-none-function.d
farcall-bl-none-function.s
farcall-bl.d
farcall-bl.s
farcall-section.d
farcall-section.s
gc-got-relocs.d
gc-plt-hidden.s
gc-plt-main.s
gc-plt-relocs.d
gc-plt1.s
gc-plt2.s
gc-relocs-257-dyn.d
gc-relocs-257.d
gc-relocs-257.s
gc-relocs-309.s
gc-relocs-311.s
gc-relocs-312.s
gc-relocs-tlsdesc.s
gc-relocs-tlsgd.s
gc-relocs-tlsie.s
gc-relocs-tlsle.s
gc-start.s
gc-tls-relocs.d
ifunc-1-local.d
ifunc-1-local.s
ifunc-1.d
ifunc-1.s
ifunc-2-local.d
ifunc-2-local.s
ifunc-2.d
ifunc-2.s
ifunc-3.s
ifunc-3a.d
ifunc-3b.d
ifunc-4.d
ifunc-4.s
ifunc-4a.d
ifunc-5-local.s
ifunc-5.s
ifunc-5a-local.d
ifunc-5a.d
ifunc-5b-local.d
ifunc-5b.d
ifunc-5r-local.d
ifunc-6.s
ifunc-6a.d
ifunc-6b.d
ifunc-7.s
ifunc-7a.d
ifunc-7b.d
ifunc-7c.d
ifunc-8.d
ifunc-8a.s
ifunc-8b.s
ifunc-9.d
ifunc-9.s
ifunc-10.d
ifunc-10.s
ifunc-11.d
ifunc-11.s
ifunc-12.d
ifunc-12.s
ifunc-13.d
ifunc-13a.s
ifunc-13b.s
ifunc-14a.d
ifunc-14a.s
ifunc-14b.d
ifunc-14b.s
ifunc-14c.d
ifunc-14c.s
ifunc-14d.d
ifunc-14e.d
ifunc-14f.d
ifunc-15.d
ifunc-15.s
ifunc-16.d
ifunc-16.s
ifunc-17a.d
ifunc-17a.s
ifunc-17b.d
ifunc-17b.s
ifunc-18a.d
ifunc-18a.s
ifunc-18b.d
ifunc-18b.s
ifunc-19a.d
ifunc-19a.s
ifunc-19b.d
ifunc-19b.s
ifunc-20.d
ifunc-20.s
ifunc-21.d
ifunc-21.s
ifunc-22.d
ifunc-22.s
limit-b.d
limit-b.s
limit-bl.d
limit-bl.s
local-addend-r.d
relasz.d
relasz.s
relocs.ld
tls-desc-ie.d
tls-desc-ie.s
tls-relax-all.d
tls-relax-all.s
tls-relax-gd-ie.d
tls-relax-gd-ie.s
tls-relax-gd-le.d
tls-relax-gd-le.s
tls-relax-gdesc-ie-2.d
tls-relax-gdesc-ie-2.s
tls-relax-gdesc-ie.d
tls-relax-gdesc-ie.s
tls-relax-gdesc-le-2.d
tls-relax-gdesc-le-2.s
tls-relax-gdesc-le.d
tls-relax-gdesc-le.s
tls-relax-ie-le-2.d
tls-relax-ie-le-2.s
tls-relax-ie-le-3.d
tls-relax-ie-le-3.s
tls-relax-ie-le.d
tls-relax-ie-le.s
tlsle-symbol-offset.d
tlsle-symbol-offset.s
weak-undefined.d
weak-undefined.s