[efi] Use POSIX version of basename() in elf2efi.c
authorMichael Brown <mcb30@etherboot.org>
Tue, 31 Mar 2009 06:07:44 +0000 (07:07 +0100)
committerMichael Brown <mcb30@etherboot.org>
Tue, 31 Mar 2009 06:07:44 +0000 (07:07 +0100)
This is required in order to build on Mac OS X.

Suggested-by: Joshua Oreman <oremanj@rwcr.net>
src/util/elf2efi.c

index 886777d..bb766bd 100644 (file)
@@ -29,6 +29,7 @@
 #include <bfd.h>
 #include <gpxe/efi/efi.h>
 #include <gpxe/efi/IndustryStandard/PeImage.h>
 #include <bfd.h>
 #include <gpxe/efi/efi.h>
 #include <gpxe/efi/IndustryStandard/PeImage.h>
+#include <libgen.h>
 
 #define eprintf(...) fprintf ( stderr, __VA_ARGS__ )
 
 
 #define eprintf(...) fprintf ( stderr, __VA_ARGS__ )
 
@@ -658,6 +659,7 @@ static void write_pe_file ( struct pe_header *pe_header,
  */
 static void elf2pe ( const char *elf_name, const char *pe_name,
                     struct options *opts ) {
  */
 static void elf2pe ( const char *elf_name, const char *pe_name,
                     struct options *opts ) {
+       char pe_name_tmp[ strlen ( pe_name ) + 1 ];
        bfd *bfd;
        asymbol **symtab;
        asection *section;
        bfd *bfd;
        asymbol **symtab;
        asection *section;
@@ -669,6 +671,9 @@ static void elf2pe ( const char *elf_name, const char *pe_name,
        struct pe_header pe_header;
        FILE *pe;
 
        struct pe_header pe_header;
        FILE *pe;
 
+       /* Create a modifiable copy of the PE name */
+       memcpy ( pe_name_tmp, pe_name, sizeof ( pe_name_tmp ) );
+
        /* Open the file */
        bfd = open_input_bfd ( elf_name );
        symtab = read_symtab ( bfd );
        /* Open the file */
        bfd = open_input_bfd ( elf_name );
        symtab = read_symtab ( bfd );
@@ -703,7 +708,7 @@ static void elf2pe ( const char *elf_name, const char *pe_name,
 
        /* Create the .reloc section */
        *(next_pe_section) = create_debug_section ( &pe_header,
 
        /* Create the .reloc section */
        *(next_pe_section) = create_debug_section ( &pe_header,
-                                                   basename ( pe_name ) );
+                                                   basename ( pe_name_tmp ) );
        next_pe_section = &(*next_pe_section)->next;
 
        /* Write out PE file */
        next_pe_section = &(*next_pe_section)->next;
 
        /* Write out PE file */