Skip to content

Defining an -f obj global label in terms of an equate equal to an extern label doesn't emit any error, warning, or useful definition in the object file #207

Description

@ecm-pushbx

I expect this to not fail silently:

test$ cat test.asm 

        section code
extern extlabel
global globlabel
globlabel equ extlabel
test$ ~/proj/nasm-b1909cf39b8028b72cf527ba617a940e329ea05c/nasm -f obj test.asm 
test$ ~/proj/omfdump/omfdump test.obj 
80 THEADR       10 bytes, checksum 3F (valid)
   0000: 08 74 65 73 74 2e 61 73-6d                       :  .test.asm
88 COMENT       33 bytes, checksum 81 (valid)
   [NP=0 NL=0 UD=00] 00 Translator
   0002: 1d 54 68 65 20 4e 65 74-77 69 64 65 20 41 73 73  :  .The Netwide Ass
   0012: 65 6d 62 6c 65 72 20 33-2e 30 32 72 63 32        :  embler 3.02rc2
96 LNAMES        7 bytes, checksum C4 (valid)
   [0001] ''
   0000: 00 04 63 6f 64 65                                :  .
   [0002] 'code'
   0001: 04 63 6f 64 65                                   :  .code
98 SEGDEF16      7 bytes, checksum 35 (valid)
     BYTE (A1) PUBLIC (C2) USE16 size 0000
     name 'code'
   0000: 28 00 00 02 01 01                                :  (.....
8c EXTDEF       22 bytes, checksum 58 (valid)
   [0001] external name 'extlabel'
   [0002] external name 'globlabel'
   0000: 08 65 78 74 6c 61 62 65-6c 00 09 67 6c 6f 62 6c  :  .extlabel..globl
   0010: 61 62 65 6c 00                                   :  abel.
88 COMENT        4 bytes, checksum 91 (valid)
   [NP=0 NL=1 UD=00] A2 Link pass separator
   0002: 01                                               :  .
8a MODEND16      2 bytes, checksum 74 (valid)
   0000: 00                                               :  .
test$

omfdump is the tool from https://github.com/boeckmann/omfdump

As visible, NASM emits two EXTDEF subrecords, but it doesn't (and probably cannot) usefully define the one label in terms of the other. I want a warning or error message about this fact.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions