Handle R_X86_64_64 properly for x32
elfcpp/ PR gold/14091 * x86_64.h (R_X86_64_RELATIVE64): New. gold/ PR gold/14091 * x86_64.cc (Target_x86_64::Scan::local): For x32, generate R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of R_X86_64_64.
This commit is contained in:
parent
6750a3a775
commit
fd885f3a4d
@ -1,3 +1,8 @@
|
||||
2012-05-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR gold/14091
|
||||
* x86_64.h (R_X86_64_RELATIVE64): New.
|
||||
|
||||
2012-05-01 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* dwarf.h (enum DW_TAG, enum DW_FORM, enum DW_AT, enum DW_ENCODING)
|
||||
|
@ -91,6 +91,7 @@ enum
|
||||
R_X86_64_TLSDESC_CALL = 35, // Relaxable call through TLS descriptor
|
||||
R_X86_64_TLSDESC = 36, // 2 by 64-bit TLS descriptor
|
||||
R_X86_64_IRELATIVE = 37, // Adjust indirectly by program base
|
||||
R_X86_64_RELATIVE64 = 38, // 64-bit adjust by program base
|
||||
// GNU vtable garbage collection extensions.
|
||||
R_X86_64_GNU_VTINHERIT = 250,
|
||||
R_X86_64_GNU_VTENTRY = 251
|
||||
|
@ -1,3 +1,10 @@
|
||||
2012-05-10 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR gold/14091
|
||||
* x86_64.cc (Target_x86_64::Scan::local): For x32, generate
|
||||
R_X86_64_RELATIVE64 instead of R_X86_64_RELATIVE in case of
|
||||
R_X86_64_64.
|
||||
|
||||
2012-05-08 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* layout.cc (gdb_sections): Update GDB version, add .debug_addr.
|
||||
|
@ -2299,7 +2299,9 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
|
||||
unsigned int r_sym = elfcpp::elf_r_sym<size>(reloc.get_r_info());
|
||||
Reloc_section* rela_dyn = target->rela_dyn_section(layout);
|
||||
rela_dyn->add_local_relative(object, r_sym,
|
||||
elfcpp::R_X86_64_RELATIVE,
|
||||
(size == 32
|
||||
? elfcpp::R_X86_64_RELATIVE64
|
||||
: elfcpp::R_X86_64_RELATIVE),
|
||||
output_section, data_shndx,
|
||||
reloc.get_r_offset(),
|
||||
reloc.get_r_addend(), is_ifunc);
|
||||
|
Loading…
Reference in New Issue
Block a user