gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gold / tls.h
index 9324701c105c73115fee390d4a76bac3abea8f9a..44e6d1dd09320f2f2be2f7a47478d698e2fd6cc2 100644 (file)
@@ -1,6 +1,6 @@
 // tls.h -- Thread-Local Storage utility routines for gold   -*- C++ -*-
 
-// Copyright 2006, 2007 Free Software Foundation, Inc.
+// Copyright (C) 2006-2020 Free Software Foundation, Inc.
 // Written by Ian Lance Taylor <iant@google.com>.
 
 // This file is part of gold.
@@ -50,16 +50,13 @@ inline void
 check_range(const Relocate_info<size, big_endian>* relinfo,
             size_t relnum,
             typename elfcpp::Elf_types<size>::Elf_Addr rel_offset,
-            off_t view_size, off_t off)
+            section_size_type view_size, int off)
 {
-  off_t offset = rel_offset + off;
-  if (offset < 0 || offset > view_size)
-    {
-      fprintf(stderr, _("%s: %s: TLS relocation out of range\n"),
-             program_name,
-             relinfo->location(relnum, rel_offset).c_str());
-      gold_exit(false);
-    }
+  typename elfcpp::Elf_types<size>::Elf_Addr offset = rel_offset + off;
+  // Elf_Addr is unsigned, so this also tests for signed offset < 0.
+  if (offset > view_size)
+    gold_error_at_location(relinfo, relnum, rel_offset,
+                          _("TLS relocation out of range"));
 }
 
 // Check the validity of a TLS relocation.  This is like assert.
@@ -72,13 +69,8 @@ check_tls(const Relocate_info<size, big_endian>* relinfo,
           bool valid)
 {
   if (!valid)
-    {
-      fprintf(stderr,
-             _("%s: %s: TLS relocation against invalid instruction\n"),
-             program_name,
-             relinfo->location(relnum, rel_offset).c_str());
-      gold_exit(false);
-    }
+    gold_error_at_location(relinfo, relnum, rel_offset,
+                          _("TLS relocation against invalid instruction"));
 }
 
 
This page took 0.025707 seconds and 4 git commands to generate.