diff options
author | Daniel Jacobowitz <drow@false.org> | 2002-01-05 19:06:52 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2002-01-05 19:06:52 +0000 |
commit | 7a621144429a4760ba888069d08bd190e3557119 (patch) | |
tree | c64b347e23312963cc8437f410e53175fd008c5a /gas | |
parent | 7e89e3575daf98bac9dece8abfab33dc42664626 (diff) | |
download | gdb-7a621144429a4760ba888069d08bd190e3557119.zip gdb-7a621144429a4760ba888069d08bd190e3557119.tar.gz gdb-7a621144429a4760ba888069d08bd190e3557119.tar.bz2 |
2002-01-05 Daniel Jacobowitz <drow@mvista.com>
* tc-mips.c (mips_cprestore_valid): New flag.
(mips_frame_reg_valid): New flag.
(macro) [M_JAL_2]: Check both flags.
[M_JAL_A]: Likewise.
(s_cprestore): Set mips_cprestore_valid.
(tc_get_register): If setting mips_frame_reg, set
mips_frame_reg_valid and clear mips_cprestore_valid.
(s_mips_ent): Clear both flags.
(s_mips_end): Clear both flags.
2002-01-05 Daniel Jacobowitz <drow@mvista.com>
* gas/mips/jal-svr4pic.s: Add .ent and .frame directives.
* gas/mips/mips-abi32-pic.s: Add .frame directive.
* gas/mips/mips-gp32-fp32-pic.s: Likewise.
* gas/mips/mips-gp32-fp64-pic.s: Likewise.
* gas/mips/mips-gp64-fp32-pic.s: Likewise.
* gas/mips/mips-gp64-fp64-pic.s: Likewise.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 12 | ||||
-rw-r--r-- | gas/config/tc-mips.c | 47 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/jal-svr4pic.s | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips-abi32-pic.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips-gp32-fp32-pic.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips-gp32-fp64-pic.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips-gp64-fp32-pic.s | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips-gp64-fp64-pic.s | 1 |
9 files changed, 76 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index c1c52f3..b90a726 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,15 @@ +2002-01-05 Daniel Jacobowitz <drow@mvista.com> + + * tc-mips.c (mips_cprestore_valid): New flag. + (mips_frame_reg_valid): New flag. + (macro) [M_JAL_2]: Check both flags. + [M_JAL_A]: Likewise. + (s_cprestore): Set mips_cprestore_valid. + (tc_get_register): If setting mips_frame_reg, set + mips_frame_reg_valid and clear mips_cprestore_valid. + (s_mips_ent): Clear both flags. + (s_mips_end): Clear both flags. + 2002-01-05 Alan Modra <amodra@bigpond.net.au> * write.c (write_object_file): Make use of bfd_section_list_remove. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 23cfc45..3646127 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -412,10 +412,18 @@ static offsetT mips_cpreturn_offset = -1; static int mips_cpreturn_register = -1; static int mips_gp_register = GP; +/* Whether mips_cprestore_offset has been set in the current function + (or whether it has already been warned about, if not). */ +static int mips_cprestore_valid = 0; + /* This is the register which holds the stack frame, as set by the .frame pseudo-op. This is needed to implement .cprestore. */ static int mips_frame_reg = SP; +/* Whether mips_frame_reg has been set in the current function + (or whether it has already been warned about, if not). */ +static int mips_frame_reg_valid = 0; + /* To output NOP instructions correctly, we need to keep information about the previous two instructions. */ @@ -5110,6 +5118,18 @@ macro (ip) as_warn (_("No .cprestore pseudo-op used in PIC code")); else { + if (! mips_frame_reg_valid) + { + as_warn (_("No .frame pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_frame_reg_valid = 1; + } + if (! mips_cprestore_valid) + { + as_warn (_("No .cprestore pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_cprestore_valid = 1; + } expr1.X_add_number = mips_cprestore_offset; macro_build ((char *) NULL, &icnt, &expr1, HAVE_32BIT_ADDRESSES ? "lw" : "ld", "t,o(b)", @@ -5211,6 +5231,18 @@ macro (ip) as_warn (_("No .cprestore pseudo-op used in PIC code")); else { + if (! mips_frame_reg_valid) + { + as_warn (_("No .frame pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_frame_reg_valid = 1; + } + if (! mips_cprestore_valid) + { + as_warn (_("No .cprestore pseudo-op used in PIC code")); + /* Quiet this warning. */ + mips_cprestore_valid = 1; + } if (mips_opts.noreorder) macro_build ((char *) NULL, &icnt, (expressionS *) NULL, "nop", ""); @@ -11472,6 +11504,7 @@ s_cprestore (ignore) } mips_cprestore_offset = get_absolute_expression (); + mips_cprestore_valid = 1; ex.X_op = O_constant; ex.X_add_symbol = NULL; @@ -11738,7 +11771,11 @@ tc_get_register (frame) input_line_pointer += 2; } if (frame) - mips_frame_reg = reg != 0 ? reg : SP; + { + mips_frame_reg = reg != 0 ? reg : SP; + mips_frame_reg_valid = 1; + mips_cprestore_valid = 0; + } return reg; } @@ -12806,6 +12843,10 @@ s_mips_end (x) symbolS *p; int maybe_text; + /* Following functions need their own .frame and .cprestore directives. */ + mips_frame_reg_valid = 0; + mips_cprestore_valid = 0; + if (!is_end_of_line[(unsigned char) *input_line_pointer]) { p = get_symbol (); @@ -12923,6 +12964,10 @@ s_mips_ent (aent) if (!aent) { + /* This function needs its own .frame and .cprestore directives. */ + mips_frame_reg_valid = 0; + mips_cprestore_valid = 0; + cur_proc_ptr = &cur_proc; memset (cur_proc_ptr, '\0', sizeof (procS)); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 7fdf423..4fbd74d 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2002-01-05 Daniel Jacobowitz <drow@mvista.com> + + * gas/mips/jal-svr4pic.s: Add .ent and .frame directives. + * gas/mips/mips-abi32-pic.s: Add .frame directive. + * gas/mips/mips-gp32-fp32-pic.s: Likewise. + * gas/mips/mips-gp32-fp64-pic.s: Likewise. + * gas/mips/mips-gp64-fp32-pic.s: Likewise. + * gas/mips/mips-gp64-fp64-pic.s: Likewise. + 2002-01-02 Chris Demetriou <cgd@broadcom.com> * gas/mips/empic3_e.d: New file to test -membedded-pic diff --git a/gas/testsuite/gas/mips/jal-svr4pic.s b/gas/testsuite/gas/mips/jal-svr4pic.s index 1174e94..5e2df1e 100644 --- a/gas/testsuite/gas/mips/jal-svr4pic.s +++ b/gas/testsuite/gas/mips/jal-svr4pic.s @@ -2,7 +2,9 @@ .weak weak_text_label + .ent text_label text_label: + .frame $sp,0,$31 .set noreorder .cpload $25 .set reorder @@ -19,3 +21,5 @@ text_label: # Round to a 16 byte boundary, for ease in testing multiple targets. nop nop + + .end text_label diff --git a/gas/testsuite/gas/mips/mips-abi32-pic.s b/gas/testsuite/gas/mips/mips-abi32-pic.s index 066fb70..2b05a8e 100644 --- a/gas/testsuite/gas/mips/mips-abi32-pic.s +++ b/gas/testsuite/gas/mips/mips-abi32-pic.s @@ -12,6 +12,7 @@ unshared: .text .ent func func: + .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) diff --git a/gas/testsuite/gas/mips/mips-gp32-fp32-pic.s b/gas/testsuite/gas/mips/mips-gp32-fp32-pic.s index b5e06a7..d709810 100644 --- a/gas/testsuite/gas/mips/mips-gp32-fp32-pic.s +++ b/gas/testsuite/gas/mips/mips-gp32-fp32-pic.s @@ -12,6 +12,7 @@ unshared: .text .ent func func: + .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) diff --git a/gas/testsuite/gas/mips/mips-gp32-fp64-pic.s b/gas/testsuite/gas/mips/mips-gp32-fp64-pic.s index 0501244..6d718aa 100644 --- a/gas/testsuite/gas/mips/mips-gp32-fp64-pic.s +++ b/gas/testsuite/gas/mips/mips-gp32-fp64-pic.s @@ -12,6 +12,7 @@ unshared: .text .ent func func: + .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) diff --git a/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s b/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s index f138d13..6d62890 100644 --- a/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s +++ b/gas/testsuite/gas/mips/mips-gp64-fp32-pic.s @@ -12,6 +12,7 @@ unshared: .text .ent func func: + .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) diff --git a/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s b/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s index 195dc5c..0d42de3 100644 --- a/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s +++ b/gas/testsuite/gas/mips/mips-gp64-fp64-pic.s @@ -12,6 +12,7 @@ unshared: .text .ent func func: + .frame $sp,0,$31 .set noreorder .cpload $25 # 0000 lui gp,hi(_gp_disp) # 0004 addiu gp,gp,lo(_gp_disp) |