diff options
-rw-r--r-- | elfcpp/ChangeLog | 6 | ||||
-rw-r--r-- | elfcpp/powerpc.h | 7 | ||||
-rw-r--r-- | gold/ChangeLog | 8 | ||||
-rw-r--r-- | gold/powerpc.cc | 30 |
4 files changed, 51 insertions, 0 deletions
diff --git a/elfcpp/ChangeLog b/elfcpp/ChangeLog index fbb045b..0565d78 100644 --- a/elfcpp/ChangeLog +++ b/elfcpp/ChangeLog @@ -1,3 +1,9 @@ +2019-06-28 Alan Modra <amodra@gmail.com> + + * powerpc.h (R_PPC64_REL16_HIGH, R_PPC64_REL16_HIGHA), + (R_PPC64_REL16_HIGHER, R_PPC64_REL16_HIGHERA), + (R_PPC64_REL16_HIGHEST, R_PPC64_REL16_HIGHESTA): Define. + 2019-05-16 Andre Vieira <andre.simoesdiasvieira@arm.com> * arm.h (Tag_MVE_arch): Define new enum value. diff --git a/elfcpp/powerpc.h b/elfcpp/powerpc.h index cb0e05e..4008f55 100644 --- a/elfcpp/powerpc.h +++ b/elfcpp/powerpc.h @@ -200,6 +200,13 @@ enum R_PPC_VLE_SDAREL_HA16A = 231, R_PPC_VLE_SDAREL_HA16D = 232, + R_PPC64_REL16_HIGH = 240, + R_PPC64_REL16_HIGHA = 241, + R_PPC64_REL16_HIGHER = 242, + R_PPC64_REL16_HIGHERA = 243, + R_PPC64_REL16_HIGHEST = 244, + R_PPC64_REL16_HIGHESTA = 245, + R_POWERPC_REL16DX_HA = 246, R_PPC64_JMP_IREL = 247, R_POWERPC_IRELATIVE = 248, diff --git a/gold/ChangeLog b/gold/ChangeLog index 1c66f6e..955e556 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,11 @@ +2019-06-28 Alan Modra <amodra@gmail.com> + + * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Handle + REL16_HIGH* relocs. + (Target_powerpc::Scan::local): Likewise. + (Target_powerpc::Scan::global): Likewise. + (Target_powerpc::Relocate::relocate): Likewise. + 2019-06-10 Martin Liska <mliska@suse.cz> * errors.h: Include string. diff --git a/gold/powerpc.cc b/gold/powerpc.cc index e251a93..1f24071 100644 --- a/gold/powerpc.cc +++ b/gold/powerpc.cc @@ -6464,6 +6464,12 @@ Target_powerpc<size, big_endian>::Scan::get_reference_flags( case elfcpp::R_POWERPC_REL16_LO: case elfcpp::R_POWERPC_REL16_HI: case elfcpp::R_POWERPC_REL16_HA: + case elfcpp::R_PPC64_REL16_HIGH: + case elfcpp::R_PPC64_REL16_HIGHA: + case elfcpp::R_PPC64_REL16_HIGHER: + case elfcpp::R_PPC64_REL16_HIGHERA: + case elfcpp::R_PPC64_REL16_HIGHEST: + case elfcpp::R_PPC64_REL16_HIGHESTA: ref = Symbol::RELATIVE_REF; break; @@ -6964,6 +6970,12 @@ Target_powerpc<size, big_endian>::Scan::local( case elfcpp::R_POWERPC_REL16_HI: case elfcpp::R_POWERPC_REL16_HA: case elfcpp::R_POWERPC_REL16DX_HA: + case elfcpp::R_PPC64_REL16_HIGH: + case elfcpp::R_PPC64_REL16_HIGHA: + case elfcpp::R_PPC64_REL16_HIGHER: + case elfcpp::R_PPC64_REL16_HIGHERA: + case elfcpp::R_PPC64_REL16_HIGHEST: + case elfcpp::R_PPC64_REL16_HIGHESTA: case elfcpp::R_POWERPC_SECTOFF: case elfcpp::R_POWERPC_SECTOFF_LO: case elfcpp::R_POWERPC_SECTOFF_HI: @@ -7604,6 +7616,12 @@ Target_powerpc<size, big_endian>::Scan::global( case elfcpp::R_POWERPC_REL16_HI: case elfcpp::R_POWERPC_REL16_HA: case elfcpp::R_POWERPC_REL16DX_HA: + case elfcpp::R_PPC64_REL16_HIGH: + case elfcpp::R_PPC64_REL16_HIGHA: + case elfcpp::R_PPC64_REL16_HIGHER: + case elfcpp::R_PPC64_REL16_HIGHERA: + case elfcpp::R_PPC64_REL16_HIGHEST: + case elfcpp::R_PPC64_REL16_HIGHESTA: case elfcpp::R_POWERPC_SECTOFF: case elfcpp::R_POWERPC_SECTOFF_LO: case elfcpp::R_POWERPC_SECTOFF_HI: @@ -9411,6 +9429,12 @@ Target_powerpc<size, big_endian>::Relocate::relocate( case elfcpp::R_POWERPC_REL16_HI: case elfcpp::R_POWERPC_REL16_HA: case elfcpp::R_POWERPC_REL16DX_HA: + case elfcpp::R_PPC64_REL16_HIGH: + case elfcpp::R_PPC64_REL16_HIGHA: + case elfcpp::R_PPC64_REL16_HIGHER: + case elfcpp::R_PPC64_REL16_HIGHERA: + case elfcpp::R_PPC64_REL16_HIGHEST: + case elfcpp::R_PPC64_REL16_HIGHESTA: case elfcpp::R_POWERPC_REL14: case elfcpp::R_POWERPC_REL14_BRTAKEN: case elfcpp::R_POWERPC_REL14_BRNTAKEN: @@ -9973,6 +9997,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( // Fall through. case elfcpp::R_POWERPC_ADDR16_HI: case elfcpp::R_POWERPC_REL16_HI: + case elfcpp::R_PPC64_REL16_HIGH: case elfcpp::R_PPC64_TOC16_HI: case elfcpp::R_POWERPC_GOT16_HI: case elfcpp::R_POWERPC_PLT16_HI: @@ -9995,6 +10020,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( // Fall through. case elfcpp::R_POWERPC_ADDR16_HA: case elfcpp::R_POWERPC_REL16_HA: + case elfcpp::R_PPC64_REL16_HIGHA: case elfcpp::R_PPC64_TOC16_HA: case elfcpp::R_POWERPC_GOT16_HA: case elfcpp::R_POWERPC_PLT16_HA: @@ -10018,6 +10044,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( goto unsupp; // Fall through. case elfcpp::R_PPC64_ADDR16_HIGHER: + case elfcpp::R_PPC64_REL16_HIGHER: case elfcpp::R_PPC64_TPREL16_HIGHER: Reloc::addr16_hi2(view, value); break; @@ -10028,6 +10055,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( goto unsupp; // Fall through. case elfcpp::R_PPC64_ADDR16_HIGHERA: + case elfcpp::R_PPC64_REL16_HIGHERA: case elfcpp::R_PPC64_TPREL16_HIGHERA: Reloc::addr16_ha2(view, value); break; @@ -10038,6 +10066,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( goto unsupp; // Fall through. case elfcpp::R_PPC64_ADDR16_HIGHEST: + case elfcpp::R_PPC64_REL16_HIGHEST: case elfcpp::R_PPC64_TPREL16_HIGHEST: Reloc::addr16_hi3(view, value); break; @@ -10048,6 +10077,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate( goto unsupp; // Fall through. case elfcpp::R_PPC64_ADDR16_HIGHESTA: + case elfcpp::R_PPC64_REL16_HIGHESTA: case elfcpp::R_PPC64_TPREL16_HIGHESTA: Reloc::addr16_ha3(view, value); break; |