<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/68592>68592</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Crash / incorrect .debug_line when assembling file with .include directive
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            debuginfo
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          john-brawn-arm
      </td>
    </tr>
</table>

<pre>
    If we have the following in tmp.s
```
        .text
        mov x0, #0
        .include "include.s"
```
and the following in include.s
```
        mov x0, #1
```
then ``clang --target=aarch64-none-elf -c -g tmp.s`` crashes with
```
clang: ../src/llvm-project/llvm/lib/Support/SourceMgr.cpp:109: unsigned int llvm::SourceMgr::SrcBuffer::getLineNumberSpecialized(const char*) const [with T = unsigned char]: Assertion `Ptr >= BufStart && Ptr <= Buffer->getBufferEnd()' failed.
```
If I insert blank lines at the start and end of of include.s
```

        mov x0, #1

```
then an object is generated but looking at the .debug_line output of ``llvm-dwarfdump --all`` it has
```
file_names[  1]:
 name: "tmp.s"
      dir_index: 0
       mod_time: 0x00000000
 length: 0x00000000

Address            Line   Column File   ISA Discriminator Flags
------------------ ------ ------ ------ --- ------------- -------------
0x0000000000000000      2      0      1   0 0  is_stmt
0x0000000000000004      2      0      1   0 0  is_stmt
0x0000000000000008      2      0      1   0             0 is_stmt end_sequence
```
the instruction at address 0x4 is the mov from include.s, but the line information places it in tmp.s.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVV9vrLYT_TTmZQRizUKWBx422awU6ferKqXvK2MP4HuNTf0nm_bTVzakSXo3V5U6Wi2MPTM-Y59jmHNy1Igdqe9JfcpY8JOx3Tcz6by37KpzZuesN-KP7mmAK8LEXhD8hDAYpcxV6hGkBj8vhSPliZRH0pTbL7mwWeHx1X8ems0LvJaEPgCh1T_DpeYqCARC6fZaOELpzTWYFj9Ces_6GaxPGHY3Q_2EGtYBrpgeIc89syN6Up0Ys3xq9rk2GnNUA-Qc8nHbjpQC3DI3oYOr9NPN-qkoqY5QFISeneWEnpV6mfPFmm_I_ebGh-wJPT-HZTE2Dj-bYDn-f7QFXxZSHXdlG-sEnc5UgNQeUmp1JNXx7-jNtfw-DANu7oj-f1LjL2Hu0T4vyCVT8k8UhB640c4Dn5gl9EhoC-sAqe9jT_AbkOr0vmiKq08RyNE5tF6atH2_egukeoyx92F49sx6ILQhtIF16mGbGtDmpHoc0a_Oo44gCG0JvYOBSYWiuLmRTwM8gdRxTegV099BSY0OmE_scGnJyBXUAswQfz8nyb-gypeEYRpMH48PpIMRNVrmUUAfPChjvkeSbrgKgX0YLxErmOCX4COytWDigbgyO4gwL5DnTKmNV9LDxG7jHqTCi2YzOlLfA-zW49i6iePxcAilK03fRLV2KaS9SC3wNcZ8FstsxMXLNbt8LTfbQhTq0U-3ptb_oxAWnYMPFvkGAA9GhVnDWaroPT0f4SQdt3KWmnlj4azYuPWZ_2Dw1QNuhW22FnvH-WYrLLo-Nm-XXksA6S7Oz_6L3P1_yD18nfvRyrcykb8Xh78H1By_YmAUgreBJ_kxD2zb__J1HxkZIyKhB2vmDyqgD4mhcTbxUerB2JmlIotiHF3k3duFX2Siq0RbtSzDbte0zaGhVXWXTR2l1VCVvGkaSut617YHcSfobmjbgTHe15nsaEmrXVm2u311qJuCV4emRTHgIAZxd1eRfYkzk6qIEiiMHTPpXMCuOdQtzRTrUbn00aI06ScijVSuT5ntkmz6MDqyL5V03r1X8dIr7B7ipQyEnmPvxtqo0486vCYJO4dzr6JUo6LSDf7-YRIyZskXzIJV3eT94qLI6JnQ8yj9FPqCm_nD5f35Sk_dOELPqaG_AgAA__9JpSfs">