summaryrefslogblamecommitdiffstats
path: root/public/tools/ntrebase.cmd
blob: 7da3fa33ad723150fdf7867a7062e05c7aa08e96 (plain) (tree)
































































































































































































































                                                                                                                                                                                       
setlocal

if "%1" == "NoTools" set NOTOOLS=1& shift
set _REBASE_FLAGS=%_NTREBASE_FLAGS%
if not "%_REBASE_FLAGS%" == "" echo Using flags from _NTREBASE_FLAGS == "%_NTREBASE_FLAGS%"
if not "%1" == "" set _REBASE_FLAGS=%1 %2 %3 %4 %5 %6 %7 %8 %9
set _REBASE_FLAGS=-v %_REBASE_FLAGS%

set _QFE_BUILD=1
set REBASELANG=usa

@if not "%_QFE_BUILD%"=="1" goto CHK1
@if not "%REBASELANG%"=="" goto CHK1
@echo REBASELANG not defined.
@goto EXIT

:CHK1
@if "%PROCESSOR_ARCHITECTURE%"=="x86"   goto X86
@if "%PROCESSOR_ARCHITECTURE%"=="MIPS"  goto MIPS
@if "%PROCESSOR_ARCHITECTURE%"=="ALPHA" goto ALPHA
@if "%PROCESSOR_ARCHITECTURE%"=="PPC"   goto PPC
@echo PROCESSOR_ARCHITECTURE not defined.
@goto EXIT


:X86
@set _TREE=%_NT386TREE%
@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\i386\%REBASELANG%\baseaddr.txt
@goto OK

:MIPS
@set _TREE=%_NTMIPSTREE%
@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\mips\%REBASELANG%\baseaddr.txt
@goto OK

:ALPHA
@set _TREE=%_NTALPHATREE%
@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\alpha\%REBASELANG%\baseaddr.txt
@goto OK

:PPC
@set _TREE=%_NTPPCTREE%
@set _ADDRESS_FILE=%_ntdrive%\nt\public\sdk\lib\ppc\%REBASELANG%\baseaddr.txt
@goto OK


:OK
imagecfg /r %_TREE%\smss.exe %_TREE%\csrss.exe %_TREE%\lsass.exe %_TREE%\services.exe %_TREE%\winlogon.exe %_TREE%\spoolss.exe %_TREE%\rpcss.exe %_TREE%\explorer.exe %_TREE%\ntvdm.exe
@if not "%_QFE_BUILD%"=="1" goto OK1
@if exist %_ADDRESS_FILE% goto OK1
@echo Could Not Find %_ADDRESS_FILE%
@goto EXIT

:OK1

@echo Rebasing images in %_TREE%
@set _REBASE_SYMS=
@set _REBASE_LOG=%_TREE%\rebase.log
@if NOT EXIST %_TREE%\Symbols\nul goto nodbgfiles

@set _REBASE_SYMS=-x %_TREE%\Symbols
@set _REBASE_LOG=%_TREE%\Symbols\rebase.log
@echo ... updating .DBG files in %_TREE%\Symbols

:nodbgfiles
erase %_REBASE_LOG%

@set _REBASE_FLAGS=%_REBASE_FLAGS% -l %_REBASE_LOG%
@set _REBDIR=%_NTDRIVE%\nt\public\tools


@REM *************************************
@REM *** Skip ahead for the QFE build. ***
@REM *************************************

@if "%_QFE_BUILD%"=="1" goto QFE

@set _REBPATHS=
@set _REBPATHS=%_REBPATHS% %_TREE%\*.acm %_TREE%\*.dll %_TREE%\*.cpl %_TREE%\*.drv
@set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
@if     "%NOTOOLS%" == "1" goto NoTools
@set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll %_TREE%\idw\*.dll
:NoTools
@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll

if exist %_TREE%\Wx86Shl set WX86_TREE=%_TREE%\Wx86Shl
if not exist %_TREE%\Wx86Shl set WX86_NTTREE=%_TREE%
if exist %_TREE%\Wx86Shl\Symbols set WX86_REBASE_SYMS=-x %_TREE%\Wx86Shl\Symbols

@REM *********************************
@REM *** Rebase for regular build. ***
@REM *********************************

@rem
@rem rebase the dlls. do not touch the csr, wow, or mail dlls.
@rem

