diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-07-19 18:46:39 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-07-19 18:46:39 +0000 |
commit | ffffc8fb5c4c02cc43fb2e040e5f410d470c183c (patch) | |
tree | 4170e91d5bb54f1e3b8aad434ca27bed72255260 | |
parent | 28403b8ee766e730a13ad2a7f2b817d1671905fd (diff) | |
download | gdb-ffffc8fb5c4c02cc43fb2e040e5f410d470c183c.zip gdb-ffffc8fb5c4c02cc43fb2e040e5f410d470c183c.tar.gz gdb-ffffc8fb5c4c02cc43fb2e040e5f410d470c183c.tar.bz2 |
* expr.c (clean_up_expression): Don't cancel the subtraction of
undefined symbols.
Fixes PR 2997.
* read.c (s_data), config/obj-coffbfd.c (obj_coff_data): If -R,
switch to text section rather than data section.
Fixes PR 2971.
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/obj-coffbfd.c | 5 | ||||
-rw-r--r-- | gas/expr.c | 1 | ||||
-rw-r--r-- | gas/read.c | 13 |
4 files changed, 24 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index fb772ad..0ec3e13 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +Mon Jul 19 14:30:00 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com) + + * expr.c (clean_up_expression): Don't cancel the subtraction of + undefined symbols. + + * read.c (s_data), config/obj-coffbfd.c (obj_coff_data): If -R, + switch to text section rather than data section. + Mon Jul 19 12:35:39 1993 Ken Raeburn (raeburn@cambridge.cygnus.com) * config/tc-m68k.c (m68k_ip, case AINDX): Add 6 to operand diff --git a/gas/config/obj-coffbfd.c b/gas/config/obj-coffbfd.c index a54ed98..88f815d 100644 --- a/gas/config/obj-coffbfd.c +++ b/gas/config/obj-coffbfd.c @@ -2047,7 +2047,10 @@ obj_coff_text () static void obj_coff_data () { - change_to_section (".data", 5, get_absolute_expression ()); + if (flagseen['R']) + change_to_section (".text", 5, get_absolute_expression () + 1000); + else + change_to_section (".data", 5, get_absolute_expression ()); } static void @@ -681,6 +681,7 @@ clean_up_expression (expressionP) && expressionP->X_add_symbol && (expressionP->X_subtract_symbol->sy_frag == expressionP->X_add_symbol->sy_frag) + && SEG_NORMAL (S_GET_SEGMENT (expressionP->X_add_symbol)) && (S_GET_VALUE (expressionP->X_subtract_symbol) == S_GET_VALUE (expressionP->X_add_symbol)))) { @@ -832,13 +832,22 @@ s_comm () void s_data () { + segT section; register int temp; temp = get_absolute_expression (); + if (flagseen['R']) + { + section = text_section; + temp += 1000; + } + else + section = data_section; + #ifdef BFD_ASSEMBLER - subseg_set (data_section, (subsegT) temp); + subseg_set (section, (subsegT) temp); #else - subseg_new (data_section, (subsegT) temp); + subseg_new (section, (subsegT) temp); #endif #ifdef OBJ_VMS |