2017-01-05 13 views
0

私は小さなOSを構築していますが、NASM、GCC、GNU Binutilsを使ってリンクするプロセスに問題があります。私はこれらのファイルtoghether GCC NASMとGCCのデバッグ情報がありません

からドワーフデバッグ情報と

  • ELF32オブジェクトファイルをリンクするとNASMからドワーフデバッグ情報と

    • ELF32オブジェクトファイル:
      私はオブジェクトファイルの複数の種類をリンクしていますカスタムリンカスクリプトを使って、デガブ情報を再読み込みすると、リンクされた最初のオブジェクトファイル(デバッグ情報は実効アドレス順)でしか見つかりません。参照目的のために

      、私はコンパイルするために使用するラインのカップルを投稿します:

      nasm -g -felf32 -F dwarf entry.asm -o "build/entry.o" 
      gcc -c main.c -o "build/main.o" -m32 -mtune=i386 -gdwarf 
      

      そしてリンク:。私はGCC vを使用し

      ld -Tlinker.ld -m elf_i386 --nmagic -nostdlib -static -o "build/bootload.elf" -M -g > "build/map.txt" 
      

      6.2、BinutilsのV。 2.27およびNASM v。2.12
      必要に応じてリンカースクリプトのビットを投稿します。助けてください、行情報なしでデバッグは非常に迷惑です。

  • +0

    これが原因かどうかをリンカスクリプトなしで試したことがありますか? – Jester

    +0

    私は特定のアドレスに特定のコードを入れる必要があるため、リンカスクリプトが必要です。 – JPSgfx

    +0

    私はそれが問題の原因であるかどうかを知ることは有用であることを理解しています。 – Jester

    答えて

    0

    修正済み。
    @Jester(感謝)のような問題は、リンカースクリプトにありました。
    最終的なELFファイルの.textセクションの中にすべてのオブジェクトファイルセクションを配置していました。

    OLD:

    .text : AT(0x800) { 
        test.o(*); 
    } 
    

    NEW:

    .text : AT(0x800) { 
        test.o(.text); 
        test.o(.data); 
        test.o(.bss); 
    } 
    

    すべてこのコードは、リンカスクリプトのためである私は、古いものと新しいもの、修正動作を説明するためにいくつかのコードを投稿します。

    関連する問題