Changeset c46980e in rtems-tools


Ignore:
Timestamp:
Nov 21, 2012, 2:04:47 AM (7 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, master
Children:
43ec8b0
Parents:
b770b0c
Message:

Add entry point support.

Location:
linkers
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • linkers/rld-outputter.cpp

    rb770b0c rc46980e  
    4242  {
    4343    const std::string
    44     script_text (files::object_list& dependents,
    45                  files::cache&       cache)
     44    script_text (const std::string&        entry,
     45                 const files::object_list& dependents,
     46                 const files::cache&       cache)
    4647    {
    4748      std::ostringstream out;
    4849      files::object_list objects;
    49 
    50       /*
    51        * The merge removes them from the dependent list.
    52        */
    5350      files::object_list dep_copy (dependents);
    5451
     
    5653      objects.merge (dep_copy);
    5754      objects.unique ();
     55
     56      if (rld::verbose () >= RLD_VERBOSE_INFO)
     57        std::cout << " e: " << entry << std::endl;
     58
     59      out << "e: " << entry << std::endl;
    5860
    5961      for (files::object_list::iterator oi = objects.begin ();
     
    9092
    9193    void
    92     metadata_object (files::object&      metadata,
    93                      files::object_list& dependents,
    94                      files::cache&       cache)
     94    metadata_object (files::object&            metadata,
     95                     const std::string&        entry,
     96                     const files::object_list& dependents,
     97                     const files::cache&       cache)
    9598    {
    9699      if (rld::verbose () >= RLD_VERBOSE_INFO)
    97100        std::cout << "metadata: " << metadata.name ().full () << std::endl;
    98101
    99       const std::string script = script_text (dependents, cache);
     102      const std::string script = script_text (entry, dependents, cache);
    100103
    101104      metadata.open (true);
     
    132135
    133136    void
    134     archive (const std::string&  name,
    135              files::object_list& dependents,
    136              files::cache&       cache)
     137    archive (const std::string&        name,
     138             const std::string&        entry,
     139             const files::object_list& dependents,
     140             const files::cache&       cache)
    137141    {
    138142      if (rld::verbose () >= RLD_VERBOSE_INFO)
     
    146150      files::object metadata (mdname);
    147151
    148       metadata_object (metadata, dependents, cache);
    149 
    150       /*
    151        * The merge removes them from the dependent list.
    152        */
     152      metadata_object (metadata, entry, dependents, cache);
     153
    153154      files::object_list dep_copy (dependents);
    154155      files::object_list objects;
     
    164165
    165166    void
    166     script (const std::string&  name,
    167             files::object_list& dependents,
    168             files::cache&       cache)
     167    script (const std::string&        name,
     168            const std::string&        entry,
     169            const files::object_list& dependents,
     170            const files::cache&       cache)
    169171    {
    170172      if (rld::verbose () >= RLD_VERBOSE_INFO)
     
    181183      try
    182184      {
    183         out << script_text (dependents, cache);
     185        out << script_text (entry, dependents, cache);
    184186      }
    185187      catch (...)
     
    247249
    248250    void
    249     application (const std::string&  name,
    250                  files::object_list& dependents,
    251                  files::cache&       cache)
     251    application (const std::string&        name,
     252                 const std::string&        entry,
     253                 const files::object_list& dependents,
     254                 const files::cache&       cache)
    252255    {
    253256      if (rld::verbose () >= RLD_VERBOSE_INFO)
     
    260263      files::image       app (name);
    261264
    262       header = "RTEMS-APP,00000000,01.00.00,LZ77,00000000\n";
     265      header = "RAP,00000000,01.00.00,LZ77,00000000\n";
    263266      header += '\0';
    264267
    265       script = script_text (dependents, cache);
     268      script = script_text (entry, dependents, cache);
    266269
    267270      cache.get_objects (objects);
  • linkers/rld-outputter.h

    rb770b0c rc46980e  
    4545     * Output the object file list as a string.
    4646     *
     47     * @param entry The name of the entry point symbol.
    4748     * @param dependents The list of dependent object files
    4849     * @param cache The file cache for the link. Includes the object list
     
    5051     * @return std::string The list as a text string.
    5152     */
    52     std::string script_text (rld::files::object_list& dependents,
    53                              rld::files::cache&       cache);
     53    std::string script_text (const std::string&        entry,
     54                             const files::object_list& dependents,
     55                             const files::cache&       cache);
    5456    /**
    5557     * Output the object files as an archive format file with the metadata as
     
    5759     *
    5860     * @param name The name of the archive.
     61     * @param entry The name of the entry point symbol.
    5962     * @param dependents The list of dependent object files
    6063     * @param cache The file cache for the link. Includes the object list
    6164     *              the user requested.
    6265     */
    63     void archive (const std::string&       name,
    64                   rld::files::object_list& dependents,
    65                   rld::files::cache&       cache);
     66    void archive (const std::string&        name,
     67                  const std::string&        entry,
     68                  const files::object_list& dependents,
     69                  const files::cache&       cache);
    6670
    6771    /**
     
    6973     *
    7074     * @param name The name of the script.
     75     * @param entry The name of the entry point symbol.
    7176     * @param dependents The list of dependent object files
    7277     * @param cache The file cache for the link. Includes the object list
    7378     *              the user requested.
    7479     */
    75     void script (const std::string&       name,
    76                  rld::files::object_list& dependents,
    77                  rld::files::cache&       cache);
     80    void script (const std::string&        name,
     81                 const std::string&        entry,
     82                 const files::object_list& dependents,
     83                 const files::cache&       cache);
    7884
    7985    /**
     
    8187     *
    8288     * @param name The name of the script.
     89     * @param entry The name of the entry point symbol.
    8390     * @param dependents The list of dependent object files
    8491     * @param cache The file cache for the link. Includes the object list
    8592     *              the user requested.
    8693     */
    87     void application (const std::string&  name,
    88                       files::object_list& dependents,
    89                       files::cache&       cache);
     94    void application (const std::string&        name,
     95                      const std::string&        entry,
     96                      const files::object_list& dependents,
     97                      const files::cache&       cache);
    9098
    9199  }
  • linkers/rtems-ld.cpp

    rb770b0c rc46980e  
    167167    rld::symbols::table  symbols;
    168168    rld::symbols::table  undefined;
    169     std::string          entry;
     169    std::string          entry = "rtems";
    170170    std::string          output = "a.out";
    171171    std::string          base_name;
     
    389389      {
    390390        case rld::outputter::ot_script:
    391           rld::outputter::script (output, dependents, cache);
     391          rld::outputter::script (output, entry, dependents, cache);
    392392          break;
    393393        case rld::outputter::ot_archive:
    394           rld::outputter::archive (output, dependents, cache);
     394          rld::outputter::archive (output, entry, dependents, cache);
    395395          break;
    396396        case rld::outputter::ot_application:
    397           rld::outputter::application (output, dependents, cache);
     397          rld::outputter::application (output, entry, dependents, cache);
    398398          break;
    399399        default:
Note: See TracChangeset for help on using the changeset viewer.