Quite often, complex header files use nested conditions, command line parameters, etc. mcs51-disasm.pl does not process such files correctly. Please add this to the documentation. When using mcs51-disasm.pl with complex header files, it is advisable to prepare these files in advance (simplify them), for example like this:
`sdcc $(CFLAGS) -E mcu.h >mcu.h~; perl mcs51-disasm.pl --mcu mcu.h~ $(DISASM_FLAGS) $.hex >$.lss 2>/dev/null