Nikita Smith
2a72f525fb
added support for dumping disassembly and raw data out of sections
2024-12-11 12:07:42 -08:00
Nikita Smith
c91253a19e
move feature flags to appropriate layer
2024-12-10 14:07:51 -08:00
Nikita Smith
48cb999c3d
format VC Features and COFF Group in debug directory
2024-12-10 13:47:47 -08:00
Nikita Smith
9ff49c33cc
validate export table fields
2024-12-10 13:44:09 -08:00
Nikita Smith
cd3fd4df16
format file preamble and warn about unknown argument
2024-12-09 17:16:44 -08:00
Nikita Smith
dd3b4a025d
advance offset
2024-12-09 15:49:34 -08:00
Nikita Smith
aaa82af9b3
format base relocations
2024-12-09 15:25:12 -08:00
Nikita Smith
db82b2ea63
remove dependency on bin info from base reloc parser
2024-12-09 15:24:18 -08:00
Nikita Smith
723c950c01
add default params for /FUNCTIONPADMIN
2024-12-09 14:27:03 -08:00
Nikita Smith
08a368dd66
handle ADDR32 base relocation
2024-12-06 15:35:33 -08:00
Nikita Smith
f56bc209e0
minor fix
2024-12-06 14:39:00 -08:00
Nikita Smith
b5273d6a00
keep parsing on encountering epilog opcode
2024-12-06 14:00:12 -08:00
Nikita Smith
6cf42338ba
clang build fixes
2024-12-06 12:05:44 -08:00
Nikita Smith
e73ce59945
WIP coffdump
2024-12-06 11:53:16 -08:00
Nikita Smith
c3831e4350
WIP parser for MSVC C++ exceptions unwind info
2024-12-06 11:53:16 -08:00
Nikita Smith
0ea0820d19
minor fixes and cleanups
2024-12-06 11:53:16 -08:00
Nikita Smith
86db833a83
pass over PE
...
* upgraded PE with parsers for imports, exports, and tls
* added struct definitions for image load config and debug dir structs
2024-12-06 11:53:16 -08:00
Nikita Smith
80fa226432
pass over COFF archive parser
2024-12-06 11:53:16 -08:00
Nikita Smith
29de0c5a9e
moved unsigned range list to base math
2024-12-06 11:53:16 -08:00
Nikita Smith
d73e53a5b5
integer array structs
2024-12-06 11:53:16 -08:00
Nikita Smith
3851604705
32bit integer from ascii helpers
2024-12-06 11:53:16 -08:00
Nikita Smith
2bf3194cff
disable .exp for radlink
2024-12-06 11:53:16 -08:00
Nikita Smith
669c03cff1
rename time -> time_stamp
2024-12-06 11:53:16 -08:00
Nikita Smith
e22bd33275
pass over COFF, added symbol for function definitions, updated names
...
and types in structs, added enum to and from string helpers
2024-12-06 11:53:16 -08:00
Nikita Smith
53a5f6ab06
big-endian conversion helpers
2024-12-06 11:53:16 -08:00
Nikita Smith
746a2728b3
date time from unix time stamp
2024-12-06 11:53:16 -08:00
Nikita Smith
9ad63e45e6
u32 from string version
2024-12-06 11:53:16 -08:00
Nikita Smith
47ac1796a9
use build string literal from base context
2024-12-06 11:53:16 -08:00
Nikita Smith
fc429449cf
fix out of bounds check
2024-12-06 11:53:16 -08:00
Nikita Smith
19fac9b1aa
changed symbol table parser to convert symbols as they are being read
2024-11-21 19:42:39 -08:00
Nikita Smith
a0dbe72820
moved common codeview code to the main layer
2024-11-21 15:58:32 -08:00
Nikita Smith
7ac7bea420
minor fixes
2024-11-21 15:58:32 -08:00
Nikita Smith
fbf180df2f
assert when merging associative chunks
2024-11-21 13:30:13 -08:00
Nikita Smith
8e8924fcc6
minor fixes
2024-11-21 13:29:23 -08:00
Nikita Smith
d9d0618e97
helpers for quickly checking presence of symbols and file paths in PDB
2024-11-21 01:05:33 -08:00
Nikita Smith
a87e2745a4
GSI and String Table helpers
2024-11-21 01:05:33 -08:00
Nikita Smith
bdb41aa040
fix off by one in GSI parser
2024-11-21 01:05:33 -08:00
Nikita Smith
714316aebf
factor out stream table out of MSF parser
2024-11-21 01:05:33 -08:00
Nikita Smith
c037d6ad75
WIP function padding
2024-11-21 01:05:33 -08:00
Nikita Smith
816d8e88bf
remove warning pragma around radsort
2024-11-18 16:26:42 -08:00
Nikita Smith
31f536334e
third party include fixups
2024-11-18 16:17:26 -08:00
Nikita Smith
f0a1deec62
merge third party folders
2024-11-18 16:16:15 -08:00
Nikita Smith
af57e321de
show full lib path for better debuggability
2024-11-18 15:38:00 -08:00
Nikita Smith
e44dd3aa07
instead of searching for manifest tool manually punt the job to CreateProcess
2024-11-18 15:38:00 -08:00
Nikita Smith
938be0aa84
changed string conversion routines to return null on null input
...
In os_process_launch on windows, linker relies on directory string conversion
to return null so CreateProcessW can set work directory itself.
2024-11-18 15:38:00 -08:00
Nikita Smith
b99e10224f
simplified chunk size tracking
2024-11-15 16:14:00 -08:00
Nikita Smith
435f6c4ef6
append .lib to defaultlibs
2024-11-15 16:14:00 -08:00
Nikita Smith
b631d431fa
create section layout without copying chunk data and perform chunk data
...
copy in parallel given layout
2024-11-15 16:14:00 -08:00
Nikita Smith
2562d04fbf
changed build.bat to handle extra natvis for radlink and removed
...
'Unset' part since we use setlocal that prevents local variable
from leaking to the environment.
2024-11-15 16:14:00 -08:00
Nikita Smith
b52a008748
remove debug trap
2024-11-15 16:14:00 -08:00
Nikita Smith
b16d930d13
natvis for linker types
2024-11-15 16:14:00 -08:00
Nikita Smith
a8b1805749
updated prof markup usage sites
2024-11-12 13:18:17 -08:00
Nikita Smith
a8b2266fc0
added macro for sending notes to telemetry
2024-11-12 13:18:17 -08:00
Nikita Smith
bc446d8520
dynamic profile zone with raddbg sprintf
2024-11-12 13:18:17 -08:00
Nikita Smith
fd1906b034
safe cast commit size
2024-11-12 10:36:45 -08:00
Nikita Smith
2bbf3ff987
switch to data size formatter
2024-11-12 10:36:45 -08:00
Nikita Smith
880d7a4139
data size formatter for stb_sprintf
2024-11-12 10:36:45 -08:00
Nikita Smith
c6caec657d
moved cstring and find needle string ops to the main layer
2024-11-12 10:36:45 -08:00
Nikita Smith
3d7fc6fce5
moved memory and count string formatters to the main layer and
...
replaced str8_from_memory_size with more accurate data size units
2024-11-12 10:36:44 -08:00
Nikita Smith
0d0951bf08
squash some image-related steps into finalize image
2024-11-12 10:36:44 -08:00
Nikita Smith
3a190ae2c3
show an early warning for /DEBUG:FASTLINK
2024-11-12 10:36:44 -08:00
Nikita Smith
bd4f82c8e8
cursed early return
2024-11-08 16:46:11 -08:00
Nikita Smith
680ea2ffdc
added /RAD_IDLE_WORKERS
2024-11-08 16:09:56 -08:00
Nikita Smith
f7d7f6633f
expose file API to enable IO detouring
2024-11-08 16:09:56 -08:00
Nikita Smith
8e6a0ae4db
errors and warnings fixes
2024-11-08 11:43:05 -08:00
Nikita Smith
e297460697
add necessary Linux impls for linker
...
NOTE: Current OS API for semaphores doesn't work well with Linux/pthreads
way, for example, on Linux it's up to user program to allocate shared memory
and store there sem_t and detect when to release it. (Windows does this under
the hood when process that created shared semaphore exits)
2024-11-08 11:43:05 -08:00
Nikita Smith
cf8c0e7442
clang and gcc bit ops
2024-11-08 11:43:05 -08:00
Nikita Smith
776c8daa27
updated build.sh to define git hash
2024-11-08 11:43:05 -08:00
Nikita Smith
69b43c76d4
default to llvm-mt on non-windows platforms
2024-11-08 11:43:05 -08:00
Nikita Smith
d114a0e961
tidy up guid on linux
2024-11-08 11:43:05 -08:00
Nikita Smith
d177e39a54
build.sh add radlink target
2024-11-08 11:43:05 -08:00
Nikita Smith
15d43d7c99
removed dependency on os_ext
2024-11-07 14:12:41 -08:00
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