New Ticket     Tickets     Wiki     Browse Source     Timeline     Roadmap     Ticket Reports     Search

Changeset 82809


Ignore:
Timestamp:
08/20/11 16:43:32 (4 years ago)
Author:
fotanus@…
Message:

fix bug on list_dlibs

Location:
branches/gsoc11-post-destroot/base/src/pextlib1.0
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/gsoc11-post-destroot/base/src/pextlib1.0/macho.c

    r82773 r82809  
    8686 
    8787Tcl_Obj * check_magic(const uint32_t magic, macho_input_t **input, bool * universal, uint32_t (**swap32)(uint32_t), const struct mach_header ** header, const struct fat_header ** fat_header, size_t * header_size){ 
     88        const struct mach_header_64 *header64; 
    8889        switch (magic) { 
    8990                case MH_CIGAM: 
    90                 case MH_CIGAM_64: 
    9191                        *swap32 = macho_swap32; 
    9292                        /* Fall-through */ 
    9393 
    9494                case MH_MAGIC: 
    95                 case MH_MAGIC_64: 
    9695                        *header_size = sizeof(**header); 
    9796                        *header = macho_read(*input, (*input)->data, *header_size); 
     
    101100                        break; 
    102101 
     102                case MH_CIGAM_64: 
     103                        *swap32 = macho_swap32; 
     104                        /* Fall-through */ 
     105 
     106                case MH_MAGIC_64: 
     107                        *header_size = sizeof(*header64); 
     108                        header64 = macho_read(*input, (*input)->data, sizeof(*header64)); 
     109                        if (header64 == NULL) 
     110                                return (Tcl_Obj *)TCL_ERROR; 
     111 
     112                        /* The 64-bit header is a direct superset of the 32-bit header */ 
     113                        *header = (struct mach_header *) header64; 
     114                        break; 
     115 
    103116                case FAT_CIGAM: 
    104117                case FAT_MAGIC: 
     
    137150                return (Tcl_Obj *)TCL_ERROR; 
    138151 
    139  
    140152        /* Check file header magic */ 
    141153        if(check_magic(*magic, &input, &universal, &swap32, &header, &fat_header, &header_size) == (Tcl_Obj *)TCL_ERROR){ 
     
    153165        /* Parse the Mach-O load commands */ 
    154166        cmd = macho_offset(input, header, header_size, sizeof(struct load_command)); 
    155         if (cmd == NULL) 
    156                 return (Tcl_Obj *)TCL_ERROR; 
     167        if (cmd == NULL){ 
     168                return (Tcl_Obj *)TCL_ERROR; 
     169        } 
    157170        ncmds = swap32(header->ncmds); 
    158171 
     
    239252Tcl_Obj * list_macho_archs_l(macho_input_t *input, Tcl_Interp *interp, Tcl_Obj * archs_list) { 
    240253        const struct mach_header *header; 
    241         const struct mach_header_64 *header64; 
    242254        size_t header_size; 
    243255        const NXArchInfo *archInfo; 
  • branches/gsoc11-post-destroot/base/src/pextlib1.0/tests/macho.tcl

    r82430 r82809  
    33 
    44        set test_file /bin/sh 
     5        #set test_file /opt/local/lib/libevent_pthreads-2.0.5.dylib 
    56        set archs [list_archs $test_file] 
    67        set libs [list_dlibs $test_file] 
Note: See TracChangeset for help on using the changeset viewer.