aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2015-06-30 11:25:18 +0100
committerNick Clifton <nickc@redhat.com>2015-06-30 11:25:18 +0100
commit54f66250d79ec304ea427915bfd8b535ec249c3b (patch)
treed9911abb7db95ebca361a100e30bf5af9389bcd5 /bfd
parent7b9be803fed8f500b512d5685773c84fffcdf63f (diff)
downloadgdb-54f66250d79ec304ea427915bfd8b535ec249c3b.zip
gdb-54f66250d79ec304ea427915bfd8b535ec249c3b.tar.gz
gdb-54f66250d79ec304ea427915bfd8b535ec249c3b.tar.bz2
Add support for SADDR addressing to the RL78 port.
gas * config/rl78-parse.y: Tag all saddr expressions throughout. (SET_SA): New. (expr_is_saddr): Allow symbolic expressions. * config/tc-rl78.c (md_apply_fix): Handle SADDR. bfd * elf32-rl78.c (rl78_elf_howto_table): Add RH_SADDR. (rl78_reloc_map): Add R_RL78_RH_SADDR. * reloc.c: Add BFD_RELOC_RL78_SADDR. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/bfd-in2.h1
-rw-r--r--bfd/elf32-rl78.c3
-rw-r--r--bfd/libbfd.h1
-rw-r--r--bfd/reloc.c2
4 files changed, 6 insertions, 1 deletions
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index 35e9d77..ce964bb 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -4584,6 +4584,7 @@ number for the SBIC, SBIS, SBI and CBI instructions */
BFD_RELOC_RL78_HI8,
BFD_RELOC_RL78_LO16,
BFD_RELOC_RL78_CODE,
+ BFD_RELOC_RL78_SADDR,
/* Renesas RX Relocations. */
BFD_RELOC_RX_NEG8,
diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c
index ff3af7b..add3336 100644
--- a/bfd/elf32-rl78.c
+++ b/bfd/elf32-rl78.c
@@ -95,7 +95,7 @@ static reloc_howto_type rl78_elf_howto_table [] =
RL78REL (RH_RELAX, 0, 0, 0, dont, FALSE),
EMPTY_HOWTO (0x2e),
- EMPTY_HOWTO (0x2f),
+ RL78REL (RH_SADDR, 0, 0, 0, dont, FALSE),
EMPTY_HOWTO (0x30),
EMPTY_HOWTO (0x31),
EMPTY_HOWTO (0x32),
@@ -242,6 +242,7 @@ static const struct rl78_reloc_map rl78_reloc_map [] =
{ BFD_RELOC_RL78_ABS16UL, R_RL78_ABS16UL },
{ BFD_RELOC_RL78_ABS16UW, R_RL78_ABS16UW },
{ BFD_RELOC_RL78_ABS16U, R_RL78_ABS16U },
+ { BFD_RELOC_RL78_SADDR, R_RL78_RH_SADDR },
{ BFD_RELOC_RL78_RELAX, R_RL78_RH_RELAX }
};
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index 711f08f..cc19552 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -2114,6 +2114,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_RL78_HI8",
"BFD_RELOC_RL78_LO16",
"BFD_RELOC_RL78_CODE",
+ "BFD_RELOC_RL78_SADDR",
"BFD_RELOC_RX_NEG8",
"BFD_RELOC_RX_NEG16",
"BFD_RELOC_RX_NEG24",
diff --git a/bfd/reloc.c b/bfd/reloc.c
index d312e48..9a06878 100644
--- a/bfd/reloc.c
+++ b/bfd/reloc.c
@@ -4956,6 +4956,8 @@ ENUMX
BFD_RELOC_RL78_LO16
ENUMX
BFD_RELOC_RL78_CODE
+ENUMX
+ BFD_RELOC_RL78_SADDR
ENUMDOC
Renesas RL78 Relocations.