@@ -581,7 +581,7 @@ bool Writer::createThunks(OutputSection *os, int margin) {
581
581
582
582
// Create a code map for CHPE metadata.
583
583
void Writer::createECCodeMap () {
584
- if (!ctx.symtabEC )
584
+ if (!ctx.symtab . isEC () )
585
585
return ;
586
586
587
587
// Clear the map in case we were're recomputing the map after adding
@@ -617,8 +617,7 @@ void Writer::createECCodeMap() {
617
617
618
618
closeRange ();
619
619
620
- Symbol *tableCountSym =
621
- ctx.symtabEC ->findUnderscore (" __hybrid_code_map_count" );
620
+ Symbol *tableCountSym = ctx.symtab .findUnderscore (" __hybrid_code_map_count" );
622
621
cast<DefinedAbsolute>(tableCountSym)->setVA (codeMap.size ());
623
622
}
624
623
@@ -2234,11 +2233,10 @@ void Writer::maybeAddRVATable(SymbolRVASet tableSymbols, StringRef tableSym,
2234
2233
2235
2234
// Create CHPE metadata chunks.
2236
2235
void Writer::createECChunks () {
2237
- SymbolTable *symtab = ctx.symtabEC ;
2238
- if (!symtab)
2236
+ if (!ctx.symtab .isEC ())
2239
2237
return ;
2240
2238
2241
- for (Symbol *s : symtab-> expSymbols ) {
2239
+ for (Symbol *s : ctx. symtab . expSymbols ) {
2242
2240
auto sym = dyn_cast<Defined>(s);
2243
2241
if (!sym || !sym->getChunk ())
2244
2242
continue ;
@@ -2257,9 +2255,9 @@ void Writer::createECChunks() {
2257
2255
// we should use the #foo$hp_target symbol as the redirection target.
2258
2256
// First, try to look up the $hp_target symbol. If it can't be found,
2259
2257
// assume it's a regular function and look for #foo instead.
2260
- Symbol *targetSym = symtab-> find ((targetName + " $hp_target" ).str ());
2258
+ Symbol *targetSym = ctx. symtab . find ((targetName + " $hp_target" ).str ());
2261
2259
if (!targetSym)
2262
- targetSym = symtab-> find (targetName);
2260
+ targetSym = ctx. symtab . find (targetName);
2263
2261
Defined *t = dyn_cast_or_null<Defined>(targetSym);
2264
2262
if (t && isArm64EC (t->getChunk ()->getMachine ()))
2265
2263
exportThunks.push_back ({chunk, t});
@@ -2268,20 +2266,20 @@ void Writer::createECChunks() {
2268
2266
2269
2267
auto codeMapChunk = make<ECCodeMapChunk>(codeMap);
2270
2268
rdataSec->addChunk (codeMapChunk);
2271
- Symbol *codeMapSym = symtab-> findUnderscore (" __hybrid_code_map" );
2269
+ Symbol *codeMapSym = ctx. symtab . findUnderscore (" __hybrid_code_map" );
2272
2270
replaceSymbol<DefinedSynthetic>(codeMapSym, codeMapSym->getName (),
2273
2271
codeMapChunk);
2274
2272
2275
2273
CHPECodeRangesChunk *ranges = make<CHPECodeRangesChunk>(exportThunks);
2276
2274
rdataSec->addChunk (ranges);
2277
2275
Symbol *rangesSym =
2278
- symtab-> findUnderscore (" __x64_code_ranges_to_entry_points" );
2276
+ ctx. symtab . findUnderscore (" __x64_code_ranges_to_entry_points" );
2279
2277
replaceSymbol<DefinedSynthetic>(rangesSym, rangesSym->getName (), ranges);
2280
2278
2281
2279
CHPERedirectionChunk *entryPoints = make<CHPERedirectionChunk>(exportThunks);
2282
2280
a64xrmSec->addChunk (entryPoints);
2283
2281
Symbol *entryPointsSym =
2284
- symtab-> findUnderscore (" __arm64x_redirection_metadata" );
2282
+ ctx. symtab . findUnderscore (" __arm64x_redirection_metadata" );
2285
2283
replaceSymbol<DefinedSynthetic>(entryPointsSym, entryPointsSym->getName (),
2286
2284
entryPoints);
2287
2285
}
@@ -2385,8 +2383,7 @@ void Writer::setSectionPermissions() {
2385
2383
2386
2384
// Set symbols used by ARM64EC metadata.
2387
2385
void Writer::setECSymbols () {
2388
- SymbolTable *symtab = ctx.symtabEC ;
2389
- if (!symtab)
2386
+ if (!ctx.symtab .isEC ())
2390
2387
return ;
2391
2388
2392
2389
llvm::stable_sort (exportThunks, [](const std::pair<Chunk *, Defined *> &a,
@@ -2395,45 +2392,45 @@ void Writer::setECSymbols() {
2395
2392
});
2396
2393
2397
2394
ChunkRange &chpePdata = ctx.hybridSymtab ? hybridPdata : pdata;
2398
- Symbol *rfeTableSym = symtab-> findUnderscore (" __arm64x_extra_rfe_table" );
2395
+ Symbol *rfeTableSym = ctx. symtab . findUnderscore (" __arm64x_extra_rfe_table" );
2399
2396
replaceSymbol<DefinedSynthetic>(rfeTableSym, " __arm64x_extra_rfe_table" ,
2400
2397
chpePdata.first );
2401
2398
2402
2399
if (chpePdata.first ) {
2403
2400
Symbol *rfeSizeSym =
2404
- symtab-> findUnderscore (" __arm64x_extra_rfe_table_size" );
2401
+ ctx. symtab . findUnderscore (" __arm64x_extra_rfe_table_size" );
2405
2402
cast<DefinedAbsolute>(rfeSizeSym)
2406
2403
->setVA (chpePdata.last ->getRVA () + chpePdata.last ->getSize () -
2407
2404
chpePdata.first ->getRVA ());
2408
2405
}
2409
2406
2410
2407
Symbol *rangesCountSym =
2411
- symtab-> findUnderscore (" __x64_code_ranges_to_entry_points_count" );
2408
+ ctx. symtab . findUnderscore (" __x64_code_ranges_to_entry_points_count" );
2412
2409
cast<DefinedAbsolute>(rangesCountSym)->setVA (exportThunks.size ());
2413
2410
2414
2411
Symbol *entryPointCountSym =
2415
- symtab-> findUnderscore (" __arm64x_redirection_metadata_count" );
2412
+ ctx. symtab . findUnderscore (" __arm64x_redirection_metadata_count" );
2416
2413
cast<DefinedAbsolute>(entryPointCountSym)->setVA (exportThunks.size ());
2417
2414
2418
- Symbol *iatSym = symtab-> findUnderscore (" __hybrid_auxiliary_iat" );
2415
+ Symbol *iatSym = ctx. symtab . findUnderscore (" __hybrid_auxiliary_iat" );
2419
2416
replaceSymbol<DefinedSynthetic>(iatSym, " __hybrid_auxiliary_iat" ,
2420
2417
idata.auxIat .empty () ? nullptr
2421
2418
: idata.auxIat .front ());
2422
2419
2423
- Symbol *iatCopySym = symtab-> findUnderscore (" __hybrid_auxiliary_iat_copy" );
2420
+ Symbol *iatCopySym = ctx. symtab . findUnderscore (" __hybrid_auxiliary_iat_copy" );
2424
2421
replaceSymbol<DefinedSynthetic>(
2425
2422
iatCopySym, " __hybrid_auxiliary_iat_copy" ,
2426
2423
idata.auxIatCopy .empty () ? nullptr : idata.auxIatCopy .front ());
2427
2424
2428
2425
Symbol *delayIatSym =
2429
- symtab-> findUnderscore (" __hybrid_auxiliary_delayload_iat" );
2426
+ ctx. symtab . findUnderscore (" __hybrid_auxiliary_delayload_iat" );
2430
2427
replaceSymbol<DefinedSynthetic>(
2431
2428
delayIatSym, " __hybrid_auxiliary_delayload_iat" ,
2432
2429
delayIdata.getAuxIat ().empty () ? nullptr
2433
2430
: delayIdata.getAuxIat ().front ());
2434
2431
2435
2432
Symbol *delayIatCopySym =
2436
- symtab-> findUnderscore (" __hybrid_auxiliary_delayload_iat_copy" );
2433
+ ctx. symtab . findUnderscore (" __hybrid_auxiliary_delayload_iat_copy" );
2437
2434
replaceSymbol<DefinedSynthetic>(
2438
2435
delayIatCopySym, " __hybrid_auxiliary_delayload_iat_copy" ,
2439
2436
delayIdata.getAuxIatCopy ().empty () ? nullptr
@@ -2448,16 +2445,16 @@ void Writer::setECSymbols() {
2448
2445
if (auto thunkChunk =
2449
2446
dyn_cast<ECExportThunkChunk>(altEntrySym->getChunk ()))
2450
2447
altEntrySym = thunkChunk->target ;
2451
- symtab-> findUnderscore (" __arm64x_native_entrypoint" )
2448
+ ctx. symtab . findUnderscore (" __arm64x_native_entrypoint" )
2452
2449
->replaceKeepingName (altEntrySym, sizeof (SymbolUnion));
2453
2450
}
2454
2451
2455
- if (symtab-> edataStart )
2452
+ if (ctx. symtab . edataStart )
2456
2453
ctx.dynamicRelocs ->set (
2457
2454
dataDirOffset64 + EXPORT_TABLE * sizeof (data_directory) +
2458
2455
offsetof (data_directory, Size),
2459
- symtab-> edataEnd ->getRVA () - symtab-> edataStart ->getRVA () +
2460
- symtab-> edataEnd ->getSize ());
2456
+ ctx. symtab . edataEnd ->getRVA () - ctx. symtab . edataStart ->getRVA () +
2457
+ ctx. symtab . edataEnd ->getSize ());
2461
2458
if (hybridPdata.first ) {
2462
2459
ctx.dynamicRelocs ->set (
2463
2460
dataDirOffset64 + EXCEPTION_TABLE * sizeof (data_directory) +
0 commit comments