[Feature request] Indicate relocations in assembler listing
This is an example assembly listing file output using gcc-ia16 with appropriate parameters: (Copied from my other issue earlier today.)
$ cat hello.c
#include "stdio.h"
void main(void) {
printf("Hello world!\n");
}
$ ia16-elf-gcc -o hello.com hello.c -g -Wa,-anlhd=hello.lst,-L -masm=intel
cc1: warning: target system does not support debug output
$ cat hello.lst
1 .arch i8086,jumps
2 .code16
3 .intel_syntax noprefix
4 #NO_APP
5 .section .rodata
6 .LC0:
7 0000 48656C6C .string "Hello world!"
7 6F20776F
7 726C6421
7 00
8 .text
9 .global main
11 main:
12 0000 55 push bp
13 0001 89E5 mov bp, sp
14 0003 B80000 mov ax, offset .LC0
15 0006 50 push ax
16 0007 16 push ss
17 0008 1F pop ds
18 0009 E8FEFF call puts
19 000c 83C402 add sp, 2
20 000f 90 nop
21 0010 5D pop bp
22 0011 16 push ss
23 0012 1F pop ds
24 0013 C3 ret
26 .ident "GCC: (GNU) 6.3.0"
$
This is how NASM's -f bin output format indicates relocations in the listing, note the square brackets:
$ cat bye.asm
cpu 8086
org 256
start:
mov dx, message
mov ah, 09h
int 21h
mov ax, 4C00h
int 21h
message:
db "Goodbye world!",13,10,36
$ nasm bye.asm -o bye.com -l bye.lst
$ cat bye.lst
1
2 cpu 8086
3 org 256
4 start:
5 00000000 BA[0C00] mov dx, message
6 00000003 B409 mov ah, 09h
7 00000005 CD21 int 21h
8 00000007 B8004C mov ax, 4C00h
9 0000000A CD21 int 21h
10
11 message:
12 0000000C 476F6F646279652077- db "Goodbye world!",13,10,36
12 00000015 6F726C64210D0A24
$
I want the square brackets so as to help my trace listing program to identify the current instruction. Here's the logic (sorry for unreadable perl code) to skip over bytes sent from the debugger if they appear to match up to listing file opcode bytes enclosed in square brackets.
This point seems like it generates the opcode dump in gas: https://github.com/tkchia/binutils-ia16/blob/1d7535fd03bdddf979d63fcd0072aa68129971fc/gas/listing.c#L762