Changeset 161 for soft/giet_vm


Ignore:
Timestamp:
Jun 20, 2012, 9:50:34 AM (12 years ago)
Author:
karaoui
Message:

Deleting unused folders
All ELF file have the extension *.elf
Must objetc file are now dumped in the build directory

Location:
soft/giet_vm
Files:
5 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/Makefile

    r160 r161  
    3636.PHONY: apps prepare
    3737
    38 all: prepare soft.bin
     38all: prepare soft.elf
    3939       
    4040
    41 ## merge all *.bin to soft.bin
    42 soft.bin: boot.bin sys.bin map.bin apps
     41## merge all *.elf to soft.elf
     42soft.elf: boot.elf sys.elf map.bin apps
    4343        make -C mover
    4444        mover/mover.x -sm map.bin
     
    5555
    5656## system compilation
    57 sys.bin: $(SYS_OBJS) $(SYS_PATH)/sys.ld
    58         (cd $(BUILD_DIR_NAME); $(LD) -o ../$@ -T ../$(SYS_PATH)/sys.ld $(SYS_OBJS) )
    59         (cd $(BUILD_DIR_NAME); $(DU) -D ../$@ > $@.txt)
     57sys.elf: $(SYS_OBJS) $(SYS_PATH)/sys.ld
     58        (cd $(BUILD_DIR_NAME); $(LD) -o $@ -T ../$(SYS_PATH)/sys.ld $(SYS_OBJS) )
     59        (cd $(BUILD_DIR_NAME); $(DU) -D $@ > $@.txt)
    6060
    6161switch.o: $(SYS_PATH)/switch.s giet_config.h
     
    9292
    9393## boot compilation
    94 boot.bin: $(BOOT_OBJS) $(BOOT_PATH)/boot.ld
    95         (cd $(BUILD_DIR_NAME); $(LD) -o ../$@ -T ../$(BOOT_PATH)/boot.ld $(BOOT_OBJS) )
    96         (cd $(BUILD_DIR_NAME); $(DU) -D ../$@ > $@.txt)
     94boot.elf: $(BOOT_OBJS) $(BOOT_PATH)/boot.ld
     95        (cd $(BUILD_DIR_NAME); $(LD) -o $@ -T ../$(BOOT_PATH)/boot.ld $(BOOT_OBJS) )
     96        (cd $(BUILD_DIR_NAME); $(DU) -D $@ > $@.txt)
    9797
    9898reset.o: $(BOOT_PATH)/reset.S giet_config.h
     
    110110### special rules
    111111clean:
    112         rm -f *.o *.bin *.txt core *~  2>$(TRASH)
     112        rm -f *.o *.elf *.bin *.txt core *~  2>$(TRASH)
    113113        make clean -C xml/ 2>$(TRASH)
    114114        make clean -C mover/ 2>$(TRASH)
  • soft/giet_vm/apps/Makefile

    r160 r161  
    1414SYS_PATH        = $(SOFT_PATH)sys
    1515DUMP_PATH       = $(SOFT_PATH)  #where goes the generated *.bin
    16 BIN_PATH        = $(SOFT_PATH)
    1716MAP_PATH    = $(SOFT_PATH)xml
    1817BUILD_PATH      = $(SOFT_PATH)/build/
     18BIN_PATH        = $(SOFT_PATH)/build/
    1919
    2020INCLUDE         = -I$(LIB_PATH) -I$(SOFT_PATH) -I$(SYS_PATH) -I$(MAP_PATH)
  • soft/giet_vm/apps/fifo/Makefile

    r160 r161  
    88OBJS= main.o
    99
    10 all: $(APP_NAME).bin
     10all: $(APP_NAME).elf
    1111
    12 BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).bin
     12BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).elf
    1313
    14 $(APP_NAME).bin: $(OBJS) $(APP_NAME).ld
     14$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
    1515        $(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
    1616        $(DU) -D $(BIN_NAME_PATH) > $@.txt
     
    2222
    2323clean:
    24         rm -f *.o *.bin *.txt core *~ 2>$(TRASH)
     24        rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
    2525        rm $(BIN_NAME_PATH) 2>$(TRASH)
  • soft/giet_vm/apps/hello/Makefile

    r160 r161  
    77OBJS= main.o
    88
    9 all: $(APP_NAME).bin
     9all: $(APP_NAME).elf
    1010
    11 BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).bin
     11BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).elf
    1212
    13 $(APP_NAME).bin: $(OBJS) $(APP_NAME).ld
     13$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
    1414        $(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
    1515        $(DU) -D $(BIN_NAME_PATH) > $@.txt
     
    2121
    2222clean:
    23         rm -f *.o *.bin *.txt core *~ 2>$(TRASH)
     23        rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
    2424        rm $(BIN_NAME_PATH) 2>$(TRASH)
  • soft/giet_vm/apps/numsplit/Makefile

    r160 r161  
    1111SRCS=$(patsubst %.o,%.c,$(OBJS))
    1212
    13 all: $(APP_NAME).bin
     13all: $(APP_NAME).elf
    1414
    1515.PHONY: compile
    1616
    17 BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).bin
     17BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).elf
    1818
    19 $(APP_NAME).bin: compile $(APP_NAME).ld
     19$(APP_NAME).elf: compile $(APP_NAME).ld
    2020        $(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
    2121        $(DU) -D $(BIN_NAME_PATH) > $@.txt
     
    2626
    2727clean:
    28         rm -f *.o *.bin *.txt core *~ 2>$(TRASH)
     28        rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
    2929        rm $(BIN_NAME_PATH) 2>$(TRASH)
  • soft/giet_vm/apps/pgcd/Makefile

    r160 r161  
    77OBJS= main.o
    88
    9 all: $(APP_NAME).bin
     9all: $(APP_NAME).elf
    1010
    11 BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).bin
     11BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).elf
    1212
    13 $(APP_NAME).bin: $(OBJS) $(APP_NAME).ld
     13$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
    1414        $(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
    1515        $(DU) -D $(BIN_NAME_PATH) > $@.txt
     
    2121
    2222clean:
    23         rm -f *.o *.bin *.txt core *~ 2>$(TRASH)
     23        rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
    2424        rm $(BIN_NAME_PATH) 2>$(TRASH)
  • soft/giet_vm/apps/router/Makefile

    r160 r161  
    88OBJS= main.o
    99
    10 all: $(APP_NAME).bin
     10all: $(APP_NAME).elf
    1111
    12 BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).bin
     12BIN_NAME_PATH=$(BIN_PATH)$(APP_NAME).elf
    1313
    14 $(APP_NAME).bin: $(OBJS) $(APP_NAME).ld
     14$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
    1515        $(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
    1616        $(DU) -D $(BIN_NAME_PATH) > $@.txt
     
    2121
    2222clean:
    23         rm -f *.o *.bin *.txt core *~ 2>$(TRASH)
     23        rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
    2424        rm $(BIN_NAME_PATH) 2>$(TRASH)
  • soft/giet_vm/map.xml

    r160 r161  
    5959                        psegname  = "PSEG_ROM"
    6060                        ident     = "1" >
    61                                         <vobj   name    = "boot_code_data"
     61                                        <vobj   name    = "seg_boot"
    6262                                                        type    = "ELF"
    6363                                                        length  = "0x00008000"
    64                                                         binpath = "boot.bin"
     64                                                        binpath = "build/boot.elf"
    6565                                                        />
    6666                                </vseg>
     
    8181                        psegname  = "PSEG_ROM"
    8282                        ident     = "1" >
    83                                         <vobj   name    = "boot_mapping"
     83                                        <vobj   name    = "seg_mapping"
    8484                                                        type    = "ELF"
    8585                                                        length  = "0x00004000"
     
    9393                        psegname  = "PSEG_RAK"
    9494                        ident     = "1" >
    95                                         <vobj   name    = "kernel_code"
     95                                        <vobj   name    = "seg_kernel_code"
    9696                                                        type    = "ELF"
    9797                                                        length  = "0x00010000"
    98                                                         binpath = "sys.bin"
     98                                                        binpath = "build/sys.elf"
    9999                                                        />
    100100                                </vseg>
     
    105105                        psegname  = "PSEG_RAK"
    106106                        ident     = "1" >
    107                                         <vobj   name    = "kernel_data"
     107                                        <vobj   name    = "seg_kernel_data"
    108108                                                        type    = "ELF"
    109109                                                        length  = "0x00010000"
    110                                                         binpath = "sys.bin"
     110                                                        binpath = "build/sys.elf"
    111111                                                        />
    112112                                </vseg>
     
    117117                        psegname  = "PSEG_RAK"
    118118                        ident     = "1" >
    119                                         <vobj   name    = "kernel_uncdata"
     119                                        <vobj   name    = "seg_kernel_uncdata"
    120120                                                        type    = "ELF"
    121121                                                        length  = "0x00010000"
    122                                                         binpath = "sys.bin"
     122                                                        binpath = "build/sys.elf"
    123123                                                        />
    124124                                </vseg>
     
    129129                        psegname  = "PSEG_RAK"
    130130                        ident     = "1" >
    131                                         <vobj   name    = "kernel_init"
     131                                        <vobj   name    = "seg_kernel_init"
    132132                                                        type    = "ELF"
    133133                                                        length  = "0x00010000"
    134                                                         binpath = "sys.bin"
     134                                                        binpath = "build/sys.elf"
    135135                                                        />
    136136                                </vseg>
     
    200200          <vspaceset>
    201201                <vspace name    = "router"
    202                         funcs   = "data"
     202                        funcs   = "seg_data_router"
    203203                        ttys    = "4" >
    204204
     
    208208                                psegname  = "PSEG_RAU"
    209209                                ident     = "0" >
    210                                                         <vobj   name    = "data"
     210                                                        <vobj   name    = "seg_data_router"
    211211                                                                        type    = "ELF"
    212212                                                                        length  = "0x00010000"
    213                                     binpath = "router.bin"
     213                                    binpath = "build/router.elf"
    214214                                                                        />
    215215                                                </vseg>
     
    220220                                psegname  = "PSEG_RAU"
    221221                                ident     = "0" >
    222                                                         <vobj   name    = "code"
     222                                                        <vobj   name    = "seg_code_router"
    223223                                                                        type    = "ELF"
    224224                                                                        length  = "0x00010000"
    225                                     binpath = "router.bin"
     225                                    binpath = "build/router.elf"
    226226                                                                        />
    227227                                                </vseg>
     
    278278                                vbase     = "0x00050000"
    279279                                mode      = "__WU"
    280                                 psegname  = "PSEG_RAU"
    281                                 mwmr      = "1" >
     280                                psegname  = "PSEG_RAU" >
    282281                                                        <vobj   name    = "mwmr_in"
    283282                                                                        type    = "MWMR"
     
    288287                                vbase     = "0x00060000"
    289288                                mode      = "__WU"
    290                                 psegname  = "PSEG_RAU"
    291                                 mwmr      = "1" >
     289                                psegname  = "PSEG_RAU">
    292290                                                        <vobj   name    = "mwmr_out"
    293291                                                                        type    = "MWMR"
     
    322320
    323321                <vspace name    = "hello"
    324                         funcs   = "data"
     322                        funcs   = "seg_data_hello"
    325323                        ttys    = "1" >
    326324
     
    330328                                psegname  = "PSEG_RAU"
    331329                                ident     = "0" >
    332                                                         <vobj   name    = "data"
     330                                                        <vobj   name    = "seg_data_hello"
    333331                                                                        type    = "ELF"
    334332                                                                        length    = "0x00010000"
    335                                     binpath = "hello.bin"/>
     333                                    binpath = "build/hello.elf"/>
    336334                                                </vseg>
    337335
     
    341339                                psegname  = "PSEG_RAU"
    342340                                ident     = "0" >
    343                                                         <vobj   name    = "code"
     341                                                        <vobj   name    = "seg_code_hello"
    344342                                                                        type    = "ELF"
    345343                                                                        length    = "0x00010000"
    346                                     binpath = "hello.bin"/>
     344                                    binpath = "build/hello.elf"/>
    347345                                                </vseg>
    348346
     
    378376
    379377                <vspace name    = "pgcd"
    380                         funcs   = "data"
     378                        funcs   = "seg_data_pgcd"
    381379                        ttys    = "1" >
    382380
     
    386384                                psegname  = "PSEG_RAU"
    387385                                ident     = "0" >
    388                                                         <vobj   name    = "data"
     386                                                        <vobj   name    = "seg_data_pgcd"
    389387                                                                        type    = "ELF"
    390388                                                                        length  = "0x00010000"
    391                                     binpath = "pgcd.bin" />
     389                                    binpath = "build/pgcd.elf" />
    392390                                                </vseg>
    393391
     
    409407                                psegname  = "PSEG_RAU"
    410408                                ident     = "0" >
    411                                                         <vobj   name    = "code"
     409                                                        <vobj   name    = "seg_code_pgcd"
    412410                                                                        type    = "ELF"
    413411                                                                        length  = "0x00010000"
    414                                     binpath = "pgcd.bin" />
     412                                    binpath = "build/pgcd.elf" />
    415413                                                </vseg>
    416414
     
    434432
    435433                <vspace name    = "numsplit"
    436                         funcs   = "data"
     434                        funcs   = "seg_data_numsplit"
    437435                        ttys    = "2" >
    438436
     
    442440                                psegname  = "PSEG_RAU"
    443441                                ident     = "0" >
    444                                                         <vobj   name    = "data"
     442                                                        <vobj   name    = "seg_data_numsplit"
    445443                                                                        type    = "ELF"
    446444                                                                        length  = "0x00010000"
    447                                     binpath = "numsplit.bin"
     445                                    binpath = "build/numsplit.elf"
    448446                                                                        />
    449447                                                </vseg>
     
    454452                                psegname  = "PSEG_RAU"
    455453                                ident     = "0" >
    456                                                         <vobj   name    = "code"
     454                                                        <vobj   name    = "seg_code_numsplit"
    457455                                                                        type    = "ELF"
    458456                                                                        length  = "0x00010000"
    459                                     binpath = "numsplit.bin"
     457                                    binpath = "build/numsplit.elf"
    460458                                                                        />
    461459                                                </vseg>
     
    494492                                vbase     = "0x00050000"
    495493                                mode      = "__WU"
    496                                 psegname  = "PSEG_RAU"
    497                                 mwmr      = "1" >
     494                                psegname  = "PSEG_RAU">
    498495                                                        <vobj   name    = "mwmr"
    499496                                                                        type    = "MWMR"
  • soft/giet_vm/mover/include/mover.h

    r160 r161  
    6666    mutable std::map<std::string, elfpp::object*> m_loaders;
    6767    PSegHandler m_psegh;
    68     PathHandler m_pathh;
     68    PathHandler m_pathHandler;
    6969   
    7070    bool m_ginit;
     
    7373    void* load_bin(std::string name);
    7474    elfpp::section* get_sect_by_addr(elfpp::object *loader, unsigned int addr);
     75    elfpp::section* get_sect_by_name(elfpp::object *loader, std::string name);
    7576
    7677public:
  • soft/giet_vm/mover/include/path_handler.h

    r160 r161  
    2323    std::vector<std::string> split(const std::string &s, char delim);
    2424
     25    //extract the path without the filename
    2526    std::string getFilePath(const std::string& filepath);
    2627
     
    3031    PathHandler(const std::string& filepath);
    3132
    32     std::string getFullName(const std::string& filepath) const;
     33    //return the fullPath relative to where execution is done.
     34    std::string getFullPath(const std::string& filepath) const;
    3335
    3436    std::string getFileName(const std::string& filepath);
  • soft/giet_vm/mover/main.cpp

    r160 r161  
    77{
    88    std::string map_path("");
    9     std::string soft_path("soft.bin");
     9    std::string soft_path("soft.elf");
    1010    bool show = false;
    1111    bool show_map = false;
  • soft/giet_vm/mover/src/mover.cpp

    r160 r161  
    55 * This file is part of SoCLib, GNU LGPLv2.1.
    66 *
    7  * SoCLib is free software; you can redistribute vs and/or modify vs
     7 * SoCLib is free software; you can redistribute vSO and/or modify vSO
    88 * under the terms of the GNU Lesser General Public License as published
    99 * by the Free Software Foundation; version 2.1 of the License.
    1010 *
    11  * SoCLib is distributed in the hope that vs will be useful, but
     11 * SoCLib is distributed in the hope that vSO will be useful, but
    1212 * WITHOUT ANY WARRANTY; without even the implied warranty of
    1313 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     
    4040
    4141
    42 //#define MOVER_DEBUG
     42#define MOVER_DEBUG
    4343
    4444Mover::Mover( const std::string &filename,
    4545        const size_t pageSize)
    4646        :m_path(filename),
    47         m_pathh(filename),
     47        m_pathHandler(filename),
    4848        m_ginit(false),
    4949        m_generator(new elfpp::object())
    5050{
    51     //m_generator = new elfpp::object();
    52    
    53     //m_pathh =
    54  
     51   
    5552    PSeg::setPageSize(pageSize);
    5653
    5754    load_bin(m_path);
     55
    5856#ifdef MOVER_DEBUG
    5957    std::cout << "Binary file path: " << m_path << std::endl;
     
    9492}
    9593
     94//TODO:delete
    9695elfpp::section* Mover::get_sect_by_addr(elfpp::object *loader, unsigned int addr)
    9796{
     
    103102            continue;
    104103        if(sect->get_load_address() == addr) //load_addr ?
     104        {
     105            return (&*sect);
     106        }
     107    }
     108    return NULL;
     109}
     110elfpp::section* Mover::get_sect_by_name(elfpp::object *loader, std::string name)
     111{
     112#ifdef MOVER_DEBUG
     113    std::cout << "get_sect_by_name " << name << std::endl;
     114#endif
     115    FOREACH( sect, loader->get_section_table() )
     116    {
     117        assert(&*sect != NULL);
     118        elfpp::sh_flags_e eflags = sect->get_flags();
     119        if ( !(eflags & elfpp::SHF_ALLOC) )
     120            continue;
     121
     122#ifdef MOVER_DEBUG
     123        std::cout << "Trying " << sect->get_name() << std::endl;
     124#endif
     125        if(!(sect->get_name()).compare(name))
    105126        {
    106127            return (&*sect);
     
    208229    mapping_vspace_t*   vspace  = get_vspace_base ( header );;
    209230    mapping_vseg_t*         vseg    = get_vseg_base ( header );
     231    mapping_vobj_t*         vobj    = get_vobj_base ( header );
    210232
    211233    // header
     
    240262         << " + ident = " << (bool)vseg[vseg_id].ident << std::endl
    241263         << " + psegname" << pseg[vseg[vseg_id].psegid].name << std::endl;
    242         //TODO print vobjs
    243         /*
    244         for ( vobj_id = vseg[vseg_id].vobj_offset ; vobj_id < vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs ; vobj_id++ )
    245         {
    246             _tty_printf("\t vobjs     = \"%s\"\n",     vobj[vobj_id].name);
    247             _tty_printf("\t name     = \"%s\"\n",     vobj[vobj_id].name);
    248             _tty_printf("\t type     = \"%s\" \n", vobj[vobj_id].type);
    249             _tty_printf("\t length   = \"0x%x\" \n",   vobj[vobj_id].length);
    250             _tty_printf("\t align    = \"%d\" \n",   vobj[vobj_id].align);
    251             _tty_printf("\t binpath  = \"%s\" \n",   vobj[vobj_id].binpath);
    252             _tty_printf("\t \n");
    253         }*/
     264        for(size_t vobj_id = vseg[vseg_id].vobj_offset ; vobj_id < vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs ; vobj_id++ )
     265        {
     266            std::cout << "\t vobjs     = "<<     vobj[vobj_id].name << std::endl;
     267            std::cout<<"\t name     =" << vobj[vobj_id].name <<std::endl;
     268            std::cout<<"\t type     =" << vobj[vobj_id].type <<std::endl;
     269            std::cout<<"\t length   =" << vobj[vobj_id].length <<std::endl;
     270            std::cout<<"\t align    =" << vobj[vobj_id].align <<std::endl;
     271            std::cout<<"\t binpath  =" << vobj[vobj_id].binpath <<std::endl;
     272            std::cout<<"\t \n";
     273        }
    254274    }
    255275
     
    274294             << " + ident = " <<  (bool)vseg[vseg_id].ident  << std::endl
    275295             << " + psegname = " << pseg[vseg[vseg_id].psegid].name  << std::endl << std::endl;
    276         //TODO print vobjs
    277         /*
    278             for ( vobj_id = vseg[vseg_id].vobj_offset ; vobj_id < vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs ; vobj_id++ )
     296            for(size_t vobj_id = vseg[vseg_id].vobj_offset ; vobj_id < vseg[vseg_id].vobj_offset + vseg[vseg_id].vobjs ; vobj_id++ )
    279297            {
    280                 _tty_printf("\t\t vobjs     = \"%s\"\n",     vobj[vobj_id].name);
    281                 _tty_printf("\t\t name     = \"%s\"\n",     vobj[vobj_id].name);
    282                 _tty_printf("\t\t type     = \"%s\" \n", vobj[vobj_id].type);
    283                 _tty_printf("\t\t length   = \"0x%x\" \n",   vobj[vobj_id].length);
    284                 _tty_printf("\t\t align    = \"%d\" \n",   vobj[vobj_id].align);
    285                 _tty_printf("\t\t binpath  = \"%s\" \n\n",   vobj[vobj_id].binpath);
     298                std::cout<<"\t\t vobjs     =" << vobj[vobj_id].name <<std::endl;
     299                std::cout<<"\t\t name     =" << vobj[vobj_id].name <<std::endl;
     300                std::cout<<"\t\t type     =" << vobj[vobj_id].type <<std::endl;
     301                std::cout<<"\t\t length   =" << vobj[vobj_id].length <<std::endl;
     302                std::cout<<"\t\t align    =" << vobj[vobj_id].align <<std::endl;
     303                std::cout<<"\t\t binpath  =" << vobj[vobj_id].binpath <<std::endl;
    286304            }
    287         */
    288305        }
    289306
     
    311328    bool aligned = false;
    312329
    313     VSeg     * vs = new VSeg;
    314     std::string s(vseg->name);
    315     vs->m_name = s;
    316 
    317     vs->m_vma = vseg->vbase;
     330    VSeg   *vSO = new VSeg;
     331
     332    vSO->m_name = std::string(vseg->name);
     333    vSO->m_vma = vseg->vbase;
     334    vSO->m_lma = ps->nextLma();
    318335
    319336    cur_vaddr = vseg->vbase;
    320337    cur_paddr = ps->nextLma();
    321    
    322     vs->m_length = 0;
     338
    323339    mapping_vobj_t* cur_vobj;
    324 
    325340    size_t simple_size = 0; //for debug
    326341   
    327342#ifdef MOVER_DEBUG
    328     std::cout << "--------------------vseg_map---------------------" << std::endl;
     343    std::cout << "--------------------vseg_map "<< vseg->name <<"---------------------" << std::endl;
    329344#endif
    330345   
     
    334349
    335350#ifdef MOVER_DEBUG
    336         std::cout << "cur vobj("<< vobj_id <<"): " << cur_vobj->name << " (" <<cur_vobj->vaddr << ")"
    337                         << " size "<< cur_vobj->length << " type " <<  cur_vobj->type << std::endl;
     351        std::cout << "current vobj("<< vobj_id <<"): " << cur_vobj->name << " (" <<cur_vobj->vaddr << ")"
     352                        << " size: "<< cur_vobj->length << " type: " <<  cur_vobj->type << std::endl;
    338353#endif
    339354
    340355        if(cur_vobj->type == ELF)
    341356        {
    342 
    343357            if(!first)
    344358                throw soclib::exception::RunTimeError(std::string("elf vobj type, must be placed first in a vseg"));
    345359
    346             std::string f(m_pathh.getFullName(std::string(cur_vobj->binpath)));
    347360            size_t elf_size;
    348 #ifdef MOVER_DEBUG
    349             std::cout << "Handling: " << f << " ..." << std::endl;
    350 #endif
    351             if(!f.compare(m_path))    //local blob: map_info
     361            std::string filePath(m_pathHandler.getFullPath(std::string(cur_vobj->binpath)));
     362#ifdef MOVER_DEBUG
     363            std::cout << "Handling: " << filePath << " ..." << std::endl;
     364#endif
     365            if(!filePath.compare(m_path))    //local blob: map_info
    352366            {
    353                 /**creating a new session */
     367#ifdef MOVER_DEBUG
     368                std::cout << "Found the vseg of the mapping info" << std::endl;
     369#endif
     370                /**creating a new section */
    354371                sect = new elfpp::section(*m_generator, elfpp::SHT_PROGBITS);
    355372
    356                 sect->set_name(std::string("seg_mapping_info"));
     373                sect->set_name(std::string(cur_vobj->name));
    357374                sect->set_flags(elfpp::SHF_ALLOC | elfpp::SHF_WRITE);
    358375                sect->set_size(this->m_size);
    359 
    360                 sect->set_content(m_data);               
     376                sect->set_content(this->m_data);               
    361377
    362378                elf_size = this->m_size;       
    363                 assert((elf_size >0) and "MAPINFO file empty !?");
     379                assert((elf_size >0) and "MAPPING INFO file is empty !?");
    364380            }
    365381            else
    366382            {
    367383#ifdef MOVER_DEBUG
    368                 std::cout << "ELF vseg found " << std::endl;
    369 #endif
    370                 if(m_loaders.count(f) == 0 )
    371                     m_loaders[f] = new elfpp::object(f);
    372                 elfpp::object* loader = m_loaders[f];
    373                 //elfpp::object* loader = (new elfpp::object(f));//TODO:free!
    374 
     384                std::cout << "Found an ELF vseg" << std::endl;
     385#endif
     386                if(m_loaders.count(filePath) == 0 )
     387                    m_loaders[filePath] = new elfpp::object(filePath);
     388                elfpp::object* loader = m_loaders[filePath];//TODO:free!?
     389
     390                //sect =  get_sect_by_name(loader, std::string(cur_vobj->name));
     391                //assert(( sect->get_vaddr() == cur_vaddr) and "Vaddr doesn't match!");
    375392                sect =  get_sect_by_addr(loader, cur_vaddr);
    376393                assert(sect and "No section found");
    377394
     395                sect->set_name(std::string(cur_vobj->name));
     396
    378397                elf_size = sect->get_size();
    379 
    380398                assert((elf_size >0) and "ELF section empty ?");
     399
    381400                if(!m_ginit)
    382401                {
    383                     //we suppose the header is the same for the all the bins
     402                    /** Initailising the header of the generator from the first binary
     403                    * we suppose the header is the same for all the binarys
     404                    * */
    384405                    m_generator->copy_info(*loader);
    385406                    m_ginit=true;
    386407                }
    387408            }
    388             cur_vobj->length = elf_size;//set the actual size
     409
    389410            if(elf_size > cur_vobj->length)
    390                std::cout << "Warning, specified elf type vobj ("<< cur_vobj->name  <<") size is "<< cur_vobj->length
    391                          << ", the actual size is "  << elf_size  << std::endl;
    392 
    393             vs->m_file = f;
    394             vs->m_loadable = true;       
     411                std::cout << "Warning, specified elf type vobj ("<<
     412                cur_vobj->name  <<") size is "<< cur_vobj->length << ", the actual size is "
     413                << elf_size  << std::endl;
     414
     415            cur_vobj->length = elf_size;//set the true size of this ELF vobj
     416
     417            vSO->m_file = filePath;
     418            vSO->m_loadable = true;       
    395419        }
    396420        first = false;
    397421
     422        //aligning the vobj->paddr if necessary
    398423        if(cur_vobj->align)
    399424        {
     
    401426            aligned = true;
    402427        }
    403 
    404428
    405429        cur_vaddr += cur_vobj->length;
     
    411435    assert((cur_paddr >= ps->nextLma() ));
    412436
    413     vs->m_length = (cur_paddr - ps->nextLma()); //pageAlign is done by the psegs
     437    vSO->m_length = (cur_paddr - ps->nextLma()); //pageAlign is done by the psegs
    414438
    415439#ifdef MOVER_DEBUG
    416440    if(aligned)
    417441    {
    418         std::cout << "vseg base "<< std::hex << ps->nextLma() <<(ps->nextLma()+simple_size)  <<" size " << std::dec << simple_size << std::endl;
    419         std::cout << "vseg aligned to: base: " << std::hex << ps->nextLma()
    420             <<" to "<< std::hex << ps->nextLma()+vs->m_length<< " size " << std::dec << vs->m_length << std::endl;
     442        std::cout << "vseg base "<< std::hex << ps->nextLma()
     443        <<(ps->nextLma()+simple_size)  <<" size " << std::dec << simple_size <<
     444        std::endl;
     445
     446        std::cout << "vseg aligned to: base: " << std::hex << ps->nextLma()
     447        <<" to "<< std::hex << ps->nextLma()+vSO->m_length<< " size " << std::dec <<
     448        vSO->m_length << std::endl;
    421449    }
    422450#endif
    423451     
    424     vs->m_ident = vseg->ident;     
     452    vSO->m_ident = vseg->ident;     
    425453
    426454    //set the lma
    427455    if ( vseg->ident != 0 )            // identity mapping required
    428         ps->addIdent( *vs );
     456        ps->addIdent( *vSO );
    429457    else
    430         ps->add( *vs );
     458        ps->add( *vSO );
    431459   
    432460    if(!sect)
    433461        return;
    434462
    435     //std::cout << "section: "<< *sect <<"\n seted to: " << (*vs) << std::endl;
    436     sect->set_vaddr((*vs).lma());
     463    //std::cout << "section: "<< *sect <<"\n seted to: " << (*vSO) << std::endl;
     464    sect->set_vaddr((*vSO).lma());
    437465    m_generator->add_section(*(new elfpp::section(*sect)));
    438466
  • soft/giet_vm/mover/src/path_handler.cpp

    r160 r161  
    3030}
    3131   
    32 std::string PathHandler::getFullName(const std::string& filepath) const
     32std::string PathHandler::getFullPath(const std::string& filepath) const
    3333{
    3434    return dirPath+filepath;
  • soft/giet_vm/sys/sys_handler.c

    r160 r161  
    1212
    1313#include <sys_handler.h>
    14 //#include <boot_handler.h>
    1514#include <drivers.h>
    1615#include <ctx_handler.h>
     
    130129    }
    131130}
     131
    132132/////////////////////////////////////////////////////////////////////////////
    133133// _vobj_get_base()
Note: See TracChangeset for help on using the changeset viewer.