Nikita Smith
7650a83d1e
further simplify linker/os_ext/os_core.c
2024-11-07 14:08:21 -08:00
Nikita Smith
daeb08e79f
moved os_folder_exists to the main layer and deleted win32 layer from linker folder
2024-11-07 13:55:15 -08:00
Nikita Smith
ef5287d2a9
switch to os_full_path_from_path
2024-11-07 13:41:47 -08:00
Nikita Smith
db04792073
moved getter for process start time w32
2024-11-07 13:33:37 -08:00
Nikita Smith
4091373517
moved operating system -> string to base
2024-11-07 11:54:25 -08:00
Nikita Smith
214be8c433
moved Guid struct and related helpers to base
2024-11-07 11:54:25 -08:00
Nikita Smith
f807dc4785
override entry point
2024-11-07 11:54:25 -08:00
Nikita Smith
0dd05169ee
add ability to override entry point type
2024-11-07 11:54:25 -08:00
Nikita Smith
ce9d43a92e
pass over coff header
2024-11-07 11:54:25 -08:00
Nikita Smith
0886963d93
promote section definition number to 32-bit when linking big obj
2024-11-07 11:54:25 -08:00
Nikita Smith
27cd7a21a3
coff section definition for big obj
2024-11-07 11:54:24 -08:00
Nikita Smith
7bb88f480e
mask compute typo
2024-11-07 11:54:24 -08:00
Nikita Smith
fad817fb9e
apply communal variable rule for largest comdat only
2024-11-07 11:54:24 -08:00
Nikita Smith
1d42f1bd66
speed up export table build with hash table
2024-11-07 11:54:24 -08:00
Nikita Smith
f3a36ece13
rebase fixes
2024-10-30 15:56:55 -07:00
Nikita Smith
c5d198e3e9
build linker with branch name and full commit hash
2024-10-30 15:56:10 -07:00
Nikita Smith
eba7500f73
/rad_pdb_hash_type_names:lenient
...
Less aggressive optimization for type names. When lenient enabled, linker
replaces only mangled names and compiler generated lambda types.
2024-10-30 15:56:10 -07:00
Nikita Smith
339f43919c
remove bogus leaf align
2024-10-30 15:56:09 -07:00
Nikita Smith
f3fbf10754
replace type names with hashes
2024-10-30 15:56:09 -07:00
Nikita Smith
4a2e1dd8d0
switch to thread safe hash trie map
...
Initial implementation of the symbol table allowed us to push symbols
from one thread at a time and required a wonky lock-step and spread out
logic for replacing symbols. And because it was a externally chained
hash table we had to guesstimate optimal capacity for small and big targets.
We erred on the side of larger capacity to prevent degradation and
rehashing, however this meant small targets had to spent unreasonable
amount of time memory allocing slots. With hash trie we can dynamically
scale up to 4 ^ 32 items and atomically replace symbols when needed. Neat!
2024-10-30 15:43:53 -07:00
Nikita Smith
ee65ea3692
fast-path for string matching
2024-10-30 15:42:39 -07:00
Nikita Smith
baead67a99
minor fixes
2024-10-30 15:42:39 -07:00
Nikita Smith
e085dae636
pass over atomic operations
...
- use cast to volatile trick for atomic loads on x64 windows
- removed unnecessary includes on windows
- upgraded clang and gcc code paths to use modern atomics
Removed WIN32_LEAN_AND_MEAN because we were already compiling without it
and there is code path in os_gfx_win32.c that relies on including full
windows.h
2024-10-30 15:42:39 -07:00
Nikita Smith
eba6765541
set LF endings for shell scripts so they are executable after checkout
2024-10-30 15:42:39 -07:00
Nikita Smith
002e479a2d
index on dev: 62880e6 set explicitly heap and stack reserve and size
2024-10-30 15:42:39 -07:00
Nikita Smith
8848080729
set explicitly heap and stack reserve and size
2024-10-30 15:42:39 -07:00
Nikita Smith
e1166abc63
typo in str8 compar name
2024-10-30 15:42:39 -07:00
Nikita Smith
6ffc065712
set dynamic base on /fixed:no
2024-10-30 15:42:39 -07:00
Nikita Smith
15b1ebcd21
coff section align from byte size helper
2024-10-30 15:42:39 -07:00
Nikita Smith
340396f9f7
fix arena usage
2024-10-22 15:07:49 -07:00
Nikita Smith
eb6aabe2d1
set block base pos
2024-10-22 15:06:39 -07:00
Nikita Smith
9ec7fb61ed
implemented /noimplib /noexp
2024-10-22 11:02:59 -07:00
Nikita Smith
dcffefd0c6
typo in string table lookup
2024-10-22 10:58:41 -07:00
Nikita Smith
5be2b5dfd9
alias for amd64 machine
2024-10-22 10:19:37 -07:00
Nikita Smith
7260baea85
implemented /PDBALTPATH and /RAD_DEBUGALTPATH
2024-10-21 18:03:28 -07:00
Nikita Smith
a802f2186b
actually push new block to list
2024-10-21 14:35:55 -07:00
Nikita Smith
a43678e311
voff -> line search fix
...
when line table contains duplicate virtual offsets we have to return
index of last virtual offset so following property is true:
'line_length = virtual_offsets[index + 1] - virtual_offsets[index]'
2024-10-21 13:32:04 -07:00
Nikita Smith
dbcecd99af
fix sizeof array types
2024-10-19 20:39:40 -07:00
Nikita Smith
68c0906570
print register name
2024-10-19 20:39:40 -07:00
Nikita Smith
26611c5454
moved IO related code to stand-alone file, piped all read/and writes
...
through new API, /rad_log now can enable read and/or write logs with
"io", "io_reads", "io_writes" parameters.
2024-10-19 16:36:32 -07:00
Nikita Smith
05d4faeb49
remove unsued func
2024-10-19 15:13:10 -07:00
Nikita Smith
d5c2e50e9a
rename import table regular -> static
2024-10-19 15:11:51 -07:00
Nikita Smith
800a2349e5
pass over COFF resource reader and writer
2024-10-19 13:44:36 -07:00
Nikita Smith
46390ba0b8
reworked manifest handling
...
- manifest files wont be created unless symbols are resolved
- delay mt.exe presence check until we launch it
- create explicit case that writes manifests to disk
- moved manifest dependency collection step to happen after obj input
- removed /rad_delete_manifest
2024-10-18 23:37:30 -07:00
Nikita Smith
f1a0e7233d
cstring helper for wide chars
2024-10-18 22:56:55 -07:00
Nikita Smith
9d60dcc099
updated radlink benches in readme
2024-10-18 17:12:31 -07:00
Nikita Smith
f792da5d31
manifest...
2024-10-18 16:53:30 -07:00
Nikita Smith
d04e86c007
rename merged manifest
2024-10-18 16:23:51 -07:00
Nikita Smith
3aa4b2ea03
fix udt resolution & emit correct null type
2024-10-18 16:01:17 -07:00
Nikita Smith
2f5e55d52f
switch check typo
2024-10-18 16:01:17 -07:00
Nikita Smith
14ad67d59a
assign correct file path node to source file
...
* disabled debug check for sortness too while I'm here
2024-10-18 16:01:17 -07:00
Nikita Smith
b2bdb893a0
print file path node idx
2024-10-18 16:01:17 -07:00
Nikita Smith
0ac090cab2
delete unused files
2024-10-18 11:07:00 -07:00
Nikita Smith
7827e1b1c7
fix bounds check condition in assert
2024-10-18 11:07:00 -07:00
Nikita Smith
36f3924160
don't allocate .reloc section when there are no pages
2024-10-18 11:05:51 -07:00
Nikita Smith
00dd4ad6ec
check if subsystem was specified
2024-10-18 11:05:01 -07:00
Nikita Smith
7f7f7f2873
reserve space for null string
2024-10-18 11:03:46 -07:00
Nikita Smith
c8a5fc4806
Changed debug directory parser to handle multiple entries. Added
...
parser for RDI debug info entry. Changed debug info lookup order so
debugger tries to load path specified in exe first and if debug info
is missing then debugger will do heuristic searches.
2024-10-17 18:51:35 -07:00
Nikita Smith
652dcafbbf
demon helper for reading cstrings
2024-10-17 18:46:59 -07:00
Nikita Smith
c50d9276ba
build inline lines accels
2024-10-17 16:25:54 -07:00
Nikita Smith
1214cb0968
dumper for CodeView inline sites
2024-10-17 16:25:54 -07:00
Nikita Smith
3099759c0b
stringizers for inline site range kind
2024-10-17 16:25:54 -07:00
Nikita Smith
95d31f5608
fix off-by-one in inline site decode
2024-10-17 16:25:54 -07:00
Nikita Smith
d2db4542cb
check type server signature against signature in obj
2024-10-17 14:05:34 -07:00
Nikita Smith
2b407b5861
changed write file to accept 1MiB blocks to improve file write speed on windows
2024-10-16 22:27:46 -07:00
Nikita Smith
79390f4a95
align msf pages on page size
2024-10-16 22:27:46 -07:00
Nikita Smith
aedfb556be
fix aligned arena push
2024-10-16 22:27:46 -07:00
Nikita Smith
9e6aa8506f
README.md tweaks
2024-10-16 10:48:51 -07:00
Nikita Smith
648fa7cdab
update hash in config
2024-10-16 10:23:53 -07:00
Nikita Smith
6612f4a32d
hash image only when we have debug info building
2024-10-16 10:15:16 -07:00
Nikita Smith
bb86072dfa
updated git actions
2024-10-15 17:32:21 -07:00
Nikita Smith
d5988d0066
updated README
2024-10-15 17:26:50 -07:00
Nikita Smith
932df7bf68
linker
2024-10-15 17:25:22 -07:00
Nikita Smith
0cf553e39a
minor fixes
2024-10-15 17:24:29 -07:00
Nikita Smith
1bcd66329f
factored parser code out of pdb
2024-10-15 16:28:51 -07:00
Nikita Smith
c3e2e2e91b
factored parser code out of msf
2024-10-15 16:28:47 -07:00
Nikita Smith
c34d7e2062
added missing LF_ENDPRECOMP type, fixed case for S_OBJNAME symbol,
...
merged leaf id kinds into main leaf enum, renamed public flags enum,
removed type dependency on PDB string table and PDB coff section array
2024-10-15 16:24:29 -07:00
Nikita Smith
b1d6ebf77b
added masm language enum and type kind count
2024-10-15 16:20:18 -07:00
Nikita Smith
9535652cfb
define null path style
2024-10-15 16:19:27 -07:00
Nikita Smith
3ae1d8e401
bunch of tiny tweaks and changes from internal repo
2024-10-15 16:18:43 -07:00
Nikita Smith
7e98df22d7
temp arena change that lets us bypass memory decommits
2024-10-15 14:43:36 -07:00
Nikita Smith
3f88b83fdb
pe: added helpers for image checksum debug directory, and entry point names
2024-10-11 16:15:55 -07:00
Nikita Smith
ab9804860c
base: bug fix large pages commit code path
2024-10-11 13:50:08 -07:00
Nikita and Ryan Fleury
e18e136f82
fixed line number binary search for last range in line number map
2024-07-23 08:44:08 -07:00