diff options
author | Alan Modra <amodra@gmail.com> | 2000-07-19 06:30:49 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2000-07-19 06:30:49 +0000 |
commit | 25a8b2508dbb81c6302063d379cbcb336d4d4fb5 (patch) | |
tree | 4ec5cc16f0afe8e269f861fff78ef6ac906567cf | |
parent | 2ec0158338930ca3624aeec14ea78373e6f82840 (diff) | |
download | gdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.zip gdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.tar.gz gdb-25a8b2508dbb81c6302063d379cbcb336d4d4fb5.tar.bz2 |
#ifdef OBJ_SOM, not #ifdef SOM
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-hppa.c | 33 |
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 |