Skip to content

Commit fce48c3

Browse files
committed
[OLDNAMES] Fix up for ucrtbase
Some old names redirect to functions that are not exported by ucrtbase. Place them into a seperate asm file, so that they don't get pulled in, when any of the other ones is referenced.
1 parent 5abc69f commit fce48c3

File tree

5 files changed

+190
-170
lines changed

5 files changed

+190
-170
lines changed

dll/win32/ucrtbase/ucrtbase.spec

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,15 +391,19 @@
391391
@ cdecl _fseeki64_nolock(ptr int64 long)
392392
@ cdecl _fsopen(str str long)
393393
@ cdecl _fstat32(long ptr)
394+
@ cdecl -arch=win32 -impsym _fstat(long ptr) _fstat32
394395
@ cdecl _fstat32i64(long ptr)
395396
@ cdecl _fstat64(long ptr)
396397
@ cdecl _fstat64i32(long ptr)
398+
@ cdecl -arch=win64 -impsym _fstat(long ptr) _fstat64i32
397399
@ cdecl _ftell_nolock(ptr)
398400
@ cdecl -ret64 _ftelli64(ptr)
399401
@ cdecl -ret64 _ftelli64_nolock(ptr)
400402
@ cdecl _ftime32(ptr)
403+
@ cdecl -arch=win32 -impsym _ftime(ptr) _ftime32
401404
@ cdecl _ftime32_s(ptr)
402405
@ cdecl _ftime64(ptr)
406+
@ cdecl -arch=win64 -impsym _ftime(ptr) _ftime64
403407
@ cdecl _ftime64_s(ptr)
404408
@ cdecl -arch=i386 -ret64 _ftol()
405409
@ cdecl _fullpath(ptr str long)
@@ -1975,9 +1979,11 @@
19751979
@ cdecl _splitpath(str ptr ptr ptr ptr)
19761980
@ cdecl _splitpath_s(str ptr long ptr long ptr long ptr long)
19771981
@ cdecl _stat32(str ptr)
1982+
@ cdecl -arch=win32 -impsym _stat(ptr) _stat32
19781983
@ cdecl _stat32i64(str ptr)
19791984
@ cdecl _stat64(str ptr)
19801985
@ cdecl _stat64i32(str ptr)
1986+
@ cdecl -arch=win64 -impsym _stat(ptr) _stat64i32
19811987
@ cdecl _statusfp()
19821988
@ cdecl -stub -arch=i386 _statusfp2(ptr ptr)
19831989
@ cdecl _strcoll_l(str str ptr)
@@ -2064,7 +2070,9 @@
20642070
@ cdecl _unlock_file(ptr)
20652071
@ cdecl _unlock_locales()
20662072
@ cdecl _utime32(str ptr)
2073+
@ cdecl -arch=win32 -impsym _utime(str ptr) _utime32
20672074
@ cdecl _utime64(str ptr)
2075+
@ cdecl -arch=win64 -impsym _utime(str ptr) _utime64
20682076
@ cdecl _waccess(wstr long)
20692077
@ cdecl _waccess_s(wstr long)
20702078
@ cdecl _wasctime(ptr)

