aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2000-07-19 06:30:49 +0000
committerAlan Modra <amodra@gmail.com>2000-07-19 06:30:49 +0000
commit25a8b2508dbb81c6302063d379cbcb336d4d4fb5 (patch)
tree4ec5cc16f0afe8e269f861fff78ef6ac906567cf
parent2ec0158338930ca3624aeec14ea78373e6f82840 (diff)
downloadgdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.zip
gdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.tar.gz
gdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.tar.bz2
#ifdef OBJ_SOM, not #ifdef SOM
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-hppa.c33
2 files changed, 23 insertions, 16 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 8ea090b..391fa47 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2000-07-19 Alan Modra <alan@linuxcare.com.au>
+
+ * config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment.
+ (arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM.
+ (pa_type_args): Same here.
+
2000-07-17 Mark Elbrecht <snowball3@bigfoot.com>
* config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c
index 67eb611..ab227ea 100644
--- a/gas/config/tc-hppa.c
+++ b/gas/config/tc-hppa.c
@@ -4390,7 +4390,7 @@ md_undefined_symbol (name)
return 0;
}
-#if defined (SOM) || defined (ELF_ARG_RELOC)
+#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC)
#define arg_reloc_stub_needed(CALLER, CALLEE) \
((CALLEE) && (CALLER) && ((CALLEE) != (CALLER)))
#else
@@ -6715,7 +6715,7 @@ pa_type_args (symbolP, is_export)
name = input_line_pointer;
c = get_symbol_end ();
arg_reloc = pa_align_arg_reloc (temp, pa_build_arg_reloc (name));
-#if defined (SOM) || defined (ELF_ARG_RELOC)
+#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC)
symbol_arg_reloc_info (symbolP) |= arg_reloc;
#endif
*input_line_pointer = c;
@@ -6729,7 +6729,7 @@ pa_type_args (symbolP, is_export)
name = input_line_pointer;
c = get_symbol_end ();
arg_reloc = pa_build_arg_reloc (name);
-#if defined (SOM) || defined (ELF_ARG_RELOC)
+#if defined (OBJ_SOM) || defined (ELF_ARG_RELOC)
symbol_arg_reloc_info (symbolP) |= arg_reloc;
#endif
*input_line_pointer = c;
@@ -8373,19 +8373,20 @@ hppa_fix_adjustable (fixp)
eg. Suppose we have
. ldil LR%foo+0,%r21
. ldw RR%foo+0(%r21),%r26
- . ldw RR%foo+10(%r21),%r25
-
- If foo is at address 4090 (decimal) in section `sect', then after
- reducing to the section symbol, we get
- . LR%sect+4090 == L%sect+0
- . RR%sect+4090 == R%sect+4090
- . RR%sect+4100 == R%sect-4092 (4100 - 8192)
- and the last address loses.
-
- Obviously, in cases where the LR% expression is identical to the
- RR% one we will never have a problem, but is so happens that gcc
- rounds addends involved in LR% field selectors to work around a
- HP linker bug. ie. We often have addresses like the last case
+ . ldw RR%foo+4(%r21),%r25
+
+ If foo is at address 4092 (decimal) in section `sect', then after
+ reducing to the section symbol we get
+ . LR%sect+4092 == (L%sect)+0
+ . RR%sect+4092 == (R%sect)+4092
+ . RR%sect+4096 == (R%sect)-4096
+ and the last address loses because rounding the addend to 8k
+ mutiples takes us up to 8192 with an offset of -4096.
+
+ In cases where the LR% expression is identical to the RR% one we
+ will never have a problem, but is so happens that gcc rounds
+ addends involved in LR% field selectors to work around a HP
+ linker bug. ie. We often have addresses like the last case
above where the LR% expression is offset from the RR% one. */
if (hppa_fix->fx_r_field == e_lrsel