Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Find out which units actually make it into your Delphi EXE file (i.e. not eliminated by the linker)
@echo off
if ["%*"]==[] goto :help
:logic
if not exist %1 goto :notExist
setlocal
:: do not use periods (.) in delims as unit names may contain them!
:: it might be that the segment (%%a) for C=CODE/S=.text/G=(none)/M=*/ACBP=A9 is always 0001
:: it might be that the segment (%%a) for C=ICODE/S=.itext/G=(none)/M=*/ACBP=A9 is always 0002
:: it might be that the segment (%%a) for C=DATA/S=.data/G=DGROUP/M=*/ACBP=A9 is always 0003
:: it might be that the segment (%%a) for C=BSS/S=.bss/G=DGROUP/M=*/ACBP=A9 is always 0004
:: it might be that the segment (%%a) for C=TLS/S=.tls/G=(none)/M=*/ACBP=A9 is always 0005
:: the `if ["%%h"]==["(none)"] ` trick is to prevent this error:
:: ) was unexpected at this time.
for /f "tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,* delims=()= " %%a IN (%1) do (
if [%%c]==[C] if [%%e]==[S] if [%%g]==[G] if [%%i]==[M] if [%%k]==[ACBP] if [%%l]==[A9] if [%%m]==[] (
if [%%d]==[CODE] if [%%f]==[.text] if ["%%h"]==["(none)"] echo %%j
if [%%d]==[ICODE] if [%%f]==[.itext] if ["%%h"]==["(none)"] echo %%j
if [%%d]==[DATA] if [%%f]==[.data] if ["%%h"]==["DGROUP"] echo %%j
if [%%d]==[BSS] if [%%f]==[.bss] if ["%%h"]==["DGROUP"] echo %%j
if [%%d]==[TLS] if [%%f]==[.tls] if ["%%h"]==["(none)"] echo %%j
)
if [%%a]==[line] if [%%b]==[numbers] if [%%c]==[for] if [%%f]==[segment] if [%%g]==[.text] if [%%h]==[] (
echo %%d
)
)
endlocal
goto :eof
echo a=%%a;b=%%b;b=%%b;c=%%c;d=%%d;e=%%e;f=%%f;g=%%g;h=%%h;i=%%i;j=%%j;k=%%k;l=%%l;m=%%m;n=%%n
if [%%c]==[C] if [%%d]==[CODE] if [%%e]==[S] if [%%f]==[.text] if [%%g]==[G] if ["%%h"]==["(none)"] if [%%i]==[M] if [%%k]==[ACBP] if [%%l]==[A9] if [%%m]==[] echo %%j
:notExist
echo %* does not exist.
:help
echo syntax: %0 MAP-file
echo will list all the Delphi units that got compiled into your EXE in a non-sorted non-unique way
goto :eof
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.