sdk/include/asm/alias.inc

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
2+
#ifdef _M_IX86
3+
#define SYM(name) _##name
4+
#define IMPSYM(name) __imp__##name
5+
#else
6+
#define SYM(name) name
7+
#define IMPSYM(name) __imp_##name
8+
#endif
9+
10+
#if (defined(_M_IX86) || defined(_M_AMD64))
11+
12+
#include <asm.inc>
13+
14+
MACRO(CREATE_ALIAS1, alias, target)
15+
#ifdef _USE_ML
16+
EXTERN SYM(&target):PROC
17+
ALIAS <SYM(&alias)> = <SYM(&target)>
18+
#else
19+
.weakref SYM(&alias), SYM(&target)
20+
#endif
21+
ENDM
22+
23+
MACRO(CREATE_ALIAS2, alias, target)
24+
#ifdef _USE_ML
25+
EXTERN IMPSYM(&target):PROC
26+
ALIAS <IMPSYM(&alias)> = <IMPSYM(&target)>
27+
#else
28+
.weakref IMPSYM(&alias), IMPSYM(&target)
29+
#endif
30+
ENDM
31+
32+
MACRO(CREATE_ALIAS, alias, target)
33+
CREATE_ALIAS1 &alias, &target
34+
CREATE_ALIAS2 &alias, &target
35+
ENDM
36+
37+
#elif defined(_M_ARM)
38+
39+
#include <kxarm.h>
40+
41+
MACRO
42+
CREATE_ALIAS1 $alias, $target
43+
IMPORT SYM($alias), WEAK SYM($target)
44+
MEND
45+
46+
MACRO
47+
CREATE_ALIAS2 $alias, $target
48+
IMPORT IMPSYM($alias), WEAK IMPSYM($target)
49+
MEND
50+
51+
MACRO
52+
CREATE_ALIAS $alias, $target
53+
CREATE_ALIAS1 $alias, $target
54+
CREATE_ALIAS2 $alias, $target
55+
MEND
56+
#else
57+
#error "Unsupported platform."
58+
#endif