@set _REBASE_EXCLUDES=
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\wx86thnk.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\never.reb

@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -G %_REBDIR%\known.reb -G %_REBDIR%\net.reb -G %_REBDIR%\printer.reb
rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x78000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%


rem
rem rebase wx86shl dlls
rem
if not exist %_TREE%\Wx86Shl goto SkipWx86
@set REBFLAGS=
@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86.reb
@set REBFLAGS=%REBFLAGS% -N %_REBDIR%\Wx86thnk.reb
@set REBFLAGS=%REBFLAGS% %WX86_TREE%\*.dll
@set REBFLAGS=%REBFLAGS% %WX86_TREE%\system32\*.dll

rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -b 0x70000000 -R %WX86_TREE% %REBFLAGS%
:SkipWx86


@rem
@rem rebase all exes. do not touch csr, wow, or mail
@rem

@set _REBASE_EXCLUDES=
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\csrss.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\kbd.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\video.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntvdm.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\ntoskrnl.reb
@set _REBASE_EXCLUDES=%_REBASE_EXCLUDES% -N %_REBDIR%\bldtools.reb

@set _REBPATHS=
@set _REBPATHS=%_REBPATHS% %_TREE%\*.exe %_TREE%\system32\*.exe
@if NOT "%NOTOOLS%" == "1" @set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe %_TREE%\idw\*.exe
@set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe

rebase %_REBASE_SYMS% %_REBASE_FLAGS% -b 0x01000000 -R %_TREE% %_REBASE_EXCLUDES% %_REBPATHS%


@rem
@rem rebase csrss as a group
@rem

rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %_TREE% -G %_REBDIR%\csrss.reb -O %_REBDIR%\kbd.reb -O %_REBDIR%\video.reb


@rem
@rem rebase wow as a group
@rem

rebase %_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x10000000 -R %_TREE% -G %_REBDIR%\ntvdm.reb


@rem
@rem rebase wx86 as two groups, one starting at 0x60000000 and going up (cpu),
@rem and one ending at 0x60000000 and going down (thunks).

@rem
rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS%    -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86.reb
rebase %WX86_REBASE_SYMS% %_REBASE_FLAGS% -d -b 0x60000000 -R %WX86_TREE% -G %_REBDIR%\wx86thnk.reb


@goto EXIT

:QFE

REM *****************************
REM *** Rebase for QFE build. ***
REM *****************************

rem
rem rebase DLLs
rem

set _DLL_FLAGS=-R %_TREE%
set _DLL_FLAGS=%_DLL_FLAGS% -N %_REBDIR%\never.reb

goto SKIP1
set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\known.reb
set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\kbd.reb
set _DLL_FLAGS=%_DLL_FLAGS% -O %_REBDIR%\video.reb
set _DLL_FLAGS=%_DLL_FLAGS% -G %_REBDIR%\printer.reb
:SKIP1

set _REBPATHS=
set _REBPATHS=%_REBPATHS% %_TREE%\*.acm 
set _REBPATHS=%_REBPATHS% %_TREE%\*.dll 
set _REBPATHS=%_REBPATHS% %_TREE%\*.cpl 
set _REBPATHS=%_REBPATHS% %_TREE%\*.drv
set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.dll
set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.dll 
set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.dll
set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.dll
set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.dll

rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_DLL_FLAGS% %_REBPATHS%

rem
rem rebase EXEs
rem

set _EXE_FLAGS=-R %_TREE%
set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\csrss.reb
set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntvdm.reb
set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\ntoskrnl.reb
set _EXE_FLAGS=%_EXE_FLAGS% -N %_REBDIR%\bldtools.reb

set _REBPATHS=
set _REBPATHS=%_REBPATHS% %_TREE%\*.exe
set _REBPATHS=%_REBPATHS% %_TREE%\system32\*.exe
set _REBPATHS=%_REBPATHS% %_TREE%\mstools\*.exe
set _REBPATHS=%_REBPATHS% %_TREE%\idw\*.exe
set _REBPATHS=%_REBPATHS% %_TREE%\dump\*.exe
set _REBPATHS=%_REBPATHS% %_TREE%\noexport\*.exe

rebase %_REBASE_SYMS% %_REBASE_FLAGS% -i %_ADDRESS_FILE% %_EXE_FLAGS% %_REBPATHS%

:EXIT

endlocal