@@ -1331,10 +1331,11 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13311331 return 1 ;
13321332 }
13331333
1334- auto fatalBothAuthAndNonAuth = [&sym]() {
1335- fatal (" both AUTH and non-AUTH TLSDESC entries for '" + sym.getName () +
1336- " ' requested, but only one type of TLSDESC entry per symbol is "
1337- " supported" );
1334+ auto errBothAuthAndNonAuth = [this , &sym, offset]() {
1335+ Err (ctx) << " both AUTH and non-AUTH TLSDESC entries for '" << sym.getName ()
1336+ << " ' requested, but only one type of TLSDESC entry per symbol is "
1337+ " supported"
1338+ << getLocation (ctx, *sec, sym, offset);
13381339 };
13391340
13401341 // Do not optimize signed TLSDESC (as described in pauthabielf64 to LE/IE).
@@ -1343,10 +1344,12 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13431344 if (oneof<R_AARCH64_AUTH_TLSDESC_PAGE, RelExpr::R_AARCH64_AUTH_TLSDESC>(
13441345 expr)) {
13451346 assert (ctx.arg .emachine == EM_AARCH64);
1346- if (!sym.hasFlag (NEEDS_TLSDESC))
1347+ if (!sym.hasFlag (NEEDS_TLSDESC)) {
13471348 sym.setFlags (NEEDS_TLSDESC | NEEDS_TLSDESC_AUTH);
1348- else if (!sym.hasFlag (NEEDS_TLSDESC_AUTH))
1349- fatalBothAuthAndNonAuth ();
1349+ } else if (!sym.hasFlag (NEEDS_TLSDESC_AUTH)) {
1350+ errBothAuthAndNonAuth ();
1351+ return 1 ;
1352+ }
13501353 sec->addReloc ({expr, type, offset, addend, &sym});
13511354 return 1 ;
13521355 }
@@ -1357,7 +1360,7 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13571360 // with signed TLSDESC enabled since it does not give any value, but leave a
13581361 // check against that just in case someone uses it.
13591362 if (expr != R_TLSDESC_CALL)
1360- fatalBothAuthAndNonAuth ();
1363+ errBothAuthAndNonAuth ();
13611364 return 1 ;
13621365 }
13631366
0 commit comments