sdk/lib/crt/oldnames-common.S

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
2+
#include <alias.inc>
3+
4+
/* Do not remove indentation, this would break ARM build! */
5+
CREATE_ALIAS access, _access
6+
CREATE_ALIAS chdir, _chdir
7+
CREATE_ALIAS chmod, _chmod
8+
CREATE_ALIAS chsize, _chsize
9+
CREATE_ALIAS close, _close
10+
CREATE_ALIAS creat, _creat
11+
CREATE_ALIAS cwait, _cwait
12+
CREATE_ALIAS dup, _dup
13+
CREATE_ALIAS dup2, _dup2
14+
CREATE_ALIAS ecvt, _ecvt
15+
CREATE_ALIAS eof, _eof
16+
CREATE_ALIAS execl, _execl
17+
CREATE_ALIAS execle, _execle
18+
CREATE_ALIAS execlp, _execlp
19+
CREATE_ALIAS execlpe, _execlpe
20+
CREATE_ALIAS execv, _execv
21+
CREATE_ALIAS execve, _execve
22+
CREATE_ALIAS execvp, _execvp
23+
CREATE_ALIAS execvpe, _execvpe
24+
CREATE_ALIAS fcvt, _fcvt
25+
CREATE_ALIAS fdopen, _fdopen
26+
CREATE_ALIAS fgetchar, _fgetchar
27+
CREATE_ALIAS fgetwchar, _fgetwchar
28+
CREATE_ALIAS filelength, _filelength
29+
CREATE_ALIAS fileno, _fileno
30+
CREATE_ALIAS fpreset, _fpreset
31+
CREATE_ALIAS fputchar, _fputchar
32+
CREATE_ALIAS fputwchar, _fputwchar
33+
CREATE_ALIAS gcvt, _gcvt
34+
CREATE_ALIAS getch, _getch
35+
CREATE_ALIAS getche, _getche
36+
CREATE_ALIAS getcwd, _getcwd
37+
CREATE_ALIAS getpid, _getpid
38+
CREATE_ALIAS getw, _getw
39+
CREATE_ALIAS heapwalk, _heapwalk
40+
CREATE_ALIAS isatty, _isatty
41+
CREATE_ALIAS isascii, __isascii
42+
CREATE_ALIAS itoa, _itoa
43+
CREATE_ALIAS kbhit, _kbhit
44+
CREATE_ALIAS lfind, _lfind
45+
CREATE_ALIAS lsearch, _lsearch
46+
CREATE_ALIAS lseek, _lseek
47+
CREATE_ALIAS ltoa, _ltoa
48+
CREATE_ALIAS memccpy, _memccpy
49+
CREATE_ALIAS memicmp, _memicmp
50+
CREATE_ALIAS mkdir, _mkdir
51+
CREATE_ALIAS mktemp, _mktemp
52+
CREATE_ALIAS open, _open
53+
CREATE_ALIAS pclose, _pclose
54+
CREATE_ALIAS popen, _popen
55+
CREATE_ALIAS putch, _putch
56+
CREATE_ALIAS putenv, _putenv
57+
CREATE_ALIAS putw, _putw
58+
CREATE_ALIAS read, _read
59+
CREATE_ALIAS rmdir, _rmdir
60+
CREATE_ALIAS rmtmp, _rmtmp
61+
CREATE_ALIAS searchenv, _searchenv
62+
CREATE_ALIAS setmode, _setmode
63+
CREATE_ALIAS sopen, _sopen
64+
CREATE_ALIAS spawnl, _spawnl
65+
CREATE_ALIAS spawnle, _spawnle
66+
CREATE_ALIAS spawnlp, _spawnlp
67+
CREATE_ALIAS spawnlpe, _spawnlpe
68+
CREATE_ALIAS spawnv, _spawnv
69+
CREATE_ALIAS spawnve, _spawnve
70+
CREATE_ALIAS spawnvp, _spawnvp
71+
CREATE_ALIAS spawnvpe, _spawnvpe
72+
CREATE_ALIAS strdup, _strdup
73+
CREATE_ALIAS stricmp, _stricmp
74+
CREATE_ALIAS stricoll, _stricoll
75+
CREATE_ALIAS strlwr, _strlwr
76+
CREATE_ALIAS strnicmp, _strnicmp
77+
CREATE_ALIAS strnset, _strnset
78+
CREATE_ALIAS strrev, _strrev
79+
CREATE_ALIAS strset, _strset
80+
CREATE_ALIAS strupr, _strupr
81+
CREATE_ALIAS swab, _swab
82+
CREATE_ALIAS tell, _tell
83+
CREATE_ALIAS tempnam, _tempnam
84+
CREATE_ALIAS tzset, _tzset
85+
CREATE_ALIAS umask, _umask
86+
CREATE_ALIAS ungetch, _ungetch
87+
CREATE_ALIAS unlink, _unlink
88+
CREATE_ALIAS wcsdup, _wcsdup
89+
CREATE_ALIAS wcsicmp, _wcsicmp
90+
CREATE_ALIAS wcsicoll, _wcsicoll
91+
CREATE_ALIAS wcslwr, _wcslwr
92+
CREATE_ALIAS wcsnicmp, _wcsnicmp
93+
CREATE_ALIAS wcsnset, _wcsnset
94+
CREATE_ALIAS wcsrev, _wcsrev
95+
CREATE_ALIAS wcsset, _wcsset
96+
CREATE_ALIAS wcsupr, _wcsupr
97+
CREATE_ALIAS wpopen, _wpopen
98+
CREATE_ALIAS write, _write
99+
// non-ANSI functions declared in math.h
100+
CREATE_ALIAS j0, _j0
101+
CREATE_ALIAS j1, _j1
102+
CREATE_ALIAS jn, _jn
103+
CREATE_ALIAS y0, _y0
104+
CREATE_ALIAS y1, _y1
105+
CREATE_ALIAS yn, _yn
106+
CREATE_ALIAS chgsign, _chgsign
107+
CREATE_ALIAS scalb, _scalb
108+
CREATE_ALIAS finite, _finite
109+
CREATE_ALIAS fpclass, _fpclass
110+
111+
// These do not exist as exports in ucrtbase, but as import symbols
112+
CREATE_ALIAS fstat, _fstat
113+
CREATE_ALIAS ftime, _ftime
114+
CREATE_ALIAS stat, _stat
115+
CREATE_ALIAS utime, _utime
116+
117+
END
118+

0 commit comments

Comments
 (0)