aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2000-07-17 23:27:31 +0000
committerNick Clifton <nickc@redhat.com>2000-07-17 23:27:31 +0000
commit7a9aaf929a34163a6939659ef61d40848f719d61 (patch)
tree8abb1a9e50ad2619ec7c9c2fdc05d137f967e80c /gas/config
parent53db15ed2a5bfdd1d1bfefb96212f9b48b436cc4 (diff)
downloadgdb-7a9aaf929a34163a6939659ef61d40848f719d61.zip
gdb-7a9aaf929a34163a6939659ef61d40848f719d61.tar.gz
gdb-7a9aaf929a34163a6939659ef61d40848f719d61.tar.bz2
Don't merge labels. Don't merge if the symbol isn't constant. Don't call
S_SET_EXTERNAL if the storage class is already set.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/obj-coff.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c
index 41fc595..6da6118 100644
--- a/gas/config/obj-coff.c
+++ b/gas/config/obj-coff.c
@@ -1139,24 +1139,30 @@ coff_frob_symbol (symp, punt)
symbolS *real;
if (!SF_GET_LOCAL (symp)
&& !SF_GET_STATICS (symp)
+ && S_GET_STORAGE_CLASS (symp) != C_LABEL
+ && symbol_constant_p(symp)
&& (real = symbol_find_base (S_GET_NAME (symp), DO_NOT_STRIP))
&& real != symp)
{
c_symbol_merge (symp, real);
*punt = 1;
}
- if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp))
+ if (S_GET_STORAGE_CLASS (symp) == C_NULL)
{
- assert (S_GET_VALUE (symp) == 0);
- S_SET_EXTERNAL (symp);
- }
- else if (S_GET_STORAGE_CLASS (symp) == C_NULL)
- {
- if (S_GET_SEGMENT (symp) == text_section
- && symp != seg_info (text_section)->sym)
- S_SET_STORAGE_CLASS (symp, C_LABEL);
+ if (!S_IS_DEFINED (symp) && !SF_GET_LOCAL (symp))
+ {
+ assert (S_GET_VALUE (symp) == 0);
+ S_SET_EXTERNAL (symp);
+ }
+ else if (S_GET_SEGMENT (symp) == text_section
+ && symp != seg_info (text_section)->sym)
+ {
+ S_SET_STORAGE_CLASS (symp, C_LABEL);
+ }
else
- S_SET_STORAGE_CLASS (symp, C_STAT);
+ {
+ S_SET_STORAGE_CLASS (symp, C_STAT);
+ }
}
if (SF_GET_PROCESS (symp))
{