@@ -1327,10 +1327,11 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13271327 return 1 ;
13281328 }
13291329
1330- auto fatalBothAuthAndNonAuth = [&sym]() {
1331- fatal (" both AUTH and non-AUTH TLSDESC entries for '" + sym.getName () +
1332- " ' requested, but only one type of TLSDESC entry per symbol is "
1333- " supported" );
1330+ auto errBothAuthAndNonAuth = [this , &sym, offset]() {
1331+ Err (ctx) << " both AUTH and non-AUTH TLSDESC entries for '" << sym.getName ()
1332+ << " ' requested, but only one type of TLSDESC entry per symbol is "
1333+ " supported"
1334+ << getLocation (ctx, *sec, sym, offset);
13341335 };
13351336
13361337 // Do not optimize signed TLSDESC (as described in pauthabielf64 to LE/IE).
@@ -1339,10 +1340,12 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13391340 if (oneof<RE_AARCH64_AUTH_TLSDESC_PAGE, RE_AARCH64_AUTH_TLSDESC>(
13401341 expr)) {
13411342 assert (ctx.arg .emachine == EM_AARCH64);
1342- if (!sym.hasFlag (NEEDS_TLSDESC))
1343+ if (!sym.hasFlag (NEEDS_TLSDESC)) {
13431344 sym.setFlags (NEEDS_TLSDESC | NEEDS_TLSDESC_AUTH);
1344- else if (!sym.hasFlag (NEEDS_TLSDESC_AUTH))
1345- fatalBothAuthAndNonAuth ();
1345+ } else if (!sym.hasFlag (NEEDS_TLSDESC_AUTH)) {
1346+ errBothAuthAndNonAuth ();
1347+ return 1 ;
1348+ }
13461349 sec->addReloc ({expr, type, offset, addend, &sym});
13471350 return 1 ;
13481351 }
@@ -1353,7 +1356,7 @@ unsigned RelocationScanner::handleTlsRelocation(RelExpr expr, RelType type,
13531356 // with signed TLSDESC enabled since it does not give any value, but leave a
13541357 // check against that just in case someone uses it.
13551358 if (expr != R_TLSDESC_CALL)
1356- fatalBothAuthAndNonAuth ();
1359+ errBothAuthAndNonAuth ();
13571360 return 1 ;
13581361 }
13591362
0 commit comments