Ignore:
Timestamp:
Feb 16, 2004, 5:16:29 AM (21 years ago)
Author:
bird
Message:

Fixed a few N_IMP1/2 problems. Can now link simple program.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/binutils/bfd/aoutx.h

    • Property cvs2svn:cvs-rev changed from 1.6 to 1.7
    r1256 r1257  
    129129#include "aout/stab_gnu.h"
    130130#include "aout/ar.h"
     131
     132#if defined(N_IMP1) && defined(N_IMP2)
     133#define VALUE_N_IMP1 (0xffffffffU)
     134#endif
    131135
    132136static bfd_boolean aout_get_external_symbols
     
    16571661      break;
    16581662
    1659 #ifdef EMX
     1663#if defined(N_IMP1) && defined(N_IMP2)
    16601664    case N_IMP1 | N_EXT:
    16611665      cache_ptr->symbol.section = bfd_abs_section_ptr;
     
    16671671      cache_ptr->symbol.flags = BSF_EMX_IMPORT2;
    16681672      break;
     1673    case N_IMP2: case N_IMP1: BFD_ASSERT (!"very bad"); break;
    16691674#endif /* EMX */
    16701675    }
     
    17101715    }
    17111716
     1717#if defined (N_IMP1) && defined (N_IMP2)
     1718  if (bfd_is_abs_section (sec))
     1719    {
     1720      if (cache_ptr->flags & BSF_EMX_IMPORT1)
     1721        sym_pointer->e_type[0] |= N_IMP1;
     1722      else if (cache_ptr->flags & BSF_EMX_IMPORT2)
     1723        sym_pointer->e_type[0] |= N_IMP2;
     1724      else
     1725        sym_pointer->e_type[0] |= N_ABS;
     1726    }
     1727#else
    17121728  if (bfd_is_abs_section (sec))
    17131729    sym_pointer->e_type[0] |= N_ABS;
     1730#endif
    17141731  else if (sec == obj_textsec (abfd))
    17151732    sym_pointer->e_type[0] |= N_TEXT;
     
    32773294          || type == (N_ABS | N_EXT)
    32783295          || type == (N_INDR | N_EXT)
    3279 #if defined (EMX)
     3296#if defined(N_IMP1) && defined(N_IMP2)
    32803297          || type == (N_IMP1 | N_EXT)
    32813298#endif
     
    35953612          flags = BSF_WEAK;
    35963613          break;
    3597 #ifdef EMX
     3614#if defined(N_IMP1) && defined(N_IMP2)
    35983615        case N_IMP1 | N_EXT:
    35993616          section = bfd_abs_section_ptr;
    36003617          flags = BSF_EMX_IMPORT1;
    3601           value = -1; /* -1 in *ABS* means external imported symbol */
     3618          /* VALUE_N_IMP1 in *ABS* means external imported symbol. This is
     3619             a bit unreliable, but it's the best we can do in some cases. */
     3620          value = VALUE_N_IMP1;
    36023621          break;
    36033622        case N_IMP2 | N_EXT:
     
    36053624          flags = BSF_EMX_IMPORT2;
    36063625          break;
     3626        case N_IMP2: case N_IMP1: BFD_ASSERT (!"very bad"); break;
    36073627#endif /* EMX */
    36083628        }
     
    43664386              symsec = NULL;
    43674387            }
    4368 #ifdef EMX
     4388#if defined(N_IMP1) && defined(N_IMP2)
    43694389          else if ((type == (N_IMP1 | N_EXT))
    4370                    || (type == (N_IMP2 | N_EXT)))
     4390                || (type == (N_IMP2 | N_EXT)))
    43714391            symsec = bfd_abs_section_ptr;
    43724392#endif
     
    44504470                             ? N_BSS
    44514471                             : N_WEAKB);
     4472#if defined(N_IMP1) && defined(N_IMP2)
     4473                  else if (hresolve->root.u.def.value == VALUE_N_IMP1)
     4474                    type |= N_IMP1;
     4475#endif
    44524476                  else
    44534477                    type |= (hresolve->root.type == bfd_link_hash_defined
     
    47334757        else if (sec == obj_bsssec (output_bfd))
    47344758          type = h->root.type == bfd_link_hash_defined ? N_BSS : N_WEAKB;
     4759#if defined(N_IMP1) && defined(N_IMP2)
     4760        else if (h->root.u.def.value == VALUE_N_IMP1)
     4761          type = N_IMP1;
     4762#endif
    47354763        else
    47364764          type = h->root.type == bfd_link_hash_defined ? N_ABS : N_WEAKA;
Note: See TracChangeset for help on using the changeset viewer.