]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
This commit was manufactured by cvs2svn to create branch 'binutils-
authornobody <>
Fri, 20 Sep 2002 07:57:09 +0000 (07:57 +0000)
committernobody <>
Fri, 20 Sep 2002 07:57:09 +0000 (07:57 +0000)
2_13-branch'.

Cherrypick from master 2002-09-20 07:57:08 UTC Alan Modra <amodra@gmail.com> ' * ld-i386/i386.exp: Only run tests on ELF targets.':
    bfd/elf32-i386-fbsd.c
    bfd/elf64-alpha-fbsd.c
    bfd/po/da.po
    gas/testsuite/gas/mips/mips-abi32-pic2.d
    gas/testsuite/gas/mips/mips-abi32-pic2.s
    ld/testsuite/ld-i386/i386.exp
    ld/testsuite/ld-i386/tlsbin.dd
    ld/testsuite/ld-i386/tlsbin.rd
    ld/testsuite/ld-i386/tlsbin.s
    ld/testsuite/ld-i386/tlsbin.sd
    ld/testsuite/ld-i386/tlsbin.td
    ld/testsuite/ld-i386/tlsbinpic.s
    ld/testsuite/ld-i386/tlslib.s
    ld/testsuite/ld-i386/tlsnopic.dd
    ld/testsuite/ld-i386/tlsnopic.rd
    ld/testsuite/ld-i386/tlsnopic.sd
    ld/testsuite/ld-i386/tlsnopic1.s
    ld/testsuite/ld-i386/tlsnopic2.s
    ld/testsuite/ld-i386/tlspic.dd
    ld/testsuite/ld-i386/tlspic.rd
    ld/testsuite/ld-i386/tlspic.sd
    ld/testsuite/ld-i386/tlspic.td
    ld/testsuite/ld-i386/tlspic1.s
    ld/testsuite/ld-i386/tlspic2.s

24 files changed:
bfd/elf32-i386-fbsd.c [new file with mode: 0644]
bfd/elf64-alpha-fbsd.c [new file with mode: 0644]
bfd/po/da.po [new file with mode: 0644]
gas/testsuite/gas/mips/mips-abi32-pic2.d [new file with mode: 0644]
gas/testsuite/gas/mips/mips-abi32-pic2.s [new file with mode: 0644]
ld/testsuite/ld-i386/i386.exp [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbin.dd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbin.rd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbin.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbin.sd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbin.td [new file with mode: 0644]
ld/testsuite/ld-i386/tlsbinpic.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlslib.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlsnopic.dd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsnopic.rd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsnopic.sd [new file with mode: 0644]
ld/testsuite/ld-i386/tlsnopic1.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlsnopic2.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic.dd [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic.rd [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic.sd [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic.td [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic1.s [new file with mode: 0644]
ld/testsuite/ld-i386/tlspic2.s [new file with mode: 0644]

diff --git a/bfd/elf32-i386-fbsd.c b/bfd/elf32-i386-fbsd.c
new file mode 100644 (file)
index 0000000..500e0eb
--- /dev/null
@@ -0,0 +1,56 @@
+/* Intel IA-32 specific support for 32-bit ELF on FreeBSD.
+   Copyright 2002 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#define TARGET_LITTLE_SYM      bfd_elf32_i386_freebsd_vec
+#define TARGET_LITTLE_NAME     "elf32-i386-freebsd"
+#define ELF_ARCH               bfd_arch_i386
+#define ELF_MACHINE_CODE       EM_386
+#define ELF_MAXPAGESIZE                0x1000
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "elf-bfd.h"
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void elf_i386_post_process_headers
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void
+elf_i386_post_process_headers (abfd, link_info)
+     bfd * abfd;
+     struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
+{
+  Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form.  */
+
+  i_ehdrp = elf_elfheader (abfd);
+
+  /* Put an ABI label supported by FreeBSD >= 4.1.  */
+  i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
+#ifdef OLD_FREEBSD_ABI_LABEL
+  /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard.  */
+  memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
+#endif
+}
+
+#define elf_backend_post_process_headers       elf_i386_post_process_headers
+
+#include "elf32-i386.c"
diff --git a/bfd/elf64-alpha-fbsd.c b/bfd/elf64-alpha-fbsd.c
new file mode 100644 (file)
index 0000000..061b0b8
--- /dev/null
@@ -0,0 +1,56 @@
+/* Alpha specific support for 64-bit ELF on FreeBSD.
+   Copyright 2002 Free Software Foundation, Inc.
+
+This file is part of BFD, the Binary File Descriptor library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+#define TARGET_LITTLE_SYM      bfd_elf64_alpha_freebsd_vec
+#define TARGET_LITTLE_NAME     "elf64-alpha-freebsd"
+#define ELF_ARCH               bfd_arch_alpha
+#define ELF_MACHINE_CODE       EM_ALPHA
+#define ELF_MAXPAGESIZE                0x10000
+
+#include "bfd.h"
+#include "sysdep.h"
+#include "elf-bfd.h"
+
+/* The kernel recognizes executables as valid only if they carry a
+   "FreeBSD" label in the ELF header.  So we put this label on all
+   executables and (for simplicity) also all other object files.  */
+
+static void elf_alpha_post_process_headers
+  PARAMS ((bfd *, struct bfd_link_info *));
+
+static void
+elf_alpha_post_process_headers (abfd, link_info)
+     bfd * abfd;
+     struct bfd_link_info * link_info ATTRIBUTE_UNUSED;
+{
+  Elf_Internal_Ehdr * i_ehdrp; /* ELF file header, internal form.  */
+
+  i_ehdrp = elf_elfheader (abfd);
+
+  /* Put an ABI label supported by FreeBSD >= 4.1.  */
+  i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
+#ifdef OLD_FREEBSD_ABI_LABEL
+  /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard.  */
+  memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
+#endif
+}
+
+#define elf_backend_post_process_headers       elf_alpha_post_process_headers
+
+#include "elf64-alpha.c"
diff --git a/bfd/po/da.po b/bfd/po/da.po
new file mode 100644 (file)
index 0000000..6f18484
--- /dev/null
@@ -0,0 +1,2745 @@
+# Danish messages for bfd.
+# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Keld Simonsen <keld@dkuug.dk>, 2002
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bfd 2.12.91\n"
+"POT-Creation-Date: 2002-07-23 15:55-0400\n"
+"PO-Revision-Date: 2002-09-07 21:55+0200\n"
+"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: aout-adobe.c:197
+#, c-format
+msgid "%s: Unknown section type in a.out.adobe file: %x\n"
+msgstr "%s: Ukendt sektionstype i a.out.adobe-fil: %x\n"
+
+#: aout-cris.c:208
+#, c-format
+msgid "%s: Invalid relocation type exported: %d"
+msgstr "%s: Ugyldig relokaliseringstype eksporteret: %d"
+
+#: aout-cris.c:252
+#, c-format
+msgid "%s: Invalid relocation type imported: %d"
+msgstr "%s: Ugyldig relokaliseringstype importeret: %d"
+
+#: aout-cris.c:263
+#, c-format
+msgid "%s: Bad relocation record imported: %d"
+msgstr "%s: Fejlagtig relokaliseringstype importeret: %d"
+
+#: aoutx.h:1282 aoutx.h:1699
+#, c-format
+msgid "%s: can not represent section `%s' in a.out object file format"
+msgstr "%s: kan ikke representere sektionen \"%s\" i a.out-objektfilformat"
+
+#: aoutx.h:1669
+#, c-format
+msgid "%s: can not represent section for symbol `%s' in a.out object file format"
+msgstr "%s: kan ikke representere sektion for symbolet \"%s\" i a.out-objektfilformat"
+
+#: aoutx.h:1671
+msgid "*unknown*"
+msgstr "*ukendt*"
+
+#: aoutx.h:3732
+#, c-format
+msgid "%s: relocateable link from %s to %s not supported"
+msgstr "%s: relokaliseringsbar lænke fra %s til %s understøttes inte"
+
+#: archive.c:1826
+msgid "Warning: writing archive was slow: rewriting timestamp\n"
+msgstr "Advarsel: arkivskrivning var langsom: genskriver tidsstempel\n"
+
+#: archive.c:2093
+msgid "Reading archive file mod timestamp"
+msgstr "Læser arkivfilens ændringstidsstempel"
+
+#. FIXME: bfd can't call perror.
+#: archive.c:2120
+msgid "Writing updated armap timestamp"
+msgstr "Skriver opdateret armap-tidsstempel"
+
+#: bfd.c:274
+msgid "No error"
+msgstr "Ingen fejl"
+
+#: bfd.c:275
+msgid "System call error"
+msgstr "Systemkaldsfejl"
+
+#: bfd.c:276
+msgid "Invalid bfd target"
+msgstr "Ugyldigt bfd-mål"
+
+#: bfd.c:277
+msgid "File in wrong format"
+msgstr "Filen er i forkert format"
+
+#: bfd.c:278
+msgid "Archive object file in wrong format"
+msgstr "Arkivobjektfil er i forkert format"
+
+#: bfd.c:279
+msgid "Invalid operation"
+msgstr "Ugyldig handling"
+
+#: bfd.c:280
+msgid "Memory exhausted"
+msgstr "Hukommelsen er opbrugt"
+
+#: bfd.c:281
+msgid "No symbols"
+msgstr "Ingen symboler"
+
+#: bfd.c:282
+msgid "Archive has no index; run ranlib to add one"
+msgstr "Arkivet har intet index; kør ranlib for at tilføje ét"
+
+#: bfd.c:283
+msgid "No more archived files"
+msgstr "Ikke flere arkiverede filer"
+
+#: bfd.c:284
+msgid "Malformed archive"
+msgstr "Forvansket arkiv"
+
+#: bfd.c:285
+msgid "File format not recognized"
+msgstr "Filformatet ikke genkendt"
+
+#: bfd.c:286
+msgid "File format is ambiguous"
+msgstr "Filformatet er flertydigt"
+
+#: bfd.c:287
+msgid "Section has no contents"
+msgstr "Sektionen har intet indhold"
+
+#: bfd.c:288
+msgid "Nonrepresentable section on output"
+msgstr "Ikkerepræsenterbar sektion i uddata"
+
+#: bfd.c:289
+msgid "Symbol needs debug section which does not exist"
+msgstr "Symbolet kræver fejlsøgningssektion som ikke eksisterer"
+
+#: bfd.c:290
+msgid "Bad value"
+msgstr "Fejlagtigt værdi"
+
+#: bfd.c:291
+msgid "File truncated"
+msgstr "Filen trunkeret"
+
+#: bfd.c:292
+msgid "File too big"
+msgstr "Filen er for stor"
+
+#: bfd.c:293
+msgid "#<Invalid error code>"
+msgstr "#<Ugyldig fejlkode>"
+
+#: bfd.c:700
+#, c-format
+msgid "BFD %s assertion fail %s:%d"
+msgstr "BFD %s-forsikring mislykkedes %s:%d"
+
+#: bfd.c:719
+#, c-format
+msgid "BFD %s internal error, aborting at %s line %d in %s\n"
+msgstr "Intern BFD %s-fejl, afbryder ved %s linje %d i %s\n"
+
+#: bfd.c:723
+#, c-format
+msgid "BFD %s internal error, aborting at %s line %d\n"
+msgstr "Internt BFD %s-fejl, afbryder ved %s linje %d\n"
+
+#: bfd.c:725
+msgid "Please report this bug.\n"
+msgstr "Rapportér gerne denne fejl.\n"
+
+#: binary.c:306
+#, c-format
+msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
+msgstr "Advarsel: Skrivning af sektionen \"%s\" til enorm (dvs negativ) afsætsbyte 0x%lx."
+
+# src/menus.c:341
+#: coff-a29k.c:119
+msgid "Missing IHCONST"
+msgstr "IHCONST mangler"
+
+# src/menus.c:341
+#: coff-a29k.c:180
+msgid "Missing IHIHALF"
+msgstr "IHIHALF mangler"
+
+#: coff-a29k.c:212 coff-or32.c:229
+msgid "Unrecognized reloc"
+msgstr "Ukendt relokalisering"
+
+#: coff-a29k.c:408
+msgid "missing IHCONST reloc"
+msgstr "IHCONST-relokalisering mangler"
+
+#: coff-a29k.c:498
+msgid "missing IHIHALF reloc"
+msgstr "IHIHALF-relokalisering mangler"
+
+#: coff-alpha.c:881 coff-alpha.c:918 coff-alpha.c:1989 coff-mips.c:1432
+msgid "GP relative relocation used when GP not defined"
+msgstr "GP-relativ relokalisering bruges når GP ikke er defineret"
+
+#: coff-alpha.c:1485
+msgid "using multiple gp values"
+msgstr "bruger flere gp-værdier"
+
+#: coff-arm.c:1066 elf32-arm.h:285
+#, c-format
+msgid "%s: unable to find THUMB glue '%s' for `%s'"
+msgstr "%s: kunne ikke finde THUMB-klistret \"%s\" til \"%s\""
+
+#: coff-arm.c:1096 elf32-arm.h:320
+#, c-format
+msgid "%s: unable to find ARM glue '%s' for `%s'"
+msgstr "%s: kunne ikke finde ARM-klistret \"%s\" til \"%s\""
+
+#: coff-arm.c:1391 coff-arm.c:1486 elf32-arm.h:887 elf32-arm.h:991
+#, c-format
+msgid "%s(%s): warning: interworking not enabled."
+msgstr "%s(%s): advarsel: samvirken er ikke aktiveret."
+
+#: coff-arm.c:1395 elf32-arm.h:994
+#, c-format
+msgid "  first occurrence: %s: arm call to thumb"
+msgstr "  første forekomst: %s: arm-kald til thumb"
+
+#: coff-arm.c:1490 elf32-arm.h:890
+#, c-format
+msgid "  first occurrence: %s: thumb call to arm"
+msgstr "  første forekomst: %s: thumb-kald til arm"
+
+#: coff-arm.c:1493
+msgid "  consider relinking with --support-old-code enabled"
+msgstr "  overvej omlænkning med --support-old-code aktiveret"
+
+#: coff-arm.c:1785 coff-tic80.c:686 cofflink.c:3031
+#, c-format
+msgid "%s: bad reloc address 0x%lx in section `%s'"
+msgstr "%s: fejlagtig relokaliseringsadresse 0x%lx i sektionen \"%s\""
+
+#: coff-arm.c:2127
+#, c-format
+msgid "%s: illegal symbol index in reloc: %d"
+msgstr "%s: utilladt symbolindex i relokalisering: %d"
+
+#: coff-arm.c:2255
+#, c-format
+msgid "ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d"
+msgstr "FEJL: %s kompileret for APCS-%d, mens %s er kompileret for APCS-%d"
+
+#: coff-arm.c:2270 elf32-arm.h:2297
+#, c-format
+msgid "ERROR: %s passes floats in float registers, whereas %s passes them in integer registers"
+msgstr "FEJL: %s overfører flydende tal i flydende talsregister, mens %s overfører dem i heltalsregister"
+
+#: coff-arm.c:2273 elf32-arm.h:2302
+#, c-format
+msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers"
+msgstr "FEJL: %s overfører flydende tal i heltalsregister, mens %s overfører dem i flydendetalsregister"
+
+#: coff-arm.c:2288
+#, c-format
+msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position"
+msgstr "FEJL: %s er kompileret som positionsuafhængig kode, mens målet %s har absolut position"
+
+#: coff-arm.c:2291
+#, c-format
+msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent"
+msgstr "FEJL: %s er kompileret som kode med absolut position, mens målet %s er positionsuafhængigt"
+
+#: coff-arm.c:2320 elf32-arm.h:2358
+#, c-format
+msgid "Warning: %s supports interworking, whereas %s does not"
+msgstr "Advarsel: %s understøtter samvirken, mens %s derimod ikke gør det"
+
+#: coff-arm.c:2323 elf32-arm.h:2365
+#, c-format
+msgid "Warning: %s does not support interworking, whereas %s does"
+msgstr "Advarsel: %s understøtter ikke samvirken, mens %s derimod gør det"
+
+#: coff-arm.c:2350
+#, c-format
+msgid "private flags = %x:"
+msgstr "private flag = %x:"
+
+#: coff-arm.c:2358 elf32-arm.h:2418
+msgid " [floats passed in float registers]"
+msgstr " [flydende tal overført i flydendetalsregistre]"
+
+#: coff-arm.c:2360
+msgid " [floats passed in integer registers]"
+msgstr " [flydende tal overført i heltalsregistre]"
+
+#: coff-arm.c:2363 elf32-arm.h:2421
+msgid " [position independent]"
+msgstr " [positionsuafhængigt]"
+
+#: coff-arm.c:2365
+msgid " [absolute position]"
+msgstr " [absolut position]"
+
+#: coff-arm.c:2369
+msgid " [interworking flag not initialised]"
+msgstr " [samvirkendeflag er ikke initieret]"
+
+#: coff-arm.c:2371
+msgid " [interworking supported]"
+msgstr " [samvirken understøttes]"
+
+#: coff-arm.c:2373
+msgid " [interworking not supported]"
+msgstr " [samvirken understøttes ikke]"
+
+#: coff-arm.c:2421 elf32-arm.h:2124
+#, c-format
+msgid "Warning: Not setting interworking flag of %s since it has already been specified as non-interworking"
+msgstr "Advarsel: Sætter ikke samvirkeflaget for %s da den allerede er angivet som ikke-samvirkende"
+
+#: coff-arm.c:2425 elf32-arm.h:2128
+#, c-format
+msgid "Warning: Clearing the interworking flag of %s due to outside request"
+msgstr "Advarsel: Fjerner samvirkeflaget for %s på grund af anmodning udefra"
+
+#: coff-i960.c:136 coff-i960.c:485
+msgid "uncertain calling convention for non-COFF symbol"
+msgstr "usikker kaldskonvention for ikke-COFF-symbol"
+
+#: coff-m68k.c:481 coff-mips.c:2429 elf32-m68k.c:2157 elf32-mips.c:1844
+msgid "unsupported reloc type"
+msgstr "relokaliseringstypen understøttes ikke"
+
+#: coff-mips.c:874 elf32-mips.c:1062 elf64-mips.c:1609
+msgid "GP relative relocation when _gp not defined"
+msgstr "GP-relativ relokalisering når _gp ikke var defineret"
+
+#. No other sections should appear in -membedded-pic
+#. code.
+#: coff-mips.c:2466
+msgid "reloc against unsupported section"
+msgstr "relokalisering mod sektion som ikke understøttes"
+
+#: coff-mips.c:2474
+msgid "reloc not properly aligned"
+msgstr "relokalisering ikke på lige grænse"
+
+#: coff-rs6000.c:2766
+#, c-format
+msgid "%s: unsupported relocation type 0x%02x"
+msgstr "%s: relokaliseringstypen 0x%02x understøttes ikke"
+
+#: coff-rs6000.c:2859
+#, c-format
+msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
+msgstr "%s: TOC-relokalisering ved 0x%x til symbolet \"%s\" uden nogen TOC-post"
+
+#: coff-rs6000.c:3590 coff64-rs6000.c:2091
+#, c-format
+msgid "%s: symbol `%s' has unrecognized smclas %d"
+msgstr "%s: symbolet \"%s\" har ukendt smclas %d"
+
+#: coff-tic54x.c:279 coff-tic80.c:449
+#, c-format
+msgid "Unrecognized reloc type 0x%x"
+msgstr "Ukendt relokaliseringstype 0x%x"
+
+#: coff-tic54x.c:390 coffcode.h:4974
+#, c-format
+msgid "%s: warning: illegal symbol index %ld in relocs"
+msgstr "%s: advarsel: utilladt symbolindex %ld i relokaliseringerne"
+
+#: coff-w65.c:363
+#, c-format
+msgid "ignoring reloc %s\n"
+msgstr "ignorerer relokalisering %s\n"
+
+#: coffcode.h:1086
+#, c-format
+msgid "%s (%s): Section flag %s (0x%x) ignored"
+msgstr "%s (%s): Sektionsflaget %s (0x%x) ignoreredes"
+
+#: coffcode.h:2143
+#, c-format
+msgid "Unrecognized TI COFF target id '0x%x'"
+msgstr "Ukendt TI COFF-mål-id \"0x%x\""
+
+#: coffcode.h:4365
+#, c-format
+msgid "%s: warning: illegal symbol index %ld in line numbers"
+msgstr "%s: advarsel: utilladt symbolindex %ld i linjenummer"
+
+#: coffcode.h:4379
+#, c-format
+msgid "%s: warning: duplicate line number information for `%s'"
+msgstr "%s: advarsel: dobbelt linjenummersinformation for \"%s\""
+
+#: coffcode.h:4736
+#, c-format
+msgid "%s: Unrecognized storage class %d for %s symbol `%s'"
+msgstr "%s: Ukendt lagringsklasse %d for %s-symbolet \"%s\""
+
+#: coffcode.h:4867
+#, c-format
+msgid "warning: %s: local symbol `%s' has no section"
+msgstr "advarsel: %s: lokalt symbol \"%s\" har ingen sektion"
+
+#: coffcode.h:5012
+#, c-format
+msgid "%s: illegal relocation type %d at address 0x%lx"
+msgstr "%s: utilladt relokaliseringstype %d på adresse 0x%lx"
+
+#: coffgen.c:1661
+#, c-format
+msgid "%s: bad string table size %lu"
+msgstr "%s: fejlagtig strengtabelstørrelse %lu"
+
+#: cofflink.c:534 elflink.h:1912
+#, c-format
+msgid "Warning: type of symbol `%s' changed from %d to %d in %s"
+msgstr "Advarsel: typen på symbol \"%s\" ændredes fra %d til %d i %s"
+
+#: cofflink.c:2321
+#, c-format
+msgid "%s: relocs in section `%s', but it has no contents"
+msgstr "%s: relokaliseringer i sektionen \"%s\", men den har intet indhold"
+
+#: cofflink.c:2664 coffswap.h:877
+#, c-format
+msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr "%s: %s: relokalisering giver overløb: 0x%lx > 0xffff"
+
+#: cofflink.c:2673 coffswap.h:864
+#, c-format
+msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%s: advarsel: %s: linjenummer giver overløb: 0x%lx > 0xffff"
+
+#: dwarf2.c:382
+msgid "Dwarf Error: Can't find .debug_str section."
+msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_str."
+
+#: dwarf2.c:399
+#, c-format
+msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."
+msgstr "Dwarf-fejl: DW_FORM_strp-afstanden (%lu) større end eller lig med størrelsen på .debug_str (%lu)."
+
+#: dwarf2.c:543
+msgid "Dwarf Error: Can't find .debug_abbrev section."
+msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_abbrev."
+
+#: dwarf2.c:560
+#, c-format
+msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."
+msgstr "Dwarf-fejl: Forkortningsafstanden (%lu) større end eller lig med størrelsen .debug_abbrev (%lu)."
+
+#: dwarf2.c:757
+#, c-format
+msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
+msgstr "Dwarf-fejl: Ugyldig eller ubehandlet FORM-værdi: %u."
+
+#: dwarf2.c:852
+msgid "Dwarf Error: mangled line number section (bad file number)."
+msgstr "Dwarf-fejl: vanskabt linjenummerssektion (fejlagtigt filnummer)."
+
+#: dwarf2.c:938
+msgid "Dwarf Error: Can't find .debug_line section."
+msgstr "Dwarf-fejl: Kan ikke finde sektionen .debug_line."
+
+#: dwarf2.c:961
+#, c-format
+msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."
+msgstr "Dwarf-fejl: Linjeafstanden (%lu) større end eller lig med størrelsen .debug_line (%lu)."
+
+#: dwarf2.c:1159
+msgid "Dwarf Error: mangled line number section."
+msgstr "Dwarf-fejl: vanskabt linjenummerssektion."
+
+#: dwarf2.c:1355 dwarf2.c:1566
+#, c-format
+msgid "Dwarf Error: Could not find abbrev number %u."
+msgstr "Dwarf-fejl: Kunne ikke finde forkortningsnumret %u."
+
+#: dwarf2.c:1527
+#, c-format
+msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."
+msgstr "Dwarf-fejl: fandt dwarf version \"%u\", denne læser håndterer kun information fra version 2."
+
+#: dwarf2.c:1534
+#, c-format
+msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
+msgstr "Dwarf-fejl: fandt adressestørrelsen \"%u\", denne læser kan ikke håndtere størrelser større end \"%u\"."
+
+#: dwarf2.c:1557
+#, c-format
+msgid "Dwarf Error: Bad abbrev number: %u."
+msgstr "Dwarf-fejl: Fejlagtigt forkortningsnummer: %u."
+
+#: ecoff.c:1318
+#, c-format
+msgid "Unknown basic type %d"
+msgstr "Ukendt grundtype %d"
+
+#: ecoff.c:1578
+#, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      Symbol slut+1: %ld"
+
+#: ecoff.c:1585 ecoff.c:1588
+#, c-format
+msgid ""
+"\n"
+"      First symbol: %ld"
+msgstr ""
+"\n"
+"      Første symbol: %ld"
+
+#: ecoff.c:1600
+#, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %-7ld   Type:  %s"
+msgstr ""
+"\n"
+"      Symbol slut+1: %-7ld  Typ:  %s"
+
+#: ecoff.c:1607
+#, c-format
+msgid ""
+"\n"
+"      Local symbol: %ld"
+msgstr ""
+"\n"
+"      Lokalt symbol: %ld"
+
+#: ecoff.c:1615
+#, c-format
+msgid ""
+"\n"
+"      struct; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      struct; symbol slut+1: %ld"
+
+#: ecoff.c:1620
+#, c-format
+msgid ""
+"\n"
+"      union; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      union; symbol slut+1: %ld"
+
+#: ecoff.c:1625
+#, c-format
+msgid ""
+"\n"
+"      enum; End+1 symbol: %ld"
+msgstr ""
+"\n"
+"      enum; symbol slut+1: %ld"
+
+#: ecoff.c:1631
+#, c-format
+msgid ""
+"\n"
+"      Type: %s"
+msgstr ""
+"\n"
+"      Type: %s"
+
+#: elf-hppa.h:1476 elf-hppa.h:1509 elf32-ppc.c:3091 elf32-sh.c:4213
+#: elf64-sh64.c:1659
+#, c-format
+msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
+msgstr "%s: advarsel: uløselig relokalisering mod symbol \"%s\" fra sektionen %s"
+
+#: elf-m10200.c:446 elf-m10300.c:656 elf32-arm.h:2084 elf32-avr.c:833
+#: elf32-cris.c:1403 elf32-d10v.c:481 elf32-fr30.c:635 elf32-frv.c:809
+#: elf32-h8300.c:548 elf32-i860.c:1031 elf32-m32r.c:1278 elf32-openrisc.c:439
+#: elf32-v850.c:1691 elf32-xstormy16.c:933 elf64-mmix.c:1302
+msgid "internal error: out of range error"
+msgstr "intern fejl: udenfor intervallet"
+
+#: elf-m10200.c:450 elf-m10300.c:660 elf32-arm.h:2088 elf32-avr.c:837
+#: elf32-cris.c:1407 elf32-d10v.c:485 elf32-fr30.c:639 elf32-frv.c:813
+#: elf32-h8300.c:552 elf32-i860.c:1035 elf32-m32r.c:1282 elf32-openrisc.c:443
+#: elf32-v850.c:1695 elf32-xstormy16.c:937 elf64-mmix.c:1306 elfxx-mips.c:5264
+msgid "internal error: unsupported relocation error"
+msgstr "intern fejl: relokaliseringen understøttes ikke"
+
+#: elf-m10200.c:454 elf-m10300.c:664 elf32-arm.h:2092 elf32-d10v.c:489
+#: elf32-h8300.c:556 elf32-m32r.c:1286
+msgid "internal error: dangerous error"
+msgstr "intern fejl: farlig fejl"
+
+#: elf-m10200.c:458 elf-m10300.c:668 elf32-arm.h:2096 elf32-avr.c:845
+#: elf32-cris.c:1415 elf32-d10v.c:493 elf32-fr30.c:647 elf32-frv.c:821
+#: elf32-h8300.c:560 elf32-i860.c:1043 elf32-m32r.c:1290 elf32-openrisc.c:451
+#: elf32-v850.c:1715 elf32-xstormy16.c:945 elf64-mmix.c:1314
+msgid "internal error: unknown error"
+msgstr "intern fejl: ukendt fejl"
+
+#: elf.c:343
+#, c-format
+msgid "%s: invalid string offset %u >= %lu for section `%s'"
+msgstr "%s: ugyldig strengafstand %u >= %lu for sektionen \"%s\""
+
+#: elf.c:589
+#, c-format
+msgid "%s: invalid SHT_GROUP entry"
+msgstr "%s: ugyldig SHT_GROUP-post"
+
+#: elf.c:660
+#, c-format
+msgid "%s: no group info for section %s"
+msgstr "%s: ingen gruppeinformation for sektionen %s"
+
+#: elf.c:1023
+msgid ""
+"\n"
+"Program Header:\n"
+msgstr ""
+"\n"
+"Programhoved:\n"
+
+#: elf.c:1073
+msgid ""
+"\n"
+"Dynamic Section:\n"
+msgstr ""
+"\n"
+"Dynamisk sektion:\n"
+
+#: elf.c:1202
+msgid ""
+"\n"
+"Version definitions:\n"
+msgstr ""
+"\n"
+"Versionsdefinitioner:\n"
+
+#: elf.c:1225
+msgid ""
+"\n"
+"Version References:\n"
+msgstr ""
+"\n"
+"Versionsreferencer:\n"
+
+#: elf.c:1230
+#, c-format
+msgid "  required from %s:\n"
+msgstr "  kræves fra %s:\n"
+
+#: elf.c:1902
+#, c-format
+msgid "%s: invalid link %lu for reloc section %s (index %u)"
+msgstr "%s: ugyldig lænke %lu for relokaliseringssektion %s (index %u)"
+
+#: elf.c:3603
+#, c-format
+msgid "%s: Not enough room for program headers (allocated %u, need %u)"
+msgstr "%s: Ikke tilstrækkeligt med plads for programhoveder (allokerede %u, behøver %u)"
+
+#: elf.c:3708
+#, c-format
+msgid "%s: Not enough room for program headers, try linking with -N"
+msgstr "%s: Ikke tilstrækkeligt med plads for programhoveder, forsøg at lænke med -N"
+
+#: elf.c:3833
+#, c-format
+msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x"
+msgstr "Fejl: Første sektion i segmentet (%s) begynder ved 0x%x mens segmentet begynder ved 0x%x"
+
+#: elf.c:4148
+#, c-format
+msgid "%s: warning: allocated section `%s' not in segment"
+msgstr "%s: advarsel: allokeret sektion \"%s\" ikke i segment"
+
+#: elf.c:4472
+#, c-format
+msgid "%s: symbol `%s' required but not present"
+msgstr "%s: symbol \"%s\" kræves men er ikke tilstede"
+
+#: elf.c:4749
+#, c-format
+msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n"
+msgstr "%s: advarsel: Tomt indlæsningsbart segment opdaget, er dette meningen?\n"
+
+#: elf.c:6193
+#, c-format
+msgid "%s: unsupported relocation type %s"
+msgstr "%s: relokaliseringstypen %s understøttes ikke"
+
+#: elf32-arm.h:1221
+#, c-format
+msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'."
+msgstr "%s: Advarsel: Arm BLX-instruktion bruger Arm-funktionen \"%s\" som mål."
+
+#: elf32-arm.h:1417
+#, c-format
+msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'."
+msgstr "%s: Advarsel: Thumb BLX-instruktionen bruger thumb-funktionen \"%s\" som mål."
+
+#: elf32-arm.h:1914 elf32-sh.c:4125
+#, c-format
+msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section"
+msgstr "%s(%s+0x%lx): %s relokalisering mod SEC_MERGE-sektion"
+
+#: elf32-arm.h:2008
+#, c-format
+msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section"
+msgstr "%s: advarsel: uløselig relokalisering %d mod symbol \"%s\" fra sektionen %s"
+
+#: elf32-arm.h:2176
+#, c-format
+msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it"
+msgstr "Advarsel: Fjerner samvirkendeflaget i %s eftersom ikke-samvirkende kode i %s er lænket med det"
+
+#: elf32-arm.h:2271
+#, c-format
+msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d"
+msgstr "FEJL: %s er kompileret for EABI version %d, mens %s er kompileret for version %d"
+
+#: elf32-arm.h:2285
+#, c-format
+msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d"
+msgstr "FEJL: %s er kompileret for APCS-%d, mens målet %s bruger APCS-%d"
+
+#: elf32-arm.h:2313
+#, c-format
+msgid "ERROR: %s uses VFP instructions, whereas %s uses FPA instructions"
+msgstr "FEJL: %s bruger VFP-instruktioner, mens %s bruger FPA-instruktioner"
+
+#: elf32-arm.h:2318
+#, c-format
+msgid "ERROR: %s uses FPA instructions, whereas %s uses VFP instructions"
+msgstr "FEJL: %s bruger FPA-instruktioner, mens %s bruger VFP-instruktioner"
+
+#: elf32-arm.h:2338
+#, c-format
+msgid "ERROR: %s uses software FP, whereas %s uses hardware FP"
+msgstr "FEJL: %s bruger programmeret flydende tal, mens %s bruger maskinens flydende tal"
+
+#: elf32-arm.h:2343
+#, c-format
+msgid "ERROR: %s uses hardware FP, whereas %s uses software FP"
+msgstr "FEJL: %s bruger maskinens flydende tal, mens %s bruger programmeret flydende tal"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elf32-arm.h:2396 elf32-cris.c:2988 elf32-m68k.c:410 elf32-vax.c:543
+#: elfxx-mips.c:7756
+#, c-format
+msgid "private flags = %lx:"
+msgstr "private flag = %lx:"
+
+#: elf32-arm.h:2405
+msgid " [interworking enabled]"
+msgstr " [samvirkende er aktiveret]"
+
+#: elf32-arm.h:2413
+msgid " [VFP float format]"
+msgstr " [VFP-flydende talsformat]"
+
+#: elf32-arm.h:2415
+msgid " [FPA float format]"
+msgstr " [FPA-flydende talsformat]"
+
+#: elf32-arm.h:2424
+msgid " [new ABI]"
+msgstr " [nyt ABI]"
+
+#: elf32-arm.h:2427
+msgid " [old ABI]"
+msgstr " [gammelt ABI]"
+
+#: elf32-arm.h:2430
+msgid " [software FP]"
+msgstr " [programmeret FP]"
+
+#: elf32-arm.h:2438
+msgid " [Version1 EABI]"
+msgstr " [Version1 EABI]"
+
+#: elf32-arm.h:2441 elf32-arm.h:2452
+msgid " [sorted symbol table]"
+msgstr " [sorteret symboltabel]"
+
+#: elf32-arm.h:2443 elf32-arm.h:2454
+msgid " [unsorted symbol table]"
+msgstr " [usorteret symboltabel]"
+
+#: elf32-arm.h:2449
+msgid " [Version2 EABI]"
+msgstr " [Version2 EABI]"
+
+#: elf32-arm.h:2457
+msgid " [dynamic symbols use segment index]"
+msgstr " [dynamiske symboler bruger segmentindex]"
+
+#: elf32-arm.h:2460
+msgid " [mapping symbols precede others]"
+msgstr " [mapningssymboler foretrækkes frem for andre]"
+
+#: elf32-arm.h:2467
+msgid " <EABI version unrecognised>"
+msgstr " <EABI-version genkendes ikke>"
+
+#: elf32-arm.h:2474
+msgid " [relocatable executable]"
+msgstr " [relokaliseringsbar kørbar fil]"
+
+#: elf32-arm.h:2477
+msgid " [has entry point]"
+msgstr " [har startpunkt]"
+
+#: elf32-arm.h:2482
+msgid "<Unrecognised flag bits set>"
+msgstr "<Ukendte flagbit er sat>"
+
+#: elf32-avr.c:841 elf32-cris.c:1411 elf32-fr30.c:643 elf32-frv.c:817
+#: elf32-i860.c:1039 elf32-openrisc.c:447 elf32-v850.c:1699
+#: elf32-xstormy16.c:941 elf64-mmix.c:1310
+msgid "internal error: dangerous relocation"
+msgstr "intern fejl: farlig relokalisering"
+
+#: elf32-cris.c:949
+#, c-format
+msgid "%s: unresolvable relocation %s against symbol `%s' from %s section"
+msgstr "%s: uløselig relokalisering %s mod symbol \"%s\" fra sektionen %s"
+
+#: elf32-cris.c:1012
+#, c-format
+msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section"
+msgstr "%s: Hverken nogen PLT eller GOT for relokalisering %s  mod symbol \"%s\" fra sektionen %s"
+
+#: elf32-cris.c:1015 elf32-cris.c:1141
+msgid "[whose name is lost]"
+msgstr "[hvis navn er tabt]"
+
+#: elf32-cris.c:1130
+#, c-format
+msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section"
+msgstr "%s: relokalisering %s med ikke-tomt addendum %d mod lokalt symbol fra sektionen %s"
+
+#: elf32-cris.c:1137
+#, c-format
+msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section"
+msgstr "%s: relokalisering %s med ikke-tomt addendum %d mod symbol \"%s\" fra sektionen %s"
+
+#: elf32-cris.c:1155
+#, c-format
+msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section"
+msgstr "%s: relokaliseringen %s er ikke tilladt for globalt symbol: \"%s\" fra sektionen %s"
+
+#: elf32-cris.c:1170
+#, c-format
+msgid "%s: relocation %s in section %s with no GOT created"
+msgstr "%s: relokalisering %s i sektionen %s uden GOT oprettet"
+
+#: elf32-cris.c:1288
+#, c-format
+msgid "%s: Internal inconsistency; no relocation section %s"
+msgstr "%s: Intern inkonsistens; ingen relokaliseringssektion %s"
+
+#: elf32-cris.c:2514
+#, c-format
+msgid ""
+"%s, section %s:\n"
+"  relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr ""
+"%s, sektion %s:\n"
+"  relokaliseringen %s bør ikke bruges i et delt objekt; genoversæt med -fPIC"
+
+#: elf32-cris.c:2991
+msgid " [symbols have a _ prefix]"
+msgstr " [symboler har et _-prefix]"
+
+#: elf32-cris.c:3030
+#, c-format
+msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr "%s: bruger symboler med _-prefix, men skriver fil med symboler uden prefix"
+
+#: elf32-cris.c:3031
+#, c-format
+msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr "%s: bruger symboler uden prefix, men skriver fil med symboler med _-prefix"
+
+#: elf32-frv.c:1217
+#, c-format
+msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
+msgstr "%s: kompileret med %s og lænket med moduler som bruger ikke-pic-relokalisering"
+
+#: elf32-frv.c:1267
+#, c-format
+msgid "%s: compiled with %s and linked with modules compiled with %s"
+msgstr "%s: kompileret med %s og lænket med moduler som kompileredes med %s"
+
+#: elf32-frv.c:1279
+#, c-format
+msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
+msgstr "%s: bruger andre ukendte e_flags-felter (0x%lx) end tidligere moduler (0x%lx)"
+
+#: elf32-frv.c:1315
+#, c-format
+msgid "private flags = 0x%lx:"
+msgstr "private flag = 0x%lx:"
+
+#: elf32-gen.c:82 elf64-gen.c:82
+#, c-format
+msgid "%s: Relocations in generic ELF (EM: %d)"
+msgstr "%s: Relokalisering i generisk ELF (EM: %d)"
+
+#: elf32-hppa.c:671 elf64-ppc.c:2323
+#, c-format
+msgid "%s: cannot create stub entry %s"
+msgstr "%s: kan ikke oprette stubstarten %s"
+
+#: elf32-hppa.c:956 elf32-hppa.c:3555
+#, c-format
+msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections"
+msgstr "%s(%s+0x%lx): kan ikke nå %s, genoversæt med -ffunction-sections"
+
+#: elf32-hppa.c:1338 elf64-x86-64.c:673
+#, c-format
+msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr "%s: relokaliseringen %s kan ikke bruges når et delt objekt oprettes; genoversæt med -fPIC"
+
+#: elf32-hppa.c:1358
+#, c-format
+msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC"
+msgstr "%s: relokaliseringen %s bør ikke bruges når et delt objekt oprettes; genoversæt med -fPIC"
+
+#: elf32-hppa.c:1551
+#, c-format
+msgid "Could not find relocation section for %s"
+msgstr "Kunne ikke finde relokaliseringssektion for %s"
+
+#: elf32-hppa.c:2855
+#, c-format
+msgid "%s: duplicate export stub %s"
+msgstr "%s: dobbelt eksportstub %s"
+
+#: elf32-hppa.c:3433
+#, c-format
+msgid "%s(%s+0x%lx): fixing %s"
+msgstr "%s(%s+0x%lx): retter %s"
+
+#: elf32-hppa.c:4080
+#, c-format
+msgid "%s(%s+0x%lx): cannot handle %s for %s"
+msgstr "%s(%s+0x%lx): kan ikke håndtere %s for %s"
+
+#: elf32-hppa.c:4393
+msgid ".got section not immediately after .plt section"
+msgstr ".got-sektionen følger ikke umiddelbart efter .plt-sektion"
+
+#: elf32-i386.c:379
+#, c-format
+msgid "%s: invalid relocation type %d"
+msgstr "%s: ugyldig relokaliseringstype %d"
+
+#: elf32-i386.c:876 elf32-s390.c:649 elf64-s390.c:595 elf64-x86-64.c:591
+#, c-format
+msgid "%s: bad symbol index: %d"
+msgstr "%s: fejlagtigt symbolindex: %d"
+
+#: elf32-i386.c:948
+#, c-format
+msgid "%s: `%s' accessed both as normal and thread local symbol"
+msgstr "%s: \"%s\" kaldt både som lokalt normalt symbol og lokalt trådsymbol"
+
+#: elf32-i386.c:1072 elf32-s390.c:808 elf64-ppc.c:2827 elf64-s390.c:759
+#: elf64-x86-64.c:761
+#, c-format
+msgid "%s: bad relocation section name `%s'"
+msgstr "%s: fejlagtig relokaliseringssektionsnavn \"%s\""
+
+#: elf32-i386.c:1159 elf64-alpha.c:4768
+#, c-format
+msgid "%s: TLS local exec code cannot be linked into shared objects"
+msgstr "%s: lokal TLS-eksekveringskode kan ikke lænkes ind i delte objekter"
+
+#: elf32-i386.c:2747 elf32-s390.c:1981 elf32-sparc.c:1571 elf64-ppc.c:5918
+#: elf64-s390.c:1945 elf64-sparc.c:2578 elf64-x86-64.c:1948
+#, c-format
+msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'"
+msgstr "%s(%s+0x%lx): uløselig relokalisering mod symbol \"%s\""
+
+#: elf32-i386.c:2784 elf32-s390.c:2019 elf64-ppc.c:5977 elf64-s390.c:1983
+#: elf64-x86-64.c:1986
+#, c-format
+msgid "%s(%s+0x%lx): reloc against `%s': error %d"
+msgstr "%s(%s+0x%lx): relokalisering mod \"%s\": fejl %d"
+
+#: elf32-m32r.c:924
+msgid "SDA relocation when _SDA_BASE_ not defined"
+msgstr "SDA-relokalisering når _SDA_BASE_ ikke er defineret"
+
+#: elf32-ia64.c:3687 elf32-m32r.c:1013 elf32-ppc.c:2987 elf64-alpha.c:4185
+#: elf64-alpha.c:4313 elf64-ia64.c:3687
+#, c-format
+msgid "%s: unknown relocation type %d"
+msgstr "%s: ukendt relokaliseringstype %d"
+
+#: elf32-m32r.c:1221
+#, c-format
+msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
+msgstr "%s: Målet (%s) for en %s-relokalisering er i forkert sektion (%s)"
+
+#: elf32-m32r.c:1947
+#, c-format
+msgid "%s: Instruction set mismatch with previous modules"
+msgstr "%s: Instruktionsopsætning passer ikke med tidligere moduler"
+
+#: elf32-m32r.c:1970
+#, c-format
+msgid "private flags = %lx"
+msgstr "private flag = %lx"
+
+#: elf32-m32r.c:1975
+msgid ": m32r instructions"
+msgstr ": m32r-instruktioner"
+
+#: elf32-m32r.c:1976
+msgid ": m32rx instructions"
+msgstr ": m32rx-instruktioner"
+
+#: elf32-m68k.c:413
+msgid " [cpu32]"
+msgstr " [cpu32]"
+
+#: elf32-m68k.c:416
+msgid " [m68000]"
+msgstr " [m68000]"
+
+#: elf32-mcore.c:354 elf32-mcore.c:457
+#, c-format
+msgid "%s: Relocation %s (%d) is not currently supported.\n"
+msgstr "%s: Relokalisering %s (%d) understøttes ikke i øjeblikket.\n"
+
+#: elf32-mcore.c:442
+#, c-format
+msgid "%s: Unknown relocation type %d\n"
+msgstr "%s: Ukendt relokaliseringstype %d\n"
+
+#: elf32-mips.c:1152 elf64-mips.c:1783
+msgid "32bits gp relative relocation occurs for an external symbol"
+msgstr "32-bit gp-relativ relokalisering forekom for et eksternt symbol"
+
+#: elf32-mips.c:1301
+#, c-format
+msgid "Linking mips16 objects into %s format is not supported"
+msgstr "Lænkning af mips16-objekter til %s-format understøttes ikke"
+
+#: elf32-ppc.c:1460
+#, c-format
+msgid "%s: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%s: kompileret med -mrelocatable og lænket med moduler som kompileredes normalt"
+
+#: elf32-ppc.c:1468
+#, c-format
+msgid "%s: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%s: kompileret normalt og lænket med moduler som kompileredes med -mrelocatable"
+
+#: elf32-ppc.c:1494 elf64-sparc.c:2989 elfxx-mips.c:7713
+#, c-format
+msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
+msgstr "%s: bruger andre e_flags-felter (0x%lx) end tidligere moduler (0x%lx)"
+
+#: elf32-ppc.c:1592
+#, c-format
+msgid "%s: Unknown special linker type %d"
+msgstr "%s: Ukendt speciallænkertype %d"
+
+#: elf32-ppc.c:2273 elf32-ppc.c:2307 elf32-ppc.c:2342
+#, c-format
+msgid "%s: relocation %s cannot be used when making a shared object"
+msgstr "%s: relokaliseringen %s kan ikke bruges når et delt objekt oprettes"
+
+#: elf32-ppc.c:3126 elf64-ppc.c:5473
+#, c-format
+msgid "%s: unknown relocation type %d for symbol %s"
+msgstr "%s: ukendt relokaliseringstype %d for symbol %s"
+
+#: elf32-ppc.c:3482 elf32-ppc.c:3503 elf32-ppc.c:3553
+#, c-format
+msgid "%s: The target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%s: Målet (%s) for en %s-relokalisering er i forkert uddatasektion (%s)"
+
+#: elf32-ppc.c:3619
+#, c-format
+msgid "%s: Relocation %s is not yet supported for symbol %s."
+msgstr "%s: Relokaliseringen %s understøttes ikke endnu for symbol %s."
+
+#: elf32-sh.c:1964
+#, c-format
+msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
+msgstr "%s: 0x%lx: advarsel: fejlagtig R_SH_USES-afstand"
+
+#: elf32-sh.c:1976
+#, c-format
+msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%s: 0x%lx: advarsel: R_SH_USES peger til ukendt instruktion 0x%x"
+
+#: elf32-sh.c:1993
+#, c-format
+msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
+msgstr "%s: 0x%lx: advarsel: fejlagtig R_SH_USES-indlæsningsafstand"
+
+#: elf32-sh.c:2008
+#, c-format
+msgid "%s: 0x%lx: warning: could not find expected reloc"
+msgstr "%s: 0x%lx: advarsel: kunne ikke finde forventet relokalisering"
+
+#: elf32-sh.c:2036
+#, c-format
+msgid "%s: 0x%lx: warning: symbol in unexpected section"
+msgstr "%s: 0x%lx: advarsel: symbol i uventet sektion"
+
+#: elf32-sh.c:2153
+#, c-format
+msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
+msgstr "%s: 0x%lx: advarsel: kunne ikke finde forventet COUNT-relokalisering"
+
+#: elf32-sh.c:2162
+#, c-format
+msgid "%s: 0x%lx: warning: bad count"
+msgstr "%s: 0x%lx: advarsel: fejlagtigt antal"
+
+#: elf32-sh.c:2550 elf32-sh.c:2926
+#, c-format
+msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
+msgstr "%s: 0x%lx: fatalt: relokalisering giver overløb ved forenklingen"
+
+#: elf32-sh.c:4073 elf64-sh64.c:1576
+msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
+msgstr "Uventet STO_SH5_ISA32 på lokalt symbol håndteres ikke"
+
+#: elf32-sh.c:4284
+#, c-format
+msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation"
+msgstr "%s: 0x%lx: fatalt: ujusteret grenmål for relokalisering for forenklingsunderstøttelse"
+
+#: elf32-sh64.c:203 elf64-sh64.c:2364
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: kompileret som 32-bitsobjekt og %s er 64-bit"
+
+#: elf32-sh64.c:206 elf64-sh64.c:2367
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: kompileret som 64-bitsobjekt og %s er 32-bit"
+
+#: elf32-sh64.c:208 elf64-sh64.c:2369
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: objektstørrelsen stemmer ikke overens med den hos målet %s"
+
+#: elf32-sh64.c:440 elf64-sh64.c:2941
+#, c-format
+msgid "%s: encountered datalabel symbol in input"
+msgstr "%s: mødte dataetikettesymbol i inddata"
+
+#: elf32-sh64.c:523
+msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
+msgstr "PTB passer ikke: en SHmedia-adresse (bit 0 == 1)"
+
+#: elf32-sh64.c:526
+msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
+msgstr "PTA passer ikke: en SHcompact-adresse (bit 0 == 0)"
+
+#: elf32-sh64.c:544
+#, c-format
+msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
+msgstr "%s: GAS-fejl: uventet PTB-instruktion med R_SH_PT_16"
+
+#: elf32-sh64.c:593 elf64-sh64.c:1703
+#, c-format
+msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
+msgstr "%s: fejl: ojusteret relokaliseringstype %d på %08x relokalisering %08x\n"
+
+#: elf32-sh64.c:677
+#, c-format
+msgid "%s: could not write out added .cranges entries"
+msgstr "%s: kunne ikke udskrive tilføjede .cranges-poster"
+
+#: elf32-sh64.c:739
+#, c-format
+msgid "%s: could not write out sorted .cranges entries"
+msgstr "%s: kunne ikke udskrive sorterede cranges-poster"
+
+#: elf32-sparc.c:1535 elf64-sparc.c:2224
+#, c-format
+msgid "%s: probably compiled without -fPIC?"
+msgstr "%s: nok kompileret uden -fPIC?"
+
+#: elf32-sparc.c:2002
+#, c-format
+msgid "%s: compiled for a 64 bit system and target is 32 bit"
+msgstr "%s: kompileret for et 64-bitssystem og målet er 32-bit"
+
+#: elf32-sparc.c:2016
+#, c-format
+msgid "%s: linking little endian files with big endian files"
+msgstr "%s: lænker little endian-filer med big endian-filer"
+
+#: elf32-v850.c:682
+#, c-format
+msgid "Variable `%s' cannot occupy in multiple small data regions"
+msgstr "Variabel \"%s\" kan ikke befinde sig i flere små dataområder"
+
+#: elf32-v850.c:685
+#, c-format
+msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
+msgstr "Variabel \"%s\" kan kun være i et af de små, tomme og bittesmå dataområder"
+
+#: elf32-v850.c:688
+#, c-format
+msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr "Variabel \"%s\" kan ikke være i både små og tomme dataområder samtidigt"
+
+#: elf32-v850.c:691
+#, c-format
+msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr "Variabel \"%s\" kan ikke være i både små og bittesmå dataområder samtidigt"
+
+#: elf32-v850.c:694
+#, c-format
+msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr "Variabel \"%s\" kan ikke være i både tomme og bittesmå dataområder samtidigt"
+
+#: elf32-v850.c:1072
+msgid "FAILED to find previous HI16 reloc\n"
+msgstr "MISLYKKEDES med at finde tidligere HI16-relokalisering\n"
+
+#: elf32-v850.c:1703
+msgid "could not locate special linker symbol __gp"
+msgstr "kunne ikke lokalisere specielt lænkersymbol __gp"
+
+#: elf32-v850.c:1707
+msgid "could not locate special linker symbol __ep"
+msgstr "kunne ikke lokalisere specielt lænkersymbol __ep"
+
+#: elf32-v850.c:1711
+msgid "could not locate special linker symbol __ctbp"
+msgstr "kunne ikke lokalisere specielt lænkersymbol __ctbp"
+
+#: elf32-v850.c:1875
+#, c-format
+msgid "%s: Architecture mismatch with previous modules"
+msgstr "%s: Arkitekturen passer ikke sammen med tidligere moduler"
+
+#: elf32-v850.c:1895
+#, c-format
+msgid "private flags = %lx: "
+msgstr "private flag = %lx: "
+
+#: elf32-v850.c:1900
+msgid "v850 architecture"
+msgstr "v850-arkitektur"
+
+#: elf32-v850.c:1901
+msgid "v850e architecture"
+msgstr "v850e-arkitektur"
+
+#: elf32-v850.c:1902
+msgid "v850ea architecture"
+msgstr "v850ea-arkitektur"
+
+#: elf32-vax.c:546
+msgid " [nonpic]"
+msgstr " [ikke-pic]"
+
+#: elf32-vax.c:549
+msgid " [d-float]"
+msgstr " [d-flydende tal]"
+
+#: elf32-vax.c:552
+msgid " [g-float]"
+msgstr " [g-flydende tal]"
+
+#: elf32-vax.c:674
+#, c-format
+msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
+msgstr "%s: advarsel: GOT-addendum %ld til \"%s\" stemmer ikke overens med tidligere GOT-addendum %ld"
+
+#: elf32-vax.c:1679
+#, c-format
+msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
+msgstr "%s: advarsel: PLT-addendum %d til \"%s\" fra sektionen %s ignoreredes"
+
+#: elf32-vax.c:1814
+#, c-format
+msgid "%s: warning: %s relocation against symbol `%s' from %s section"
+msgstr "%s: advarsel: %s-relokalisering mod symbol \"%s\" fra sektionen %s"
+
+#: elf32-vax.c:1820
+#, c-format
+msgid "%s: warning: %s relocation to 0x%x from %s section"
+msgstr "%s: advarsel: %s-relokalisering til 0x%x fra sektionen %s"
+
+#: elf32-ia64.c:2280 elf32-xstormy16.c:414 elf64-ia64.c:2280
+msgid "non-zero addend in @fptr reloc"
+msgstr "ikke-tomt addendum i @fptr-relokalisering"
+
+#: elf64-alpha.c:1097
+msgid "GPDISP relocation did not find ldah and lda instructions"
+msgstr "GPDISP-relokalisering fandt ingen ldah- og lda-instruktioner"
+
+#: elf64-alpha.c:3675
+#, c-format
+msgid "%s: .got subsegment exceeds 64K (size %d)"
+msgstr "%s: .got-subsegment overskrider 64 kB (størrelse %d)"
+
+#: elf64-alpha.c:4498 elf64-alpha.c:4510
+#, c-format
+msgid "%s: gp-relative relocation against dynamic symbol %s"
+msgstr "%s: gp-relativ relokalisering mod dynamisk symbol %s"
+
+#: elf64-alpha.c:4536 elf64-alpha.c:4676
+#, c-format
+msgid "%s: pc-relative relocation against dynamic symbol %s"
+msgstr "%s: pc-relativ relokalisering mod dynamisk symbol %s"
+
+#: elf64-alpha.c:4564
+#, c-format
+msgid "%s: change in gp: BRSGP %s"
+msgstr "%s: ændring i gp: BRSGP %s"
+
+#: elf64-alpha.c:4589
+msgid "<unknown>"
+msgstr "<ukendt>"
+
+#: elf64-alpha.c:4594
+#, c-format
+msgid "%s: !samegp reloc against symbol without .prologue: %s"
+msgstr "%s: !samegp-relokalisering mod symbol uden .prologue: %s"
+
+#: elf64-alpha.c:4639
+#, c-format
+msgid "%s: unhandled dynamic relocation against %s"
+msgstr "%s: uhåndteret dynamisk relokalisering mod %s"
+
+#: elf64-alpha.c:4752
+#, c-format
+msgid "%s: dtp-relative relocation against dynamic symbol %s"
+msgstr "%s: dtp-relativ relokalisering mod dynamisk symbol %s"
+
+#: elf64-alpha.c:4775
+#, c-format
+msgid "%s: tp-relative relocation against dynamic symbol %s"
+msgstr "%s: tp-relativ relokalisering mod dynamisk symbol %s"
+
+#: elf64-hppa.c:2080
+#, c-format
+msgid "stub entry for %s cannot load .plt, dp offset = %ld"
+msgstr "stubpost for %s kan ikke læse in .plt, dp-afstand = %ld"
+
+#: elf64-mmix.c:1002
+#, c-format
+msgid ""
+"%s: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n"
+msgstr ""
+"%s: Intern inkkonsistensfejl for værdien for\n"
+" lænkerallokeret globalt register: lænket: 0x%lx%08lx != afslappet: 0x%lx%08lx\n"
+
+#: elf64-mmix.c:1386
+#, c-format
+msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s"
+msgstr "%s: base-plus-afstandsrelokalisering mod registersymbol: (ukendt) i %s"
+
+#: elf64-mmix.c:1391
+#, c-format
+msgid "%s: base-plus-offset relocation against register symbol: %s in %s"
+msgstr "%s: base-plus-afstandsrelokalisering mod registersymbol: %s i %s"
+
+#: elf64-mmix.c:1435
+#, c-format
+msgid "%s: register relocation against non-register symbol: (unknown) in %s"
+msgstr "%s: registerrelokalisering mod ikke-registersymbol: (ukendt) i %s"
+
+#: elf64-mmix.c:1440
+#, c-format
+msgid "%s: register relocation against non-register symbol: %s in %s"
+msgstr "%s: registerrelokalisering mod ikke-registersymbol: %s i %s"
+
+#: elf64-mmix.c:1477
+#, c-format
+msgid "%s: directive LOCAL valid only with a register or absolute value"
+msgstr "%s: LOCAL-direktivet er kun gyldigt med et register eller en absolutværdi"
+
+#: elf64-mmix.c:1505
+#, c-format
+msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
+msgstr "%s: LOCAL-direktiv: Register $%ld er ikke et lokalt register. Første globale register er $%ld."
+
+#: elf64-mmix.c:1965
+#, c-format
+msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
+msgstr "%s: Fejl: flere definitioner af \"%s\"; begyndelsen på %s er sat i en tidligere lænket fil\n"
+
+#: elf64-mmix.c:2024
+msgid "Register section has contents\n"
+msgstr "Registersektion har indhold\n"
+
+#: elf64-mmix.c:2186
+#, c-format
+msgid ""
+"Internal inconsistency: remaining %u != max %u.\n"
+"  Please report this bug."
+msgstr ""
+"Intern inkonsekvens: genstående %u != max %u.\n"
+"  Rapportér gerne denne fejl."
+
+#: elf64-ppc.c:1669 libbfd.c:1435
+#, c-format
+msgid "%s: compiled for a big endian system and target is little endian"
+msgstr "%s: kompileret for et big endian-system og målet er little endian"
+
+#: elf64-ppc.c:1671 libbfd.c:1437
+#, c-format
+msgid "%s: compiled for a little endian system and target is big endian"
+msgstr "%s: kompileret for et little endian-system og målet er big endian"
+
+#: elf64-ppc.c:3610
+#, c-format
+msgid "%s: unexpected reloc type %u in .opd section"
+msgstr "%s: uventet relokaliseringstype %u i .opd-sektion"
+
+#: elf64-ppc.c:3630
+#, c-format
+msgid "%s: .opd is not a regular array of opd entries"
+msgstr "%s: .opd er ikke en almindelig vektor med opd-poster"
+
+#: elf64-ppc.c:3672
+#, c-format
+msgid "%s: undefined sym `%s' in .opd section"
+msgstr "%s: udefineret symbol \"%s\" i .opd-sektion"
+
+#: elf64-ppc.c:4397
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr "kan ikke finde grenstub \"%s\""
+
+#: elf64-ppc.c:4436 elf64-ppc.c:4501
+#, c-format
+msgid "linkage table error against `%s'"
+msgstr "lænketabelsfejl mod \"%s\""
+
+#: elf64-ppc.c:4573
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr "kan ikke bygge grenstub \"%s\""
+
+#: elf64-ppc.c:5179
+msgid "stubs don't match calculated size"
+msgstr "stubbe stemmer ikke overens med beregnet størrelse"
+
+#: elf64-ppc.c:5828
+#, c-format
+msgid "%s: Relocation %s is not supported for symbol %s."
+msgstr "%s: Relokaliseringen %s understøttes ikke for symbol %s."
+
+#: elf64-ppc.c:5872
+#, c-format
+msgid "%s: error: relocation %s not a multiple of 4"
+msgstr "%s: fejl: relokaliseringen %s er ikke en multipel af 4"
+
+#: elf64-sparc.c:1280
+#, c-format
+msgid "%s: check_relocs: unhandled reloc type %d"
+msgstr "%s: check_relocs: uhåndteret relokaliseringstype %d"
+
+#: elf64-sparc.c:1317
+#, c-format
+msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr "%s: Kun register %%g[2367] kan deklareres med STT_REGISTER"
+
+#: elf64-sparc.c:1337
+#, c-format
+msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s"
+msgstr "Register %%g%d brugt inkompatibelt: %s i %s, tidligere %s i %s"
+
+#: elf64-sparc.c:1360
+#, c-format
+msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s"
+msgstr "Symbol \"%s\" har forskellige typer: REGISTER i %s, tidligere %s i %s"
+
+#: elf64-sparc.c:1406
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s"
+msgstr "Symbol \"%s\" har forskellige typer: %s i %s, tidligere REGISTER i %s"
+
+#: elf64-sparc.c:2970
+#, c-format
+msgid "%s: linking UltraSPARC specific with HAL specific code"
+msgstr "%s: lænker UltraSPARC-specifik med HAL-specifik kode"
+
+#: elfcode.h:1198
+#, c-format
+msgid "%s: version count (%ld) does not match symbol count (%ld)"
+msgstr "%s: versionsantal (%ld) stemmer ikke med symbolantal (%ld)"
+
+#: elflink.c:440
+#, c-format
+msgid "%s: Section %s is too large to add hole of %ld bytes"
+msgstr "%s: Sektionen %s er for stor til at stoppa hul med %ld byte i"
+
+#: elflink.h:1090
+#, c-format
+msgid "%s: warning: unexpected redefinition of `%s'"
+msgstr "%s: advarsel: uventet omdefinition af \"%s\""
+
+#: elflink.h:1727
+#, c-format
+msgid "%s: %s: invalid version %u (max %d)"
+msgstr "%s: %s: ugyldig version %u (max %d)"
+
+#: elflink.h:1768
+#, c-format
+msgid "%s: %s: invalid needed version %d"
+msgstr "%s: %s: ugyldig krævet version %d"
+
+#: elflink.h:1890
+#, c-format
+msgid "Warning: size of symbol `%s' changed from %lu to %lu in %s"
+msgstr "Advarsel: størrelsen på symbol \"%s\" ændredes fra %lu til %lu i %s"
+
+#: elflink.h:3174
+#, c-format
+msgid "%s: .preinit_array section is not allowed in DSO"
+msgstr "%s: .preinit_array-sektionen er ikke tilladt i DSO"
+
+#: elflink.h:4030
+#, c-format
+msgid "warning: type and size of dynamic symbol `%s' are not defined"
+msgstr "advarsel: typen og størrelsen på dynamisk symbol \"%s\" er ikke defineret"
+
+#: elflink.h:4345
+#, c-format
+msgid "%s: undefined versioned symbol name %s"
+msgstr "%s: udefineret symbolnavn med version %s"
+
+#: elflink.h:4611 elflink.h:4619 elflink.h:6508 elflink.h:7600
+msgid "Error: out of memory"
+msgstr "Fejl: ikke mere hukommelse"
+
+#: elflink.h:4781
+msgid "Not enough memory to sort relocations"
+msgstr "Ikke nok hukommelse til at sortere relokaliseringer"
+
+#: elflink.h:5682 elflink.h:5725
+#, c-format
+msgid "%s: could not find output section %s"
+msgstr "%s: kunne ikke finde uddatasektionen %s"
+
+#: elflink.h:5688
+#, c-format
+msgid "warning: %s section has zero size"
+msgstr "advarsel: %s-sektionen har nulstørrelse"
+
+#: elflink.h:6275
+#, c-format
+msgid "%s: could not find output section %s for input section %s"
+msgstr "%s: kunne ikke finde uddatasektionen %s for inddatasektionen %s"
+
+#: elflink.h:6486
+#, c-format
+msgid "%s: relocation size mismatch in %s section %s"
+msgstr "%s: relokaliseringsstørrelsen stemmer ikke overens i %s-sektionen %s"
+
+#: elflink.h:6849
+msgid "warning: relocation against removed section; zeroing"
+msgstr "advarsel: relokalisering mod fjernet sektion; nulstiller"
+
+#: elflink.h:6879
+msgid "warning: relocation against removed section"
+msgstr "advarsel: relokalisering mod fjernet sektion"
+
+#: elflink.h:6892
+#, c-format
+msgid "local symbols in discarded section %s"
+msgstr "lokale symboler i bortkastet sektion %s"
+
+#: elfxx-mips.c:734
+msgid "static procedure (no name)"
+msgstr "statisk procedure (intet navn)"
+
+#: elfxx-mips.c:1601
+msgid "not enough GOT space for local GOT entries"
+msgstr "ikke nok med GOT-plads for lokale GOT-poster"
+
+#: elfxx-mips.c:2750
+#, c-format
+msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
+msgstr "%s: %s+0x%lx: hop til stubrutine som ikke er jal"
+
+#: elfxx-mips.c:4270
+#, c-format
+msgid "%s: Malformed reloc detected for section %s"
+msgstr "%s: Fejlagtig relokalisering for sektion %s opdaget"
+
+#: elfxx-mips.c:4348
+#, c-format
+msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
+msgstr "%s: CALL16-relokalisering ved 0x%lx er ikke mod globalt symbol"
+
+#: elfxx-mips.c:7301
+#, c-format
+msgid "%s: illegal section name `%s'"
+msgstr "%s: ugyldigt sektionsnavn \"%s\""
+
+#: elfxx-mips.c:7615
+#, c-format
+msgid "%s: linking PIC files with non-PIC files"
+msgstr "%s: lænker PIC-filer med ikke-PIC-filer"
+
+#: elfxx-mips.c:7625
+#, c-format
+msgid "%s: linking abicalls files with non-abicalls files"
+msgstr "%s: lænker abicalls-filer med ikke-abicalls-filer"
+
+#: elfxx-mips.c:7654
+#, c-format
+msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
+msgstr "%s: ISA (-mips%d) passer ikke med tidligere moduler (-mips%d)"
+
+#: elfxx-mips.c:7676
+#, c-format
+msgid "%s: ISA mismatch (%d) with previous modules (%d)"
+msgstr "%s: ISA (%d) passer ikke med tidligere moduler (%d)"
+
+#: elfxx-mips.c:7699
+#, c-format
+msgid "%s: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%s: ABI passer ikke: lænker %s-modul med tidligere %s-moduler"
+
+#: elfxx-mips.c:7759
+msgid " [abi=O32]"
+msgstr " [abi=O32]"
+
+#: elfxx-mips.c:7761
+msgid " [abi=O64]"
+msgstr " [abi=O64]"
+
+#: elfxx-mips.c:7763
+msgid " [abi=EABI32]"
+msgstr " [abi=EABI32]"
+
+#: elfxx-mips.c:7765
+msgid " [abi=EABI64]"
+msgstr " [abi=EABI64]"
+
+#: elfxx-mips.c:7767
+msgid " [abi unknown]"
+msgstr " [ukendt abi]"
+
+#: elfxx-mips.c:7769
+msgid " [abi=N32]"
+msgstr " [abi=N32]"
+
+#: elfxx-mips.c:7771
+msgid " [abi=64]"
+msgstr " [abi=64]"
+
+#: elfxx-mips.c:7773
+msgid " [no abi set]"
+msgstr " [intet abi sat]"
+
+#: elfxx-mips.c:7776
+msgid " [mips1]"
+msgstr " [mips1]"
+
+#: elfxx-mips.c:7778
+msgid " [mips2]"
+msgstr " [mips2]"
+
+#: elfxx-mips.c:7780
+msgid " [mips3]"
+msgstr " [mips3]"
+
+#: elfxx-mips.c:7782
+msgid " [mips4]"
+msgstr " [mips4]"
+
+#: elfxx-mips.c:7784
+msgid " [mips5]"
+msgstr " [mips5]"
+
+#: elfxx-mips.c:7786
+msgid " [mips32]"
+msgstr " [mips32]"
+
+#: elfxx-mips.c:7788
+msgid " [mips64]"
+msgstr " [mips64]"
+
+#: elfxx-mips.c:7790
+msgid " [unknown ISA]"
+msgstr " [ukendt ISA]"
+
+#: elfxx-mips.c:7793
+msgid " [mdmx]"
+msgstr " [mdmx]"
+
+#: elfxx-mips.c:7796
+msgid " [mips16]"
+msgstr " [mips16]"
+
+#: elfxx-mips.c:7799
+msgid " [32bitmode]"
+msgstr " [32-bittilstand]"
+
+#: elfxx-mips.c:7801
+msgid " [not 32bitmode]"
+msgstr " [ikke 32-bittilstand]"
+
+#: i386linux.c:458 m68klinux.c:462 sparclinux.c:459
+#, c-format
+msgid "Output file requires shared library `%s'\n"
+msgstr "Uddatafilen kræver delt bibliotek \"%s\"\n"
+
+#: i386linux.c:466 m68klinux.c:470 sparclinux.c:467
+#, c-format
+msgid "Output file requires shared library `%s.so.%s'\n"
+msgstr "Uddatafilen kræver delt bibliotek \"%s.so.%s\"\n"
+
+#: i386linux.c:655 i386linux.c:705 m68klinux.c:662 m68klinux.c:710
+#: sparclinux.c:657 sparclinux.c:707
+#, c-format
+msgid "Symbol %s not defined for fixups\n"
+msgstr "Symbol %s er ikke defineret for rettelser\n"
+
+#: i386linux.c:729 m68klinux.c:734 sparclinux.c:731
+msgid "Warning: fixup count mismatch\n"
+msgstr "Advarsel: antal rettelser stemmer ikke\n"
+
+#: ieee.c:235
+#, c-format
+msgid "%s: string too long (%d chars, max 65535)"
+msgstr "%s: strengen er for lang (%d tegn, max 65535)"
+
+#: ieee.c:365
+#, c-format
+msgid "%s: unrecognized symbol `%s' flags 0x%x"
+msgstr "%s: ukendt symbol \"%s\" flag 0x%x"
+
+#: ieee.c:877
+#, c-format
+msgid "%s: unimplemented ATI record %u for symbol %u"
+msgstr "%s: ikke implementeret ATI-post %u for symbol %u"
+
+#: ieee.c:902
+#, c-format
+msgid "%s: unexpected ATN type %d in external part"
+msgstr "%s: uventet ATN-type %d i ekstern del"
+
+#: ieee.c:924
+#, c-format
+msgid "%s: unexpected type after ATN"
+msgstr "%s: uventet type efter ATN"
+
+#: ihex.c:258
+#, c-format
+msgid "%s:%d: unexpected character `%s' in Intel Hex file\n"
+msgstr "%s:%d: uventet tegn \"%s\" i hexadecimal Intel-fil\n"
+
+#: ihex.c:366
+#, c-format
+msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr "%s:%u: fejlagtig kontrolsum i hexadecimal Intel-fil (forventede %u, fandt %u)"
+
+#: ihex.c:420
+#, c-format
+msgid "%s:%u: bad extended address record length in Intel Hex file"
+msgstr "%s:%u: fejlagtig længde på post for udvidet adresse i hexadecimal Intel-fil"
+
+#: ihex.c:437
+#, c-format
+msgid "%s:%u: bad extended start address length in Intel Hex file"
+msgstr "%s:%u: fejlagtig længde på udvidet startadresse i hexadecimal Intel-fil"
+
+#: ihex.c:454
+#, c-format
+msgid "%s:%u: bad extended linear address record length in Intel Hex file"
+msgstr "%s:%u: fejlagtig længde på post for udvidet lineær adresse i hexadecimal Intel-fil"
+
+#: ihex.c:471
+#, c-format
+msgid "%s:%u: bad extended linear start address length in Intel Hex file"
+msgstr "%s:%u: fejlagtig længde på post for udvidet lineær startadresse i hexadecimal Intel-fil"
+
+#: ihex.c:488
+#, c-format
+msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n"
+msgstr "%s:%u: ukendt ihex-type %u i hexadecimal Intel-fil\n"
+
+#: ihex.c:607
+#, c-format
+msgid "%s: internal error in ihex_read_section"
+msgstr "%s: intern fejl i ihex_read_section"
+
+#: ihex.c:642
+#, c-format
+msgid "%s: bad section length in ihex_read_section"
+msgstr "%s: fejlagtig sektionslængde i ihex_read_sektion"
+
+#: ihex.c:860
+#, c-format
+msgid "%s: address 0x%s out of range for Intel Hex file"
+msgstr "%s: adressen 0x%s er udenfor intervallet for hexadecimal Intel-fil"
+
+#: libbfd.c:492
+#, c-format
+msgid "not mapping: data=%lx mapped=%d\n"
+msgstr "mapper ikke: data=%lx mappet=%d\n"
+
+#: libbfd.c:495
+msgid "not mapping: env var not set\n"
+msgstr "mapper ikke: miljøvariabel er ikke sat\n"
+
+#: libbfd.c:1466
+#, c-format
+msgid "Deprecated %s called at %s line %d in %s\n"
+msgstr "Forældet %s kaldt ved %s linje %d i %s\n"
+
+#: libbfd.c:1469
+#, c-format
+msgid "Deprecated %s called\n"
+msgstr "Forældet %s kaldt\n"
+
+#: linker.c:1873
+#, c-format
+msgid "%s: indirect symbol `%s' to `%s' is a loop"
+msgstr "%s: indirekte symbol \"%s\" til \"%s\" er en løkke"
+
+#: linker.c:2776
+#, c-format
+msgid "Attempt to do relocateable link with %s input and %s output"
+msgstr "Forsøg at lave en relokaliseringsbar lænke med %s-inddata og %s-uddata"
+
+#: merge.c:892
+#, c-format
+msgid "%s: access beyond end of merged section (%ld + %ld)"
+msgstr "%s: adgang udover slutningen på sammenslagt sektion (%ld + %ld)"
+
+#: mmo.c:460
+#, c-format
+msgid "%s: No core to allocate section name %s\n"
+msgstr "%s: Ingen kerne til at allokere sektionsnavn %s\n"
+
+#: mmo.c:536
+#, c-format
+msgid "%s: No core to allocate a symbol %d bytes long\n"
+msgstr "%s: Ingen kerne for at allokere et %d byte langt symbol\n"
+
+#: mmo.c:1245
+#, c-format
+msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr "%s: ugyldig mmo-fil: initieringsværdi for $255 er ikke \"Main\"\n"
+
+#: mmo.c:1391
+#, c-format
+msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr "%s: bred tegnsekvens som ikke understøttes 0x%02X 0x%02X efter symbolnavnet som begynder med \"%s\"\n"
+
+#: mmo.c:1633
+#, c-format
+msgid "%s: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr "%s: ugyldig mmo-fil: lopkod \"%d\" understøttes ikke\n"
+
+#: mmo.c:1643
+#, c-format
+msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr "%s: ugyldig mmo-fil: forventede YZ = 1 fik YZ = %d for lop_quote\n"
+
+#: mmo.c:1679
+#, c-format
+msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_loc\n"
+
+#: mmo.c:1725
+#, c-format
+msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr "%s: ugyldig mmo-fil: forventede z = 1 eller z = 2, fik z = %d for lop_fixo\n"
+
+#: mmo.c:1764
+#, c-format
+msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr "%s: ugyldig mmo-fil: forventede y = 0, fik y = %d for lop_fixrx\n"
+
+#: mmo.c:1773
+#, c-format
+msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr "%s: ugyldig mmo-fil: forventede z = 16 eller z = 24, fik z = %d for lop_fixr\n"
+
+#: mmo.c:1796
+#, c-format
+msgid "%s: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
+msgstr "%s: ugyldig mmo-fil: indledende byte i operandord skal være 0 eller 1, fik %d for lop_fixrx\n"
+
+#: mmo.c:1819
+#, c-format
+msgid "%s: cannot allocate file name for file number %d, %d bytes\n"
+msgstr "%s: kan ikke allokere filnavn for fil nummer %d, %d byte\n"
+
+#: mmo.c:1839
+#, c-format
+msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr "%s: ugyldig mmo-fil: fil nummer %d \"%s\", var allerede angivet som \"%s\"\n"
+
+#: mmo.c:1852
+#, c-format
+msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr "%s: ugyldig mmo-fil: filnavnet for nummer %d blev ikke angivet inden brug\n"
+
+#: mmo.c:1958
+#, c-format
+msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr "%s: ugyldig mmo-fil: felter y og z i lop_stab er ikke-tomme, y: %d, z: %d\n"
+
+#: mmo.c:1994
+#, c-format
+msgid "%s: invalid mmo file: lop_end not last item in file\n"
+msgstr "%s: ugyldig mmo-fil: lop_end er ikke sidste objekt i fil\n"
+
+#: mmo.c:2007
+#, c-format
+msgid "%s: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
+msgstr "%s: ugyldig mmo-fil: YZ i lop_end (%ld) er ikke lig med antal af tetraer til den foregående lop_stab (%ld)\n"
+
+#: mmo.c:2670
+#, c-format
+msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
+msgstr "%s: ugyldig symboltabel: dubletsymbol \"%s\"\n"
+
+#: mmo.c:2921
+#, c-format
+msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
+msgstr "%s: Fejlagtig symboldefinition: \"Main\" er sat til %s i stedet for startadressen %s\n"
+
+#: mmo.c:3011
+#, c-format
+msgid "%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
+msgstr "%s: advarsel: symboltabellen er for stor for mmo, større end 65535 32-bit ord: %d. Kun \"Main\" vil blive sendt.\n"
+
+#: mmo.c:3056
+#, c-format
+msgid "%s: internal error, symbol table changed size from %d to %d words\n"
+msgstr "%s: intern fejl, symboltabellen ændrede størrelse fra %d til %d ord\n"
+
+#: mmo.c:3111
+#, c-format
+msgid "%s: internal error, internal register section %s had contents\n"
+msgstr "%s: intern fejl, den interne registersektion %s havde indhold\n"
+
+#: mmo.c:3163
+#, c-format
+msgid "%s: no initialized registers; section length 0\n"
+msgstr "%s: ingen initierede registre; sektionslængde 0\n"
+
+#: mmo.c:3169
+#, c-format
+msgid "%s: too many initialized registers; section length %ld\n"
+msgstr "%s: for mange initierede registre; sektionslængde %ld\n"
+
+#: mmo.c:3174
+#, c-format
+msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
+msgstr "%s: ugyldig startadresse for initierede registre med længden %ld: 0x%lx%08lx\n"
+
+#: oasys.c:1029
+#, c-format
+msgid "%s: can not represent section `%s' in oasys"
+msgstr "%s: kan ikke repræsentere sektionen \"%s\" i oasys"
+
+#: osf-core.c:132
+#, c-format
+msgid "Unhandled OSF/1 core file section type %d\n"
+msgstr "Uhåndteret sektionstype %d for OSF/1-hukommelsesfil\n"
+
+#: pe-mips.c:658
+#, c-format
+msgid "%s: `ld -r' not supported with PE MIPS objects\n"
+msgstr "%s: \"ld -r\" understøttes ikke med PE MIPS-objekt\n"
+
+#. OK, at this point the following variables are set up:
+#. src = VMA of the memory we're fixing up
+#. mem = pointer to memory we're fixing up
+#. val = VMA of what we need to refer to
+#.
+#: pe-mips.c:794
+#, c-format
+msgid "%s: unimplemented %s\n"
+msgstr "%s: uimplementeret %s\n"
+
+#: pe-mips.c:820
+#, c-format
+msgid "%s: jump too far away\n"
+msgstr "%s: hop for langt bort\n"
+
+#: pe-mips.c:847
+#, c-format
+msgid "%s: bad pair/reflo after refhi\n"
+msgstr "%s: fejlagtigt par/reflo efter refhi\n"
+
+#. XXX code yet to be written.
+#: peicode.h:785
+#, c-format
+msgid "%s: Unhandled import type; %x"
+msgstr "%s: Uhåndteret importtype; %x"
+
+#: peicode.h:790
+#, c-format
+msgid "%s: Unrecognised import type; %x"
+msgstr "%s: Ukendt importtype; %x"
+
+#: peicode.h:804
+#, c-format
+msgid "%s: Unrecognised import name type; %x"
+msgstr "%s: Ukendt importnavnstype; %x"
+
+#: peicode.h:1162
+#, c-format
+msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr "%s: Ukendt maskintype (0x%x) i Import Library Format-arkiv"
+
+#: peicode.h:1174
+#, c-format
+msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr "%s: Kendt men uhåndteret maskintype (0x%x) i Import Library Format-arkiv"
+
+#: peicode.h:1191
+#, c-format
+msgid "%s: size field is zero in Import Library Format header"
+msgstr "%s: størrelsesfeltet er nul i Import Library Format-hoved"
+
+#: peicode.h:1219
+#, c-format
+msgid "%s: string not null terminated in ILF object file."
+msgstr "%s: streng ikke nultermineret i ILF-objektfil."
+
+#: ppcboot.c:416
+msgid ""
+"\n"
+"ppcboot header:\n"
+msgstr ""
+"\n"
+"ppcboot-hoved:\n"
+
+#: ppcboot.c:417
+#, c-format
+msgid "Entry offset        = 0x%.8lx (%ld)\n"
+msgstr "Startafstand        = 0x%.8lx (%ld)\n"
+
+#: ppcboot.c:418
+#, c-format
+msgid "Length              = 0x%.8lx (%ld)\n"
+msgstr "Længde              = 0x%.8lx (%ld)\n"
+
+#: ppcboot.c:421
+#, c-format
+msgid "Flag field          = 0x%.2x\n"
+msgstr "Flagfelt            = 0x%.2x\n"
+
+#: ppcboot.c:427
+#, c-format
+msgid "Partition name      = \"%s\"\n"
+msgstr "Partitionsnavn      = \"%s\"\n"
+
+#: ppcboot.c:446
+#, c-format
+msgid ""
+"\n"
+"Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+"\n"
+"Start på partition[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+
+#: ppcboot.c:452
+#, c-format
+msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr "Slut på partition[%d]    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+
+#: ppcboot.c:458
+#, c-format
+msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
+msgstr "Sektor for partition[%d] = 0x%.8lx (%ld)\n"
+
+#: ppcboot.c:459
+#, c-format
+msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
+msgstr "Længde på partition[%d] = 0x%.8lx (%ld)\n"
+
+#: som.c:5398
+msgid "som_sizeof_headers unimplemented"
+msgstr "som_sizeof_headers er ikke implementeret"
+
+#: srec.c:301
+#, c-format
+msgid "%s:%d: Unexpected character `%s' in S-record file\n"
+msgstr "%s:%d: Uventet tegn \"%s\" i S-postfil\n"
+
+# Vad er stabs?
+#: stabs.c:319
+#, c-format
+msgid "%s(%s+0x%lx): Stabs entry has invalid string index."
+msgstr "%s(%s+0x%lx): Stabpost har ugyldigt strengindex."
+
+#: syms.c:1044
+msgid "Unsupported .stab relocation"
+msgstr ".stab-relokalisering som ikke understøttes"
+
+#: vms-gsd.c:356
+#, c-format
+msgid "bfd_make_section (%s) failed"
+msgstr "bfd_make_section (%s) mislykkedes"
+
+#: vms-gsd.c:371
+#, c-format
+msgid "bfd_set_section_flags (%s, %x) failed"
+msgstr "bfd_set_section_flags (%s, %x) mislykkedes"
+
+#: vms-gsd.c:407
+#, c-format
+msgid "Size mismatch section %s=%lx, %s=%lx"
+msgstr "Størrelsen passer ikke på sektion %s=%lx, %s=%lx"
+
+#: vms-gsd.c:702
+#, c-format
+msgid "unknown gsd/egsd subtype %d"
+msgstr "ukendt gsd/egsd-undertype %d"
+
+#: vms-hdr.c:406
+msgid "Object module NOT error-free !\n"
+msgstr "Objektmodulet IKKE fejlfri!\n"
+
+#: vms-misc.c:543
+#, c-format
+msgid "Stack overflow (%d) in _bfd_vms_push"
+msgstr "Stakken giver overløb (%d) i _bfd_vms_push"
+
+#: vms-misc.c:561
+msgid "Stack underflow in _bfd_vms_pop"
+msgstr "Stakken giver underløb i _bfd_vms_pop"
+
+#: vms-misc.c:919
+msgid "_bfd_vms_output_counted called with zero bytes"
+msgstr "_bfd_vms_output_counted kaldt med nul byte"
+
+#: vms-misc.c:924
+msgid "_bfd_vms_output_counted called with too many bytes"
+msgstr "_bfd_vms_output_counted called kaldt med for mange byte"
+
+#: vms-misc.c:1055
+#, c-format
+msgid "Symbol %s replaced by %s\n"
+msgstr "Symbol %s erstattet med %s\n"
+
+#: vms-misc.c:1117
+#, c-format
+msgid "failed to enter %s"
+msgstr "mislykkedes med at gå ind i %s"
+
+#: vms-tir.c:81
+msgid "No Mem !"
+msgstr "Ingen hukommelse!"
+
+#: vms-tir.c:362
+#, c-format
+msgid "bad section index in %s"
+msgstr "fejlagtigt sektionsindex i %s"
+
+#: vms-tir.c:375
+#, c-format
+msgid "unsupported STA cmd %s"
+msgstr "STA-kommando %s understøttes ikke"
+
+#: vms-tir.c:380 vms-tir.c:1240
+#, c-format
+msgid "reserved STA cmd %d"
+msgstr "reserveret STA-kommando %d"
+
+#: vms-tir.c:491 vms-tir.c:514
+#, c-format
+msgid "%s: no symbol \"%s\""
+msgstr "%s: intet symbol \"%s\""
+
+#. unsigned shift
+#. rotate
+#. Redefine symbol to current location.
+#. Define a literal.
+#: vms-tir.c:581 vms-tir.c:693 vms-tir.c:803 vms-tir.c:821 vms-tir.c:829
+#: vms-tir.c:838 vms-tir.c:1563
+#, c-format
+msgid "%s: not supported"
+msgstr "%s: understøttes ikke"
+
+#: vms-tir.c:586 vms-tir.c:1418
+#, c-format
+msgid "%s: not implemented"
+msgstr "%s: ikke implementeret"
+
+#: vms-tir.c:590 vms-tir.c:1422
+#, c-format
+msgid "reserved STO cmd %d"
+msgstr "reserveret STO-kommando %d"
+
+#: vms-tir.c:708 vms-tir.c:1568
+#, c-format
+msgid "reserved OPR cmd %d"
+msgstr "reserveret OPR-kommando %d"
+
+#: vms-tir.c:776 vms-tir.c:1632
+#, c-format
+msgid "reserved CTL cmd %d"
+msgstr "reserveret CTL-kommando %d"
+
+#. stack byte from image
+#. arg: none.
+#: vms-tir.c:1148
+msgid "stack-from-image not implemented"
+msgstr "stack-from-image er ikke implementeret"
+
+#: vms-tir.c:1166
+msgid "stack-entry-mask not fully implemented"
+msgstr "stack-entry-mask er ikke helt implementeret"
+
+#. compare procedure argument
+#. arg: cs     symbol name
+#. by  argument index
+#. da  argument descriptor
+#.
+#. compare argument descriptor with symbol argument (ARG$V_PASSMECH)
+#. and stack TRUE (args match) or FALSE (args dont match) value.
+#: vms-tir.c:1180
+msgid "PASSMECH not fully implemented"
+msgstr "PASSMECH er ikke helt implementeret"
+
+#: vms-tir.c:1199
+msgid "stack-local-symbol not fully implemented"
+msgstr "stack-local-symbol er ikke helt implementeret"
+
+#: vms-tir.c:1212
+msgid "stack-literal not fully implemented"
+msgstr "stack-literal er ikke helt implementeret"
+
+#: vms-tir.c:1233
+msgid "stack-local-symbol-entry-point-mask not fully implemented"
+msgstr "stack-local-symbol-entry-point-mask er ikke helt implementeret"
+
+#: vms-tir.c:1510 vms-tir.c:1522 vms-tir.c:1534 vms-tir.c:1546 vms-tir.c:1611
+#: vms-tir.c:1619 vms-tir.c:1627
+#, c-format
+msgid "%s: not fully implemented"
+msgstr "%s: ikke helt implementeret"
+
+#: vms-tir.c:1684
+#, c-format
+msgid "obj code %d not found"
+msgstr "objektkode %d kunne ikke findes"
+
+#: vms-tir.c:2019
+#, c-format
+msgid "SEC_RELOC with no relocs in section %s"
+msgstr "SEC_RELOC uden relokaliseringer i sektion %s"
+
+#: vms-tir.c:2307
+#, c-format
+msgid "Unhandled relocation %s"
+msgstr "Uhåndteret relokalisering %s"
+
+#: xcofflink.c:1243
+#, c-format
+msgid "%s: `%s' has line numbers but no enclosing section"
+msgstr "%s: \"%s\" har linjenumre men ingen omsluttende sektion"
+
+#: xcofflink.c:1296
+#, c-format
+msgid "%s: class %d symbol `%s' has no aux entries"
+msgstr "%s: klasse %d-symbol \"%s\" har ingen ydre poster"
+
+#: xcofflink.c:1319
+#, c-format
+msgid "%s: symbol `%s' has unrecognized csect type %d"
+msgstr "%s: symbol \"%s\" har ukendt csect-type %d"
+
+#: xcofflink.c:1331
+#, c-format
+msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
+msgstr "%s: fejlagtig XTY_ER-symbol \"%s\": klasse %d scnum %d scnlen %d"
+
+#: xcofflink.c:1367
+#, c-format
+msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d"
+msgstr "%s: XMC_TC0-symbol \"%s\" er klasse %d scnlen %d"
+
+#: xcofflink.c:1519
+#, c-format
+msgid "%s: csect `%s' not in enclosing section"
+msgstr "%s: csect \"%s\" er ikke i omsluttende sektion"
+
+#: xcofflink.c:1626
+#, c-format
+msgid "%s: misplaced XTY_LD `%s'"
+msgstr "%s: fejlagtigt placeret XTY_LD \"%s\""
+
+#: xcofflink.c:1957
+#, c-format
+msgid "%s: reloc %s:%d not in csect"
+msgstr "%s: relokaliseringen %s:%d er ikke i csect"
+
+#: xcofflink.c:2092
+#, c-format
+msgid "%s: XCOFF shared object when not producing XCOFF output"
+msgstr "%s: XCOFF delt objekt når ikke XCOFF-uddata produceres"
+
+#: xcofflink.c:2113
+#, c-format
+msgid "%s: dynamic object with no .loader section"
+msgstr "%s: dynamisk objekt uden nogen .loader-sektion"
+
+#: xcofflink.c:2758
+#, c-format
+msgid "%s: no such symbol"
+msgstr "%s: intet sådant symbol"
+
+#: xcofflink.c:2891
+msgid "error: undefined symbol __rtinit"
+msgstr "fejl: udefineret symbol __rtinit"
+
+#: xcofflink.c:3453
+#, c-format
+msgid "warning: attempt to export undefined symbol `%s'"
+msgstr "advarsel: forsøg på at eksportere udefineret symbol \"%s\""
+
+#: xcofflink.c:4447
+#, c-format
+msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
+msgstr "TOC giver overløb: 0x%lx > 0x10000; prøv -mminimal-toc ved kompilering"
+
+#: xcofflink.c:5287 xcofflink.c:5756 xcofflink.c:5818 xcofflink.c:6119
+#, c-format
+msgid "%s: loader reloc in unrecognized section `%s'"
+msgstr "%s: indlæserrelokalisering i ukendt sektion \"%s\""
+
+#: xcofflink.c:5309 xcofflink.c:6130
+#, c-format
+msgid "%s: `%s' in loader reloc but not loader sym"
+msgstr "%s: \"%s\" i indlæserrelokalisering men ikke indlæsersym"
+
+#: xcofflink.c:5324
+#, c-format
+msgid "%s: loader reloc in read-only section %s"
+msgstr "%s: indlæserrelokalisering i skrivebeskyttet sektion %s"
+
+#: elf32-ia64.c:2222 elf64-ia64.c:2222
+msgid "@pltoff reloc against local symbol"
+msgstr "@pltoff-relokalisering mod lokalt symbol"
+
+#: elf32-ia64.c:3562 elf64-ia64.c:3562
+#, c-format
+msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
+msgstr "%s: kort datasegment løb over (0x%lx >= 0x400000)"
+
+#: elf32-ia64.c:3573 elf64-ia64.c:3573
+#, c-format
+msgid "%s: __gp does not cover short data segment"
+msgstr "%s: __gp dækker ikke kort datasegment"
+
+#: elf32-ia64.c:3858 elf64-ia64.c:3858
+#, c-format
+msgid "%s: linking non-pic code in a shared library"
+msgstr "%s: lænker ikke-pic-kode i delt bibliotek"
+
+#: elf32-ia64.c:3891 elf64-ia64.c:3891
+#, c-format
+msgid "%s: @gprel relocation against dynamic symbol %s"
+msgstr "%s: @gprel-relokalisering mod dynamisk symbol %s"
+
+#: elf32-ia64.c:4030 elf64-ia64.c:4030
+#, c-format
+msgid "%s: dynamic relocation against speculation fixup"
+msgstr "%s: dynamisk relokalisering uden spekulationsrettelser"
+
+#: elf32-ia64.c:4038 elf64-ia64.c:4038
+#, c-format
+msgid "%s: speculation fixup against undefined weak symbol"
+msgstr "%s: spekulationsfix mod udefineret svagt symbol"
+
+#: elf32-ia64.c:4271 elf64-ia64.c:4271
+msgid "unsupported reloc"
+msgstr "relokaliseringen understøttes ikke"
+
+#: elf32-ia64.c:4551 elf64-ia64.c:4551
+#, c-format
+msgid "%s: linking trap-on-NULL-dereference with non-trapping files"
+msgstr "%s: lænker fang-ved-NULL-dereference med ikkefangende filer"
+
+#: elf32-ia64.c:4560 elf64-ia64.c:4560
+#, c-format
+msgid "%s: linking big-endian files with little-endian files"
+msgstr "%s: lænker big endian-filer med little endian-filer"
+
+#: elf32-ia64.c:4569 elf64-ia64.c:4569
+#, c-format
+msgid "%s: linking 64-bit files with 32-bit files"
+msgstr "%s: lænker 64-bitfiler med 32-bitfiler"
+
+#: elf32-ia64.c:4578 elf64-ia64.c:4578
+#, c-format
+msgid "%s: linking constant-gp files with non-constant-gp files"
+msgstr "%s: lænker konstant-gp-filer med ikke-konstant-gp-filer"
+
+#: elf32-ia64.c:4588 elf64-ia64.c:4588
+#, c-format
+msgid "%s: linking auto-pic files with non-auto-pic files"
+msgstr "%s: lænker auto-pic-filer med ikke-auto-pic-filer"
+
+#: peigen.c:962 pepigen.c:962
+#, c-format
+msgid "%s: line number overflow: 0x%lx > 0xffff"
+msgstr "%s: linjenummer giver overløb: 0x%lx > 0xffff"
+
+#: peigen.c:979 pepigen.c:979
+#, c-format
+msgid "%s: reloc overflow 1: 0x%lx > 0xffff"
+msgstr "%s: relokalisering giver overløb 1: 0x%lx > 0xffff"
+
+#: peigen.c:993 pepigen.c:993
+msgid "Export Directory [.edata (or where ever we found it)]"
+msgstr "Exportkatalog [.edata (eller hvor vi fandt det)]"
+
+#: peigen.c:994 pepigen.c:994
+msgid "Import Directory [parts of .idata]"
+msgstr "Importkatalog [dele af .idata]"
+
+#: peigen.c:995 pepigen.c:995
+msgid "Resource Directory [.rsrc]"
+msgstr "Resursekatalog [.rsrc]"
+
+#: peigen.c:996 pepigen.c:996
+msgid "Exception Directory [.pdata]"
+msgstr "Undtagelseskatalog [.pdata]"
+
+#: peigen.c:997 pepigen.c:997
+msgid "Security Directory"
+msgstr "Sikkerhedskatalog"
+
+#: peigen.c:998 pepigen.c:998
+msgid "Base Relocation Directory [.reloc]"
+msgstr "Baserelokaliseringskatalog [.reloc]"
+
+#: peigen.c:999 pepigen.c:999
+msgid "Debug Directory"
+msgstr "Fejlsøgningskatalog"
+
+#: peigen.c:1000 pepigen.c:1000
+msgid "Description Directory"
+msgstr "Beskrivelseskatalog"
+
+#: peigen.c:1001 pepigen.c:1001
+msgid "Special Directory"
+msgstr "Specialkatalog"
+
+#: peigen.c:1002 pepigen.c:1002
+msgid "Thread Storage Directory [.tls]"
+msgstr "Trådlagringskatalog [.tls]"
+
+#: peigen.c:1003 pepigen.c:1003
+msgid "Load Configuration Directory"
+msgstr "Indlæsningskonfigurationskatalog"
+
+#: peigen.c:1004 pepigen.c:1004
+msgid "Bound Import Directory"
+msgstr "Katalog over bundne importer"
+
+#: peigen.c:1005 pepigen.c:1005
+msgid "Import Address Table Directory"
+msgstr "Importadressetabelkatalog"
+
+#: peigen.c:1006 pepigen.c:1006
+msgid "Delay Import Directory"
+msgstr "Katalog over forskinkede importer"
+
+#: peigen.c:1007 peigen.c:1008 pepigen.c:1007 pepigen.c:1008
+msgid "Reserved"
+msgstr "Reserveret"
+
+#: peigen.c:1071 pepigen.c:1071
+msgid ""
+"\n"
+"There is an import table, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Der findes en importtabel, men sektionen som indeholder den kunne ikke findes\n"
+
+#: peigen.c:1076 pepigen.c:1076
+#, c-format
+msgid ""
+"\n"
+"There is an import table in %s at 0x%lx\n"
+msgstr ""
+"\n"
+"Der findes en importtabel i %s på 0x%lx\n"
+
+#: peigen.c:1113 pepigen.c:1113
+#, c-format
+msgid ""
+"\n"
+"Function descriptor located at the start address: %04lx\n"
+msgstr ""
+"\n"
+"Funktionsidentifikatorer fundet på startadressen: %04lx\n"
+
+#: peigen.c:1116 pepigen.c:1116
+#, c-format
+msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+msgstr "\tkodebase %08lx toc (indlæsningsbar/reelt) %08lx/%08lx\n"
+
+#: peigen.c:1122 pepigen.c:1122
+msgid ""
+"\n"
+"No reldata section! Function descriptor not decoded.\n"
+msgstr ""
+"\n"
+"Ingen reldata-sektion! Funktionsidentifikatorer afkodedes ikke.\n"
+
+#: peigen.c:1127 pepigen.c:1127
+#, c-format
+msgid ""
+"\n"
+"The Import Tables (interpreted %s section contents)\n"
+msgstr ""
+"\n"
+"Importtabellerne (tolket indhold i %s-sektion)\n"
+
+# Vad er thunk?
+#: peigen.c:1130 pepigen.c:1130
+msgid ""
+" vma:            Hint    Time      Forward  DLL       First\n"
+"                 Table   Stamp     Chain    Name      Thunk\n"
+msgstr ""
+" vma:            Tips-   Tids-     Fremad-  DLL-      Første\n"
+"                 tabel   stempel   kæde     navn      thunk\n"
+
+#: peigen.c:1181 pepigen.c:1181
+#, c-format
+msgid ""
+"\n"
+"\tDLL Name: %s\n"
+msgstr ""
+"\n"
+"\tDLL-navn: %s\n"
+
+#: peigen.c:1192 pepigen.c:1192
+msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
+msgstr "\tvma: Tips/Ordn Medlemsnavn Bundet till\n"
+
+#: peigen.c:1217 pepigen.c:1217
+msgid ""
+"\n"
+"There is a first thunk, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Der findes en første thunk, men sektionen som indeholder den kunne ikke findes\n"
+
+#: peigen.c:1357 pepigen.c:1357
+msgid ""
+"\n"
+"There is an export table, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Der findes en eksporttabel, men sektionen som indeholder den kunne ikke findes\n"
+
+#: peigen.c:1362 pepigen.c:1362
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s at 0x%lx\n"
+msgstr ""
+"\n"
+"Det findes en eksporttabel i %s ved 0x%lx\n"
+
+#: peigen.c:1393 pepigen.c:1393
+#, c-format
+msgid ""
+"\n"
+"The Export Tables (interpreted %s section contents)\n"
+"\n"
+msgstr ""
+"\n"
+"Eksporttabellerne (tolket indhold i %s-sektion)\n"
+
+#: peigen.c:1397 pepigen.c:1397
+#, c-format
+msgid "Export Flags \t\t\t%lx\n"
+msgstr "Eksportflag \t\t\t%lx\n"
+
+#: peigen.c:1400 pepigen.c:1400
+#, c-format
+msgid "Time/Date stamp \t\t%lx\n"
+msgstr "Tids/datostempel \t\t%lx\n"
+
+#: peigen.c:1403 pepigen.c:1403
+#, c-format
+msgid "Major/Minor \t\t\t%d/%d\n"
+msgstr "Større/mindre \t\t\t%d/%d\n"
+
+#: peigen.c:1406 pepigen.c:1406
+msgid "Name \t\t\t\t"
+msgstr "Navn \t\t\t\t"
+
+#: peigen.c:1412 pepigen.c:1412
+#, c-format
+msgid "Ordinal Base \t\t\t%ld\n"
+msgstr "Ordningsbase \t\t\t%ld\n"
+
+#: peigen.c:1415 pepigen.c:1415
+msgid "Number in:\n"
+msgstr "Tal i:\n"
+
+#: peigen.c:1418 pepigen.c:1418
+#, c-format
+msgid "\tExport Address Table \t\t%08lx\n"
+msgstr "\tEksportadressetabel \t\t%08lx\n"
+
+#: peigen.c:1422 pepigen.c:1422
+#, c-format
+msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
+msgstr "\t[Navnepeger/Ordningstal]-tabel\t%08lx\n"
+
+#: peigen.c:1425 pepigen.c:1425
+msgid "Table Addresses\n"
+msgstr "Tabeladresser\n"
+
+#: peigen.c:1428 pepigen.c:1428
+msgid "\tExport Address Table \t\t"
+msgstr "\tEksportadressetabel \t\t"
+
+#: peigen.c:1433 pepigen.c:1433
+msgid "\tName Pointer Table \t\t"
+msgstr "\tNavnepegertabel \t\t"
+
+#: peigen.c:1438 pepigen.c:1438
+msgid "\tOrdinal Table \t\t\t"
+msgstr "\tOrdningstalstabel \t\t\t"
+
+#: peigen.c:1453 pepigen.c:1453
+#, c-format
+msgid ""
+"\n"
+"Export Address Table -- Ordinal Base %ld\n"
+msgstr ""
+"\n"
+"Eksportadressetabel -- Ordningsbase %ld\n"
+
+#: peigen.c:1472 pepigen.c:1472
+msgid "Forwarder RVA"
+msgstr "Videresender-RVA"
+
+#: peigen.c:1483 pepigen.c:1483
+msgid "Export RVA"
+msgstr "Eksport-RVA"
+
+#: peigen.c:1490 pepigen.c:1490
+msgid ""
+"\n"
+"[Ordinal/Name Pointer] Table\n"
+msgstr ""
+"\n"
+"[Ordningstals-/Navnepeger-]tabel\n"
+
+#: peigen.c:1545 pepigen.c:1545
+#, c-format
+msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr "Advarsel, størrelsen på .pdata-sektionen (%ld) er ikke en multipel af %d\n"
+
+#: peigen.c:1549 pepigen.c:1549
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+"\n"
+"Funktionstabellen (tolket indhold fra .pdata-sektionen)\n"
+
+#: peigen.c:1552 pepigen.c:1552
+msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
+msgstr " vma:\t\t\tStartadresse      Slutadresse       Tilbagespolings-information\n"
+
+#: peigen.c:1554 pepigen.c:1554
+msgid ""
+" vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
+"     \t\tAddress  Address  Handler  Data     Address    Mask\n"
+msgstr ""
+" vma:\t\tStart-    Slut-     EH-        EH-    Prologsluts-  Undtagelses-\n"
+"     \t\tadresse   adresse   håndterere data   adresse       maske\n"
+
+#: peigen.c:1624 pepigen.c:1624
+msgid " Register save millicode"
+msgstr " Registergemnings millikode"
+
+#: peigen.c:1627 pepigen.c:1627
+msgid " Register restore millicode"
+msgstr " Registergenskabnings millikode"
+
+#: peigen.c:1630 pepigen.c:1630
+msgid " Glue code sequence"
+msgstr " Klisterkodesekvens"
+
+#: peigen.c:1682 pepigen.c:1682
+msgid ""
+"\n"
+"\n"
+"PE File Base Relocations (interpreted .reloc section contents)\n"
+msgstr ""
+"\n"
+"\n"
+"PE-filbaserelokaliseringer (tolket indhold i .reloc-sektionen)\n"
+
+#: peigen.c:1712 pepigen.c:1712
+#, c-format
+msgid ""
+"\n"
+"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
+msgstr ""
+"\n"
+"Virtuel adresse: %08lx Områdesstørrelse %ld (0x%lx) Antal rettelser %ld\n"
+
+#: peigen.c:1725 pepigen.c:1725
+#, c-format
+msgid "\treloc %4d offset %4x [%4lx] %s"
+msgstr "\trelokalisering %4d afstand %4x [%4lx] %s"
+
+#. The MS dumpbin program reportedly ands with 0xff0f before
+#. printing the characteristics field.  Not sure why.  No reason to
+#. emulate it here.
+#: peigen.c:1765 pepigen.c:1765
+#, c-format
+msgid ""
+"\n"
+"Characteristics 0x%x\n"
+msgstr ""
+"\n"
+"Karakteristik 0x%x\n"
diff --git a/gas/testsuite/gas/mips/mips-abi32-pic2.d b/gas/testsuite/gas/mips/mips-abi32-pic2.d
new file mode 100644 (file)
index 0000000..1f3811e
--- /dev/null
@@ -0,0 +1,74 @@
+#objdump: -d -mmips:8000 -r --prefix-addresses --show-raw-insn
+#as: -march=8000 -EB -mabi=32 -KPIC
+#name: MIPS -mabi=32 test 2 (SVR4 PIC)
+
+.*: +file format.*
+
+Disassembly of section \.text:
+0+000 <[^>]*> 3c1c0000         lui     gp,0x0
+                       0: R_MIPS_HI16  _gp_disp
+0+004 <[^>]*> 279c0000         addiu   gp,gp,0
+                       4: R_MIPS_LO16  _gp_disp
+0+008 <[^>]*> 0399e021         addu    gp,gp,t9
+0+00c <[^>]*> afbc0008         sw      gp,8\(sp\)
+0+010 <[^>]*> 8f990000         lw      t9,0\(gp\)
+                       10: R_MIPS_GOT16        \.text
+0+014 <[^>]*> 00000000         nop
+0+018 <[^>]*> 273900d8         addiu   t9,t9,216
+                       18: R_MIPS_LO16 \.text
+0+01c <[^>]*> 0320f809         jalr    t9
+0+020 <[^>]*> 00000000         nop
+0+024 <[^>]*> 8fbc0008         lw      gp,8\(sp\)
+0+028 <[^>]*> 00000000         nop
+0+02c <[^>]*> 0320f809         jalr    t9
+0+030 <[^>]*> 00000000         nop
+0+034 <[^>]*> 8fbc0008         lw      gp,8\(sp\)
+0+038 <[^>]*> 3c1c0000         lui     gp,0x0
+                       38: R_MIPS_HI16 _gp_disp
+0+03c <[^>]*> 279c0000         addiu   gp,gp,0
+                       3c: R_MIPS_LO16 _gp_disp
+0+040 <[^>]*> 0399e021         addu    gp,gp,t9
+0+044 <[^>]*> 3c010001         lui     at,0x1
+0+048 <[^>]*> 003d0821         addu    at,at,sp
+0+04c <[^>]*> ac3c8000         sw      gp,-32768\(at\)
+0+050 <[^>]*> 8f990000         lw      t9,0\(gp\)
+                       50: R_MIPS_GOT16        \.text
+0+054 <[^>]*> 00000000         nop
+0+058 <[^>]*> 273900d8         addiu   t9,t9,216
+                       58: R_MIPS_LO16 \.text
+0+05c <[^>]*> 0320f809         jalr    t9
+0+060 <[^>]*> 00000000         nop
+0+064 <[^>]*> 3c010001         lui     at,0x1
+0+068 <[^>]*> 003d0821         addu    at,at,sp
+0+06c <[^>]*> 8c3c8000         lw      gp,-32768\(at\)
+0+070 <[^>]*> 00000000         nop
+0+074 <[^>]*> 0320f809         jalr    t9
+0+078 <[^>]*> 00000000         nop
+0+07c <[^>]*> 3c010001         lui     at,0x1
+0+080 <[^>]*> 003d0821         addu    at,at,sp
+0+084 <[^>]*> 8c3c8000         lw      gp,-32768\(at\)
+0+088 <[^>]*> 3c1c0000         lui     gp,0x0
+                       88: R_MIPS_HI16 _gp_disp
+0+08c <[^>]*> 279c0000         addiu   gp,gp,0
+                       8c: R_MIPS_LO16 _gp_disp
+0+090 <[^>]*> 0399e021         addu    gp,gp,t9
+0+094 <[^>]*> 3c010001         lui     at,0x1
+0+098 <[^>]*> 003d0821         addu    at,at,sp
+0+09c <[^>]*> ac3c0000         sw      gp,0\(at\)
+0+0a0 <[^>]*> 8f990000         lw      t9,0\(gp\)
+                       a0: R_MIPS_GOT16        \.text
+0+0a4 <[^>]*> 00000000         nop
+0+0a8 <[^>]*> 273900d8         addiu   t9,t9,216
+                       a8: R_MIPS_LO16 \.text
+0+0ac <[^>]*> 0320f809         jalr    t9
+0+0b0 <[^>]*> 00000000         nop
+0+0b4 <[^>]*> 3c010001         lui     at,0x1
+0+0b8 <[^>]*> 003d0821         addu    at,at,sp
+0+0bc <[^>]*> 8c3c0000         lw      gp,0\(at\)
+0+0c0 <[^>]*> 00000000         nop
+0+0c4 <[^>]*> 0320f809         jalr    t9
+0+0c8 <[^>]*> 00000000         nop
+0+0cc <[^>]*> 3c010001         lui     at,0x1
+0+0d0 <[^>]*> 003d0821         addu    at,at,sp
+0+0d4 <[^>]*> 8c3c0000         lw      gp,0\(at\)
+       \.\.\.
diff --git a/gas/testsuite/gas/mips/mips-abi32-pic2.s b/gas/testsuite/gas/mips/mips-abi32-pic2.s
new file mode 100644 (file)
index 0000000..3e22e26
--- /dev/null
@@ -0,0 +1,107 @@
+
+       .text
+       .ent    func1
+func1:
+       .frame $sp,0,$31
+       .set noreorder
+       .cpload $25             # 0000 lui      gp,hi(_gp_disp)
+                               # 0004 addiu    gp,gp,lo(_gp_disp)
+                               # 0008 addu     gp,gp,t9
+       .set reorder
+       .cprestore 8            # 000c sw       gp,8(sp)
+
+       jal     end             # 0010 lw       t9,got(.text)(gp)
+                               # 0014 nop
+                               # 0018 addiu    t9,t9,lo(end)
+                               # 001c jalr     t9
+                               # 0020 nop
+                               # 0024 lw       gp,8(sp)
+
+       # Avoid confusion: avoid the 'lw' above being put into the delay
+       # slot for the jalr below!
+       .set noreorder
+       nop                     # 0028 nop
+       .set reorder
+
+       jal     $25             # 002c jalr     t9
+                               # 0030 nop
+                               # 0034 lw       gp,8(sp)
+       .end    func1
+
+
+       .text
+       .ent    func2
+func2:
+       .frame $sp,0,$31
+       .set noreorder
+       .cpload $25             # 0038 lui      gp,hi(_gp_disp)
+                               # 003c addiu    gp,gp,lo(_gp_disp)
+                               # 0040 addu     gp,gp,t9
+       .set reorder
+       .cprestore 32768        # 0044 lui      at,0x1
+                               # 0048 addu     at,at,sp
+                               # 004c sw       gp,-32768(at)
+
+       jal     end             # 0050 lw       t9,got(.text)(gp)
+                               # 0054 nop
+                               # 0058 addiu    t9,t9,lo(end)
+                               # 005c jalr     t9
+                               # 0060 nop
+                               # 0064 lui      at,0x1
+                               # 0068 addu     at,at,sp
+                               # 006c lw       gp,-32768(at)
+
+       # Avoid confusion: avoid the 'lw' above being put into the delay
+       # slot for the jalr below!
+       .set noreorder
+       nop                     # 0070 nop
+       .set reorder
+
+       jal     $25             # 0074 jalr     t9
+                               # 0078 nop
+                               # 007c lui      at,0x1
+                               # 0080 addu     at,at,sp
+                               # 0084 lw       gp,-32768(at)
+       .end    func2
+
+
+       .text
+       .ent    func3
+func3:
+       .frame $sp,0,$31
+       .set noreorder
+       .cpload $25             # 0088 lui      gp,hi(_gp_disp)
+                               # 008c addiu    gp,gp,lo(_gp_disp)
+                               # 0090 addu     gp,gp,t9
+       .set reorder
+       .cprestore 65536        # 0094 lui      at,0x1
+                               # 0098 addu     at,at,sp
+                               # 009c sw       gp,0(at)
+
+       jal     end             # 00a0 lw       t9,got(.text)(gp)
+                               # 00a4 nop
+                               # 00a8 addiu    t9,t9,lo(end)
+                               # 00ac jalr     t9
+                               # 00b0 nop
+                               # 00b4 lui      at,0x1
+                               # 00b8 addu     at,at,sp
+                               # 00bc lw       gp,0(at)
+
+       # Avoid confusion: avoid the 'lw' above being put into the delay
+       # slot for the jalr below!
+       .set noreorder
+       nop                     # 00c0 nop
+       .set reorder
+
+       jal     $25             # 00c4 jalr     t9
+                               # 00c8 nop
+                               # 00cc lui      at,0x1
+                               # 00d0 addu     at,at,sp
+                               # 00d4 lw       gp,0(at)
+
+       .end    func3
+
+end:
+
+# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
+       .space  8
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
new file mode 100644 (file)
index 0000000..09526f8
--- /dev/null
@@ -0,0 +1,184 @@
+# Expect script for ld-i386 tests
+#   Copyright (C) 2000, 2001, 2002 Free Software Foundation
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+
+# Test i386 linking; all types of relocs.  This tests the assembler and
+# tools like objdump as well as the linker.
+
+if { !([istarget "i?86-*-elf*"]                
+       || ([istarget "i?86-*-linux*"]
+          && ![istarget "*-*-*aout*"]
+          && ![istarget "*-*-*oldld*"])) } {
+    return
+}
+
+# FIXME: This isn't set by testsuite/config/default.exp; make it.
+if ![info exists readelf] then {
+    set readelf [findfile $base_dir/../binutils/readelf]
+}
+
+# List contains test-items with 3 items followed by 2 lists:
+# 0:name 1:ld options 2:assembler options
+# 3:filenames of assembler files 4: action and options. 5: name of output file
+
+# Actions:
+# objdump: Apply objdump options on result.  Compare with regex (last arg).
+# nm: Apply nm options on result.  Compare with regex (last arg).
+# readelf: Apply readelf options on result.  Compare with regex (last arg).
+
+set i386tests {
+    {"TLS -fpic -shared transitions" "-shared -melf_i386"
+     "--32" {tlspic1.s tlspic2.s}
+     {{readelf -Ssrl tlspic.rd} {objdump -drj.text tlspic.dd}
+      {objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
+      "libtlspic.so"}
+    {"Helper shared library" "-shared -melf_i386"
+     "--32" {tlslib.s} {} "libtlslib.so"}
+    {"TLS -fpic and -fno-pic exec transitions"
+     "-melf_i386 tmpdir/libtlslib.so" "--32" {tlsbinpic.s tlsbin.s}
+     {{readelf -Ssrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
+      {objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
+      "tlsbin"}
+    {"TLS -fno-pic -shared" "-shared -melf_i386"
+     "--32" {tlsnopic1.s tlsnopic2.s}
+     {{readelf -Ssrl tlsnopic.rd} {objdump -drj.text tlsnopic.dd}
+      {objdump -sj.got tlsnopic.sd}} "libtlsnopic.so"}
+}
+
+# FIXME: Generalize and move this to ld-lib.exp
+
+proc run_ld_link_tests { ldtests } {
+    global ld
+    global as
+    global nm
+    global objdump
+    global readelf
+    global srcdir
+    global subdir
+    global env
+
+    foreach testitem $ldtests {
+       set testname [lindex $testitem 0]
+       set ld_options [lindex $testitem 1]
+       set as_options [lindex $testitem 2]
+       set as_files  [lindex $testitem 3]
+       set actions [lindex $testitem 4]
+       set binfile tmpdir/[lindex $testitem 5]
+       set objfiles {}
+       set is_unresolved 0
+       set failed 0
+
+#      verbose -log "Testname is $testname"
+#      verbose -log "ld_options is $ld_options"
+#      verbose -log "as_options is $as_options"
+#      verbose -log "as_files is $as_files"
+#      verbose -log "actions is $actions"
+#      verbose -log "binfile is $binfile"
+
+       # Assemble each file in the test.
+       foreach as_file $as_files {
+           set objfile "tmpdir/[file rootname $as_file].o"
+           lappend objfiles $objfile
+
+           if ![ld_assemble $as "$as_options $srcdir/$subdir/$as_file" $objfile] {
+               set is_unresolved 1
+               break
+           }
+       }
+
+       # Catch assembler errors.
+       if { $is_unresolved != 0 } {
+           unresolved $testname
+           continue
+       }
+
+       if ![ld_simple_link $ld $binfile "-L$srcdir/$subdir $ld_options $objfiles"] {
+           fail $testname
+       } else {
+           set failed 0
+           foreach actionlist $actions {
+               set action [lindex $actionlist 0]
+               set progopts [lindex $actionlist 1]
+
+               # There are actions where we run regexp_diff on the
+               # output, and there are other actions (presumably).
+               # Handling of the former look the same.
+               set dump_prog ""
+               switch -- $action {
+                   objdump
+                       { set dump_prog $objdump }
+                   nm
+                       { set dump_prog $nm }
+                   readelf
+                       { set dump_prog $readelf }
+                   default
+                       {
+                           perror "Unrecognized action $action"
+                           set is_unresolved 1
+                           break
+                       }
+                   }
+
+               if { $dump_prog != "" } {
+                   set dumpfile [lindex $actionlist 2]
+                   set binary $dump_prog
+
+                   # Ensure consistent sorting of symbols
+                   if {[info exists env(LC_ALL)]} {
+                       set old_lc_all $env(LC_ALL)
+                   }
+                   set env(LC_ALL) "C"
+                   set cmd "$binary $progopts $binfile > dump.out"
+                   send_log "$cmd\n"
+                   catch "exec $cmd" comp_output
+                   if {[info exists old_lc_all]} {
+                       set env(LC_ALL) $old_lc_all
+                   } else {
+                       unset env(LC_ALL)
+                   }
+                   set comp_output [prune_warnings $comp_output]
+
+                   if ![string match "" $comp_output] then {
+                       send_log "$comp_output\n"
+                       set failed 1
+                       break
+                   }
+
+                   if { [regexp_diff "dump.out" "$srcdir/$subdir/$dumpfile"] } then {
+                       verbose "output is [file_contents "dump.out"]" 2
+                       set failed 1
+                       break
+                   }
+               }
+           }
+
+           if { $failed != 0 } {
+               fail $testname
+           } else { if { $is_unresolved == 0 } {
+               pass $testname
+           } }
+       }
+
+       # Catch action errors.
+       if { $is_unresolved != 0 } {
+           unresolved $testname
+           continue
+       }
+    }
+}
+
+run_ld_link_tests $i386tests
diff --git a/ld/testsuite/ld-i386/tlsbin.dd b/ld/testsuite/ld-i386/tlsbin.dd
new file mode 100644 (file)
index 0000000..9ad0cc3
--- /dev/null
@@ -0,0 +1,456 @@
+#source: tlsbinpic.s
+#source: tlsbin.s
+#as: --32
+#ld: -melf_i386 tmpdir/libtlslib.so
+#objdump: -drj.text
+#target: i?86-*-*
+
+# PT_TLS layout is:
+# Offset from  Offset from     Name
+# TCB base     TCB end
+# 0x00         -0xa0           sg1..sg8
+# 0x20         -0x80           sl1..sl8
+# 0x40         -0x60           sh1..sh8
+# 0x60         -0x40           bg1..bg8
+# 0x80         -0x20           bl1..bl8
+
+.*: +file format elf32-i386
+
+Disassembly of section .text:
+
+0+8049000 <fn2>:
+ 8049000:      55[     ]+push   %ebp
+ 8049001:      89 e5[  ]+mov    %esp,%ebp
+ 8049003:      53[     ]+push   %ebx
+ 8049004:      50[     ]+push   %eax
+ 8049005:      e8 00 00 00 00[         ]+call   804900a <fn2\+0xa>
+ 804900a:      5b[     ]+pop    %ebx
+ 804900b:      81 c3 f6 10 00 00[      ]+add    \$0x10f6,%ebx
+ 8049011:      90[     ]+nop *
+ 8049012:      90[     ]+nop *
+ 8049013:      90[     ]+nop *
+ 8049014:      90[     ]+nop *
+#  GD -> IE because variable is not defined in executable
+ 8049015:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804901b:      2b 83 2c 00 00 00[      ]+sub    0x2c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sG1
+ 8049021:      90[     ]+nop *
+ 8049022:      90[     ]+nop *
+ 8049023:      90[     ]+nop *
+ 8049024:      90[     ]+nop *
+#  GD -> IE because variable is not defined in executable where
+#  the variable is referenced through @gottpoff too
+ 8049025:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804902b:      2b 83 1c 00 00 00[      ]+sub    0x1c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sG2
+ 8049031:      90[     ]+nop *
+ 8049032:      90[     ]+nop *
+ 8049033:      90[     ]+nop *
+ 8049034:      90[     ]+nop *
+#  GD -> IE because variable is not defined in executable where
+#  the variable is referenced through @gotntpoff too
+ 8049035:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804903b:      2b 83 10 00 00 00[      ]+sub    0x10\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       sG3
+ 8049041:      90[     ]+nop *
+ 8049042:      90[     ]+nop *
+ 8049043:      90[     ]+nop *
+ 8049044:      90[     ]+nop *
+#  GD -> IE because variable is not defined in executable where
+#  the variable is referenced through @gottpoff and @gotntpoff too
+ 8049045:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804904b:      2b 83 20 00 00 00[      ]+sub    0x20\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sG4
+ 8049051:      90[     ]+nop *
+ 8049052:      90[     ]+nop *
+ 8049053:      90[     ]+nop *
+ 8049054:      90[     ]+nop *
+#  GD -> LE with global variable defined in executable
+ 8049055:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804905b:      81 e8 a0 00 00 00[      ]+sub    \$0xa0,%eax
+#                                                      sg1
+ 8049061:      90[     ]+nop *
+ 8049062:      90[     ]+nop *
+ 8049063:      90[     ]+nop *
+ 8049064:      90[     ]+nop *
+#  GD -> LE with local variable defined in executable
+ 8049065:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804906b:      81 e8 80 00 00 00[      ]+sub    \$0x80,%eax
+#                                                      sl1
+ 8049071:      90[     ]+nop *
+ 8049072:      90[     ]+nop *
+ 8049073:      90[     ]+nop *
+ 8049074:      90[     ]+nop *
+#  GD -> LE with hidden variable defined in executable
+ 8049075:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804907b:      81 e8 60 00 00 00[      ]+sub    \$0x60,%eax
+#                                                      sh1
+ 8049081:      90[     ]+nop *
+ 8049082:      90[     ]+nop *
+ 8049083:      90[     ]+nop *
+ 8049084:      90[     ]+nop *
+#  LD
+ 8049085:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804908b:      90[     ]+nop *
+ 804908c:      8d 74 26 00[    ]+lea    0x0\(%esi,1\),%esi
+ 8049090:      90[     ]+nop *
+ 8049091:      90[     ]+nop *
+ 8049092:      8d 90 80 ff ff ff[      ]+lea    0xffffff80\(%eax\),%edx
+#                                                      sl1
+ 8049098:      90[     ]+nop *
+ 8049099:      90[     ]+nop *
+ 804909a:      8d 88 84 ff ff ff[      ]+lea    0xffffff84\(%eax\),%ecx
+#                                                      sl2
+ 80490a0:      90[     ]+nop *
+ 80490a1:      90[     ]+nop *
+ 80490a2:      90[     ]+nop *
+ 80490a3:      90[     ]+nop *
+#  LD against hidden variables
+ 80490a4:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 80490aa:      90[     ]+nop *
+ 80490ab:      8d 74 26 00[    ]+lea    0x0\(%esi,1\),%esi
+ 80490af:      90[     ]+nop *
+ 80490b0:      90[     ]+nop *
+ 80490b1:      8d 90 a0 ff ff ff[      ]+lea    0xffffffa0\(%eax\),%edx
+#                                                      sh1
+ 80490b7:      90[     ]+nop *
+ 80490b8:      90[     ]+nop *
+ 80490b9:      8d 88 a4 ff ff ff[      ]+lea    0xffffffa4\(%eax\),%ecx
+#                                                      sh2
+ 80490bf:      90[     ]+nop *
+ 80490c0:      90[     ]+nop *
+ 80490c1:      90[     ]+nop *
+ 80490c2:      90[     ]+nop *
+#  @gottpoff IE against global var
+ 80490c3:      65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ 80490ca:      90[     ]+nop *
+ 80490cb:      90[     ]+nop *
+ 80490cc:      2b 8b 1c 00 00 00[      ]+sub    0x1c\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF32     sG2
+ 80490d2:      90[     ]+nop *
+ 80490d3:      90[     ]+nop *
+ 80490d4:      90[     ]+nop *
+ 80490d5:      90[     ]+nop *
+#  @gottpoff IE against global var
+ 80490d6:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 80490dc:      90[     ]+nop *
+ 80490dd:      90[     ]+nop *
+ 80490de:      2b 83 20 00 00 00[      ]+sub    0x20\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sG4
+ 80490e4:      90[     ]+nop *
+ 80490e5:      90[     ]+nop *
+ 80490e6:      90[     ]+nop *
+ 80490e7:      90[     ]+nop *
+#  @gotntpoff IE against global var
+ 80490e8:      65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ 80490ef:      90[     ]+nop *
+ 80490f0:      90[     ]+nop *
+ 80490f1:      03 8b 10 00 00 00[      ]+add    0x10\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       sG3
+ 80490f7:      90[     ]+nop *
+ 80490f8:      90[     ]+nop *
+ 80490f9:      90[     ]+nop *
+ 80490fa:      90[     ]+nop *
+#  @gotntpoff IE against global var
+ 80490fb:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 8049101:      90[     ]+nop *
+ 8049102:      90[     ]+nop *
+ 8049103:      03 83 24 00 00 00[      ]+add    0x24\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       sG4
+ 8049109:      90[     ]+nop *
+ 804910a:      90[     ]+nop *
+ 804910b:      90[     ]+nop *
+ 804910c:      90[     ]+nop *
+#  @gottpoff IE -> LE against global var defined in exec
+ 804910d:      65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ 8049114:      90[     ]+nop *
+ 8049115:      90[     ]+nop *
+ 8049116:      81 e9 a0 00 00 00[      ]+sub    \$0xa0,%ecx
+#                                                      sg1
+ 804911c:      90[     ]+nop *
+ 804911d:      90[     ]+nop *
+ 804911e:      90[     ]+nop *
+ 804911f:      90[     ]+nop *
+#  @gotntpoff IE -> LE against local var
+ 8049120:      65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ 8049127:      90[     ]+nop *
+ 8049128:      90[     ]+nop *
+ 8049129:      81 c0 80 ff ff ff[      ]+add    \$0xffffff80,%eax
+#                                                      sl1
+ 804912f:      90[     ]+nop *
+ 8049130:      90[     ]+nop *
+ 8049131:      90[     ]+nop *
+ 8049132:      90[     ]+nop *
+#  @gottpoff IE -> LE against hidden var
+ 8049133:      65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ 804913a:      90[     ]+nop *
+ 804913b:      90[     ]+nop *
+ 804913c:      81 e9 60 00 00 00[      ]+sub    \$0x60,%ecx
+#                                                      sh1
+ 8049142:      90[     ]+nop *
+ 8049143:      90[     ]+nop *
+ 8049144:      90[     ]+nop *
+ 8049145:      90[     ]+nop *
+#  Direct access through %gs
+#  @gotntpoff IE against global var
+ 8049146:      8b 8b 14 00 00 00[      ]+mov    0x14\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       sG5
+ 804914c:      90[     ]+nop *
+ 804914d:      90[     ]+nop *
+ 804914e:      65 8b 11[       ]+mov    %gs:\(%ecx\),%edx
+ 8049151:      90[     ]+nop *
+ 8049152:      90[     ]+nop *
+ 8049153:      90[     ]+nop *
+ 8049154:      90[     ]+nop *
+#  @gotntpoff IE->LE against local var
+ 8049155:      c7 c0 90 ff ff ff[      ]+mov    \$0xffffff90,%eax
+#                                                      sl5
+ 804915b:      90[     ]+nop *
+ 804915c:      90[     ]+nop *
+ 804915d:      65 8b 10[       ]+mov    %gs:\(%eax\),%edx
+ 8049160:      90[     ]+nop *
+ 8049161:      90[     ]+nop *
+ 8049162:      90[     ]+nop *
+ 8049163:      90[     ]+nop *
+#  @gotntpoff IE->LE against hidden var
+ 8049164:      c7 c2 b0 ff ff ff[      ]+mov    \$0xffffffb0,%edx
+#                                                      sh5
+ 804916a:      90[     ]+nop *
+ 804916b:      90[     ]+nop *
+ 804916c:      65 8b 12[       ]+mov    %gs:\(%edx\),%edx
+ 804916f:      90[     ]+nop *
+ 8049170:      90[     ]+nop *
+ 8049171:      90[     ]+nop *
+ 8049172:      90[     ]+nop *
+ 8049173:      8b 5d fc[       ]+mov    0xfffffffc\(%ebp\),%ebx
+ 8049176:      c9[     ]+leave *
+ 8049177:      c3[     ]+ret *
+
+08049178 <_start>:
+ 8049178:      55[     ]+push   %ebp
+ 8049179:      89 e5[  ]+mov    %esp,%ebp
+ 804917b:      e8 00 00 00 00[         ]+call   8049180 <_start\+0x8>
+ 8049180:      59[     ]+pop    %ecx
+ 8049181:      81 c1 80 0f 00 00[      ]+add    \$0xf80,%ecx
+ 8049187:      90[     ]+nop *
+ 8049188:      90[     ]+nop *
+ 8049189:      90[     ]+nop *
+ 804918a:      90[     ]+nop *
+#  @gottpoff IE against global var
+ 804918b:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 8049192:      90[     ]+nop *
+ 8049193:      90[     ]+nop *
+ 8049194:      2b 91 28 00 00 00[      ]+sub    0x28\(%ecx\),%edx
+#                              ->R_386_TLS_TPOFF32     sG6
+ 804919a:      90[     ]+nop *
+ 804919b:      90[     ]+nop *
+ 804919c:      90[     ]+nop *
+ 804919d:      90[     ]+nop *
+#  @indntpoff IE against global var
+ 804919e:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 80491a4:      90[     ]+nop *
+ 80491a5:      90[     ]+nop *
+ 80491a6:      03 05 18 a1 04 08[      ]+add    0x804a118,%eax
+#                              ->R_386_TLS_TPOFF       sG7
+ 80491ac:      90[     ]+nop *
+ 80491ad:      90[     ]+nop *
+ 80491ae:      90[     ]+nop *
+ 80491af:      90[     ]+nop *
+#  @indntpoff direct %gs access IE against global var
+ 80491b0:      8b 15 30 a1 04 08[      ]+mov    0x804a130,%edx
+#                              ->R_386_TLS_TPOFF       sG8
+ 80491b6:      90[     ]+nop *
+ 80491b7:      90[     ]+nop *
+ 80491b8:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+ 80491bb:      90[     ]+nop *
+ 80491bc:      90[     ]+nop *
+ 80491bd:      90[     ]+nop *
+ 80491be:      90[     ]+nop *
+#  @gottpoff IE -> LE against global var defined in exec
+ 80491bf:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 80491c6:      90[     ]+nop *
+ 80491c7:      90[     ]+nop *
+ 80491c8:      81 ea 2c 00 00 00[      ]+sub    \$0x2c,%edx
+#                                                      bg6
+ 80491ce:      90[     ]+nop *
+ 80491cf:      90[     ]+nop *
+ 80491d0:      90[     ]+nop *
+ 80491d1:      90[     ]+nop *
+#  @indntpoff IE -> LE against global var defined in exec
+ 80491d2:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 80491d8:      90[     ]+nop *
+ 80491d9:      90[     ]+nop *
+ 80491da:      81 c0 d8 ff ff ff[      ]+add    \$0xffffffd8,%eax
+#                                                      bg7
+ 80491e0:      90[     ]+nop *
+ 80491e1:      90[     ]+nop *
+ 80491e2:      90[     ]+nop *
+ 80491e3:      90[     ]+nop *
+#  @indntpoff direct %gs access IE -> LE against global var defined
+#  in exec
+ 80491e4:      c7 c2 dc ff ff ff[      ]+mov    \$0xffffffdc,%edx
+#                                                      bg8
+ 80491ea:      90[     ]+nop *
+ 80491eb:      90[     ]+nop *
+ 80491ec:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+ 80491ef:      90[     ]+nop *
+ 80491f0:      90[     ]+nop *
+ 80491f1:      90[     ]+nop *
+ 80491f2:      90[     ]+nop *
+#  @gottpoff IE -> LE against local var
+ 80491f3:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 80491fa:      90[     ]+nop *
+ 80491fb:      90[     ]+nop *
+ 80491fc:      81 ea 0c 00 00 00[      ]+sub    \$0xc,%edx
+#                                                      bl6
+ 8049202:      90[     ]+nop *
+ 8049203:      90[     ]+nop *
+ 8049204:      90[     ]+nop *
+ 8049205:      90[     ]+nop *
+#  @indntpoff IE -> LE against local var
+ 8049206:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 804920c:      90[     ]+nop *
+ 804920d:      90[     ]+nop *
+ 804920e:      81 c0 f8 ff ff ff[      ]+add    \$0xfffffff8,%eax
+#                                                      bl7
+ 8049214:      90[     ]+nop *
+ 8049215:      90[     ]+nop *
+ 8049216:      90[     ]+nop *
+ 8049217:      90[     ]+nop *
+#  @indntpoff direct %gs access IE -> LE against local var
+ 8049218:      c7 c2 fc ff ff ff[      ]+mov    \$0xfffffffc,%edx
+#                                                      bl8
+ 804921e:      90[     ]+nop *
+ 804921f:      90[     ]+nop *
+ 8049220:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+ 8049223:      90[     ]+nop *
+ 8049224:      90[     ]+nop *
+ 8049225:      90[     ]+nop *
+ 8049226:      90[     ]+nop *
+#  @gottpoff IE -> LE against hidden but not local var
+ 8049227:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 804922e:      90[     ]+nop *
+ 804922f:      90[     ]+nop *
+ 8049230:      81 ea 4c 00 00 00[      ]+sub    \$0x4c,%edx
+#                                                      sh6
+ 8049236:      90[     ]+nop *
+ 8049237:      90[     ]+nop *
+ 8049238:      90[     ]+nop *
+ 8049239:      90[     ]+nop *
+#  @indntpoff IE -> LE against hidden but not local var
+ 804923a:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 8049240:      90[     ]+nop *
+ 8049241:      90[     ]+nop *
+ 8049242:      81 c0 b8 ff ff ff[      ]+add    \$0xffffffb8,%eax
+#                                                      sh7
+ 8049248:      90[     ]+nop *
+ 8049249:      90[     ]+nop *
+ 804924a:      90[     ]+nop *
+ 804924b:      90[     ]+nop *
+#  @indntpoff direct %gs access IE -> LE against hidden but not
+#  local var
+ 804924c:      c7 c2 bc ff ff ff[      ]+mov    \$0xffffffbc,%edx
+#                                                      sh8
+ 8049252:      90[     ]+nop *
+ 8049253:      90[     ]+nop *
+ 8049254:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+ 8049257:      90[     ]+nop *
+ 8049258:      90[     ]+nop *
+ 8049259:      90[     ]+nop *
+ 804925a:      90[     ]+nop *
+#  LE @tpoff, global var defined in exec
+ 804925b:      ba a0 00 00 00[         ]+mov    \$0xa0,%edx
+#                                                      sg1
+ 8049260:      90[     ]+nop *
+ 8049261:      90[     ]+nop *
+ 8049262:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 8049268:      90[     ]+nop *
+ 8049269:      90[     ]+nop *
+ 804926a:      29 d0[  ]+sub    %edx,%eax
+ 804926c:      90[     ]+nop *
+ 804926d:      90[     ]+nop *
+ 804926e:      90[     ]+nop *
+ 804926f:      90[     ]+nop *
+#  LE @tpoff, local var
+ 8049270:      b8 1f 00 00 00[         ]+mov    \$0x1f,%eax
+#                                                      bl1+1
+ 8049275:      90[     ]+nop *
+ 8049276:      90[     ]+nop *
+ 8049277:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 804927e:      90[     ]+nop *
+ 804927f:      90[     ]+nop *
+ 8049280:      29 c2[  ]+sub    %eax,%edx
+ 8049282:      90[     ]+nop *
+ 8049283:      90[     ]+nop *
+ 8049284:      90[     ]+nop *
+ 8049285:      90[     ]+nop *
+#  LE @tpoff, hidden var defined in exec
+ 8049286:      b8 5d 00 00 00[         ]+mov    \$0x5d,%eax
+#                                                      sh1+3
+ 804928b:      90[     ]+nop *
+ 804928c:      90[     ]+nop *
+ 804928d:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 8049294:      90[     ]+nop *
+ 8049295:      90[     ]+nop *
+ 8049296:      29 c2[  ]+sub    %eax,%edx
+ 8049298:      90[     ]+nop *
+ 8049299:      90[     ]+nop *
+ 804929a:      90[     ]+nop *
+ 804929b:      90[     ]+nop *
+#  LE @ntpoff, global var defined in exec
+ 804929c:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ 80492a2:      90[     ]+nop *
+ 80492a3:      90[     ]+nop *
+ 80492a4:      8d 90 64 ff ff ff[      ]+lea    0xffffff64\(%eax\),%edx
+#                                                      sg2
+ 80492aa:      90[     ]+nop *
+ 80492ab:      90[     ]+nop *
+ 80492ac:      90[     ]+nop *
+ 80492ad:      90[     ]+nop *
+#  LE @ntpoff, local var, non-canonical sequence
+ 80492ae:      b8 e6 ff ff ff[         ]+mov    \$0xffffffe6,%eax
+#                                                      bl2+2
+ 80492b3:      90[     ]+nop *
+ 80492b4:      90[     ]+nop *
+ 80492b5:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 80492bc:      90[     ]+nop *
+ 80492bd:      90[     ]+nop *
+ 80492be:      01 c2[  ]+add    %eax,%edx
+ 80492c0:      90[     ]+nop *
+ 80492c1:      90[     ]+nop *
+ 80492c2:      90[     ]+nop *
+ 80492c3:      90[     ]+nop *
+#  LE @ntpoff, hidden var defined in exec, non-canonical sequence
+ 80492c4:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+ 80492cb:      90[     ]+nop *
+ 80492cc:      90[     ]+nop *
+ 80492cd:      81 c2 a5 ff ff ff[      ]+add    \$0xffffffa5,%edx
+#                                                      sh2+1
+ 80492d3:      90[     ]+nop *
+ 80492d4:      90[     ]+nop *
+ 80492d5:      90[     ]+nop *
+ 80492d6:      90[     ]+nop *
+#  LE @ntpoff, global var defined in exec
+ 80492d7:      65 a1 68 ff ff ff[      ]+mov    %gs:0xffffff68,%eax
+#                                                      sg3
+ 80492dd:      90[     ]+nop *
+ 80492de:      90[     ]+nop *
+ 80492df:      90[     ]+nop *
+ 80492e0:      90[     ]+nop *
+#  LE @ntpoff, local var
+ 80492e1:      65 8b 15 eb ff ff ff    mov    %gs:0xffffffeb,%edx
+#                                                      bl3+3
+ 80492e8:      90[     ]+nop *
+ 80492e9:      90[     ]+nop *
+ 80492ea:      90[     ]+nop *
+ 80492eb:      90[     ]+nop *
+#  LE @ntpoff, hidden var defined in exec
+ 80492ec:      65 8b 15 a9 ff ff ff    mov    %gs:0xffffffa9,%edx
+#                                                      sh3+1
+ 80492f3:      90[     ]+nop *
+ 80492f4:      90[     ]+nop *
+ 80492f5:      90[     ]+nop *
+ 80492f6:      90[     ]+nop *
+ 80492f7:      8b 5d fc[       ]+mov    0xfffffffc\(%ebp\),%ebx
+ 80492fa:      c9[     ]+leave *
+ 80492fb:      c3[     ]+ret *
diff --git a/ld/testsuite/ld-i386/tlsbin.rd b/ld/testsuite/ld-i386/tlsbin.rd
new file mode 100644 (file)
index 0000000..a7fb144
--- /dev/null
@@ -0,0 +1,167 @@
+#source: tlsbinpic.s
+#source: tlsbin.s
+#as: --32
+#ld: -melf_i386 tmpdir/libtlslib.so
+#readelf: -Ssrl
+#target: i?86-*-*
+
+There are 18 section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+  \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+  \[ 1\] \.interp +.*
+  \[ 2\] \.hash +.*
+  \[ 3\] \.dynsym +.*
+  \[ 4\] \.dynstr +.*
+  \[ 5\] \.rel.dyn +.*
+  \[ 6\] \.rel.plt +.*
+  \[ 7\] \.plt +.*
+  \[ 8\] \.text +PROGBITS +0+8049000 .*
+  \[ 9\] \.data +.*
+  \[10\] .tdata +PROGBITS +0+804a000 [0-9a-f]+ 000060 00 WAT  0   0  1
+  \[11\] .tbss +NOBITS +[0-9a-f]+ [0-9a-f]+ 000040 00 WAT  0   0  1
+  \[12\] \.dynamic +DYNAMIC +0+804a060 .*
+  \[13\] \.got +PROGBITS +0+804a100 .*
+  \[14\] \.bss +.*
+  \[15\] \.shstrtab +.*
+  \[16\] \.symtab +.*
+  \[17\] \.strtab +.*
+Key to Flags:
+.*
+.*
+.*
+
+Elf file type is EXEC \(Executable file\)
+Entry point 0x8049178
+There are 6 program headers, starting at offset [0-9]+
+
+Program Headers:
+  Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+  PHDR.*
+  INTERP.*
+.*Requesting program interpreter.*
+  LOAD.*
+  LOAD.*
+  DYNAMIC.*
+  TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+a0 R +0x1
+
+ Section to Segment mapping:
+  Segment Sections...
+   00 +
+   01 +.interp *
+   02 +.interp .hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
+   03 +.tdata .tbss .dynamic .got *
+   04 +.tbss .dynamic *
+   05 +.tdata .tbss *
+
+Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 9 entries:
+ Offset +Info +Type +Sym.Value +Sym. Name
+0+804a110  0000010e R_386_TLS_TPOFF +0+ +sG3
+0+804a114  0000020e R_386_TLS_TPOFF +0+ +sG5
+0+804a118  0000040e R_386_TLS_TPOFF +0+ +sG7
+0+804a11c  00000525 R_386_TLS_TPOFF32 0+ +sG2
+0+804a120  00000625 R_386_TLS_TPOFF32 0+ +sG4
+0+804a124  0000060e R_386_TLS_TPOFF +0+ +sG4
+0+804a128  00000825 R_386_TLS_TPOFF32 0+ +sG6
+0+804a12c  00000925 R_386_TLS_TPOFF32 0+ +sG1
+0+804a130  00000d0e R_386_TLS_TPOFF +0+ +sG8
+
+Relocation section '.rel.plt' at offset 0x30c contains 1 entries:
+ Offset +Info +Type +Sym.Value  Sym. Name
+0+804a10c  00000e07 R_386_JUMP_SLOT +[0-9a-f]+ +___tls_get_addr
+
+Symbol table '.dynsym' contains 15 entries:
+ +Num: +Value  Size Type +Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
+ +2: 0+ +0 TLS +GLOBAL DEFAULT  UND sG5
+ +3: 0+804a060 +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +4: 0+ +0 TLS +GLOBAL DEFAULT  UND sG7
+ +5: 0+ +0 TLS +GLOBAL DEFAULT  UND sG2
+ +6: 0+ +0 TLS +GLOBAL DEFAULT  UND sG4
+ +7: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +8: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
+ +9: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
+ +10: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +11: 0+804a100 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +12: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
+ +13: 0+ +0 TLS +GLOBAL DEFAULT  UND sG8
+ +14: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT  UND ___tls_get_addr
+
+Symbol table '.symtab' contains 74 entries:
+ +Num: +Value  Size Type +Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +1 *
+ +2: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +2 *
+ +3: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +3 *
+ +4: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +4 *
+ +5: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +5 *
+ +6: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
+ +7: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
+ +8: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
+ +9: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
+ +10: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +10 *
+ +11: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +11 *
+ +12: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +12 *
+ +13: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +13 *
+ +14: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +14 *
+ +15: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +15 *
+ +16: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +16 *
+ +17: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +17 *
+ +18: 00000020 +0 TLS +LOCAL  DEFAULT +10 sl1
+ +19: 00000024 +0 TLS +LOCAL  DEFAULT +10 sl2
+ +20: 00000028 +0 TLS +LOCAL  DEFAULT +10 sl3
+ +21: 0000002c +0 TLS +LOCAL  DEFAULT +10 sl4
+ +22: 00000030 +0 TLS +LOCAL  DEFAULT +10 sl5
+ +23: 00000034 +0 TLS +LOCAL  DEFAULT +10 sl6
+ +24: 00000038 +0 TLS +LOCAL  DEFAULT +10 sl7
+ +25: 0000003c +0 TLS +LOCAL  DEFAULT +10 sl8
+ +26: 00000080 +0 TLS +LOCAL  DEFAULT +11 bl1
+ +27: 00000084 +0 TLS +LOCAL  DEFAULT +11 bl2
+ +28: 00000088 +0 TLS +LOCAL  DEFAULT +11 bl3
+ +29: 0000008c +0 TLS +LOCAL  DEFAULT +11 bl4
+ +30: 00000090 +0 TLS +LOCAL  DEFAULT +11 bl5
+ +31: 00000094 +0 TLS +LOCAL  DEFAULT +11 bl6
+ +32: 00000098 +0 TLS +LOCAL  DEFAULT +11 bl7
+ +33: 0000009c +0 TLS +LOCAL  DEFAULT +11 bl8
+ +34: 0+ +0 TLS +GLOBAL DEFAULT  UND sG3
+ +35: 0000001c +0 TLS +GLOBAL DEFAULT +10 sg8
+ +36: 0000007c +0 TLS +GLOBAL DEFAULT +11 bg8
+ +37: 00000074 +0 TLS +GLOBAL DEFAULT +11 bg6
+ +38: 0+ +0 TLS +GLOBAL DEFAULT  UND sG5
+ +39: 00000068 +0 TLS +GLOBAL DEFAULT +11 bg3
+ +40: 0+804a060 +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +41: 00000008 +0 TLS +GLOBAL DEFAULT +10 sg3
+ +42: 0+ +0 TLS +GLOBAL DEFAULT  UND sG7
+ +43: 00000048 +0 TLS +GLOBAL HIDDEN +10 sh3
+ +44: 0+ +0 TLS +GLOBAL DEFAULT  UND sG2
+ +45: 0000000c +0 TLS +GLOBAL DEFAULT +10 sg4
+ +46: 0+ +0 TLS +GLOBAL DEFAULT  UND sG4
+ +47: 00000010 +0 TLS +GLOBAL DEFAULT +10 sg5
+ +48: 00000070 +0 TLS +GLOBAL DEFAULT +11 bg5
+ +49: 00000058 +0 TLS +GLOBAL HIDDEN +10 sh7
+ +50: 0000005c +0 TLS +GLOBAL HIDDEN +10 sh8
+ +51: 0+ +0 TLS +GLOBAL DEFAULT +10 sg1
+ +52: 0+8049178 +0 FUNC +GLOBAL DEFAULT +8 _start
+ +53: 0000004c +0 TLS +GLOBAL HIDDEN +10 sh4
+ +54: 00000078 +0 TLS +GLOBAL DEFAULT +11 bg7
+ +55: 00000050 +0 TLS +GLOBAL HIDDEN +10 sh5
+ +56: 0+804a134 +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +57: 0+ +0 TLS +GLOBAL DEFAULT  UND sG6
+ +58: 0+8049000 +0 FUNC +GLOBAL DEFAULT +8 fn2
+ +59: 00000004 +0 TLS +GLOBAL DEFAULT +10 sg2
+ +60: 0+ +0 TLS +GLOBAL DEFAULT  UND sG1
+ +61: 00000040 +0 TLS +GLOBAL HIDDEN +10 sh1
+ +62: 00000014 +0 TLS +GLOBAL DEFAULT +10 sg6
+ +63: 00000018 +0 TLS +GLOBAL DEFAULT +10 sg7
+ +64: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +65: 0+804a100 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +66: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
+ +67: 00000044 +0 TLS +GLOBAL HIDDEN +10 sh2
+ +68: 00000054 +0 TLS +GLOBAL HIDDEN +10 sh6
+ +69: 0+ +0 TLS +GLOBAL DEFAULT  UND sG8
+ +70: 00000064 +0 TLS +GLOBAL DEFAULT +11 bg2
+ +71: 00000060 +0 TLS +GLOBAL DEFAULT +11 bg1
+ +72: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT  UND ___tls_get_addr
+ +73: 0000006c +0 TLS +GLOBAL DEFAULT +11 bg4
diff --git a/ld/testsuite/ld-i386/tlsbin.s b/ld/testsuite/ld-i386/tlsbin.s
new file mode 100644 (file)
index 0000000..db80e09
--- /dev/null
@@ -0,0 +1,165 @@
+       .section ".tbss", "awT", @nobits
+       .globl bg1, bg2, bg3, bg4, bg5, bg6, bg7, bg8
+bg1:   .space 4
+bg2:   .space 4
+bg3:   .space 4
+bg4:   .space 4
+bg5:   .space 4
+bg6:   .space 4
+bg7:   .space 4
+bg8:   .space 4
+bl1:   .space 4
+bl2:   .space 4
+bl3:   .space 4
+bl4:   .space 4
+bl5:   .space 4
+bl6:   .space 4
+bl7:   .space 4
+bl8:   .space 4
+       .text
+       .globl  _start
+       .type   _start,@function
+_start:
+       pushl   %ebp
+       movl    %esp, %ebp
+       /* Set up .GOT pointer for non-pic @gottpoff sequences */
+       call    1f
+1:     popl    %ecx
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against global var  */
+       movl    %gs:0, %edx
+       nop;nop
+       subl    sG6@gottpoff(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @indntpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sG7@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE against global var  */
+       movl    sG8@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE -> LE against global var defined in exec  */
+       movl    %gs:0, %edx
+       nop;nop
+       subl    bg6@gottpoff(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @indntpoff IE -> LE against global var defined in exec */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    bg7@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE -> LE against global var defined
+          in exec  */
+       movl    bg8@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE -> LE against local var  */
+       movl    %gs:0, %edx
+       nop;nop
+       subl    bl6@gottpoff(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @indntpoff IE -> LE against local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    bl7@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE -> LE against local var  */
+       movl    bl8@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE -> LE against hidden but not local var  */
+       movl    %gs:0, %edx
+       nop;nop
+       subl    sh6@gottpoff(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @indntpoff IE -> LE against hidden but not local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sh7@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE -> LE against hidden but not
+          local var  */
+       movl    sh8@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* LE @tpoff, global var defined in exec  */
+       movl    $sg1@tpoff, %edx
+       nop;nop
+       movl    %gs:0, %eax
+       nop;nop
+       subl    %edx, %eax
+       nop;nop;nop;nop
+
+       /* LE @tpoff, local var  */
+       movl    $-1+bl1@tpoff, %eax
+       nop;nop
+       movl    %gs:0, %edx
+       nop;nop
+       subl    %eax, %edx
+       nop;nop;nop;nop
+
+       /* LE @tpoff, hidden var defined in exec  */
+       movl    $sh1@tpoff-3, %eax
+       nop;nop
+       movl    %gs:0, %edx
+       nop;nop
+       subl    %eax, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, global var defined in exec  */
+       movl    %gs:0, %eax
+       nop;nop
+       leal    sg2@ntpoff(%eax), %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, local var, non-canonical sequence  */
+       movl    $2+bl2@ntpoff, %eax
+       nop;nop
+       movl    %gs:0, %edx
+       nop;nop
+       addl    %eax, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, hidden var defined in exec, non-canonical sequence */
+       movl    %gs:0, %edx
+       nop;nop
+       addl    $sh2@ntpoff+1, %edx
+       nop;nop;nop;nop
+
+       /* Direct %gs access  */
+
+       /* LE @ntpoff, global var defined in exec  */
+       movl    %gs:sg3@ntpoff, %eax
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, local var  */
+       movl    %gs:bl3@ntpoff+3, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, hidden var defined in exec  */
+       movl    %gs:1+sh3@ntpoff, %edx
+       nop;nop;nop;nop
+
+       movl    -4(%ebp), %ebx
+       leave
+       ret
diff --git a/ld/testsuite/ld-i386/tlsbin.sd b/ld/testsuite/ld-i386/tlsbin.sd
new file mode 100644 (file)
index 0000000..b82affe
--- /dev/null
@@ -0,0 +1,14 @@
+#source: tlsbinpic.s
+#source: tlsbin.s
+#as: --32
+#ld: -melf_i386 tmpdir/libtlslib.so
+#objdump: -sj.got
+#target: i?86-*-*
+
+.*:     file format elf32-i386
+
+Contents of section \.got:
+ 804a100 [0-9a-f]+ 00000000 00000000 [0-9a-f]+  .*
+ 804a110 00000000 00000000 00000000 00000000  .*
+ 804a120 00000000 00000000 00000000 00000000  .*
+ 804a130 00000000  +.*
diff --git a/ld/testsuite/ld-i386/tlsbin.td b/ld/testsuite/ld-i386/tlsbin.td
new file mode 100644 (file)
index 0000000..bb29455
--- /dev/null
@@ -0,0 +1,16 @@
+#source: tlsbinpic.s
+#source: tlsbin.s
+#as: --32
+#ld: -melf_i386 tmpdir/libtlslib.so
+#objdump: -sj.tdata
+#target: i?86-*-*
+
+.*:     file format elf32-i386
+
+Contents of section \.tdata:
+ 804a000 11000000 12000000 13000000 14000000  .*
+ 804a010 15000000 16000000 17000000 18000000  .*
+ 804a020 41000000 42000000 43000000 44000000  .*
+ 804a030 45000000 46000000 47000000 48000000  .*
+ 804a040 01010000 02010000 03010000 04010000  .*
+ 804a050 05010000 06010000 07010000 08010000  .*
diff --git a/ld/testsuite/ld-i386/tlsbinpic.s b/ld/testsuite/ld-i386/tlsbinpic.s
new file mode 100644 (file)
index 0000000..027773a
--- /dev/null
@@ -0,0 +1,168 @@
+       /* Force .got aligned to 4K, so it very likely gets at 0x804a100
+          (0x60 bytes .tdata and 0xa0 bytes .dynamic)  */
+       .data
+       .balign 4096
+       .section ".tdata", "awT", @progbits
+       .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
+       .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
+       .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
+sg1:   .long 17
+sg2:   .long 18
+sg3:   .long 19
+sg4:   .long 20
+sg5:   .long 21
+sg6:   .long 22
+sg7:   .long 23
+sg8:   .long 24
+sl1:   .long 65
+sl2:   .long 66
+sl3:   .long 67
+sl4:   .long 68
+sl5:   .long 69
+sl6:   .long 70
+sl7:   .long 71
+sl8:   .long 72
+sh1:   .long 257
+sh2:   .long 258
+sh3:   .long 259
+sh4:   .long 260
+sh5:   .long 261
+sh6:   .long 262
+sh7:   .long 263
+sh8:   .long 264
+       /* Force .text aligned to 4K, so it very likely gets at 0x8049000.  */
+       .text
+       .balign 4096
+       .globl  fn2
+       .type   fn2,@function
+fn2:
+       pushl   %ebp
+       movl    %esp, %ebp
+       pushl   %ebx
+       pushl   %eax
+       call    1f
+1:     popl    %ebx
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is not defined in executable */
+       leal    sG1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is not defined in executable where
+          the variable is referenced through @gottpoff too */
+       leal    sG2@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is not defined in executable where
+          the variable is referenced through @gotntpoff too */
+       leal    sG3@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is not defined in executable where
+          the variable is referenced through @gottpoff and @gotntpoff too */
+       leal    sG4@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> LE with global variable defined in executable */
+       leal    sg1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> LE with local variable defined in executable */
+       leal    sl1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> LE with hidden variable defined in executable */
+       leal    sh1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* LD */
+       leal    sl1@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop;nop
+       leal    sl1@dtpoff(%eax), %edx
+       nop;nop
+       leal    sl2@dtpoff(%eax), %ecx
+       nop;nop;nop;nop
+
+       /* LD against hidden variables */
+       leal    sh1@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop;nop
+       leal    sh1@dtpoff(%eax), %edx
+       nop;nop
+       leal    sh2@dtpoff(%eax), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against global var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sG2@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       subl    sG4@gottpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against global var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sG3@gotntpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sG4@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE -> LE against global var defined in exec */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sg1@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE -> LE against local var */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sl1@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE -> LE against hidden var */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sh1@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* Direct access through %gs  */
+
+       /* @gotntpoff IE against global var  */
+       movl    sG5@gotntpoff(%ebx), %ecx
+       nop;nop
+       movl    %gs:(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE->LE against local var  */
+       movl    sl5@gotntpoff(%ebx), %eax
+       nop;nop
+       movl    %gs:(%eax), %edx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE->LE against hidden var  */
+       movl    sh5@gotntpoff(%ebx), %edx
+       nop;nop
+       movl    %gs:(%edx), %edx
+       nop;nop;nop;nop
+
+       movl    -4(%ebp), %ebx
+       leave
+       ret
diff --git a/ld/testsuite/ld-i386/tlslib.s b/ld/testsuite/ld-i386/tlslib.s
new file mode 100644 (file)
index 0000000..22e1f8d
--- /dev/null
@@ -0,0 +1,17 @@
+       .section ".tdata", "awT", @progbits
+       .globl sG1, sG2, sG3, sG4, sG5, sG6, sG7, sG8
+sG1:   .long 513
+sG2:   .long 514
+sG3:   .long 515
+sG4:   .long 516
+sG5:   .long 517
+sG6:   .long 518
+sG7:   .long 519
+sG8:   .long 520
+
+       .text
+       /* Dummy.  */
+       .globl ___tls_get_addr
+       .type   ___tls_get_addr,@function
+___tls_get_addr:
+       ret
diff --git a/ld/testsuite/ld-i386/tlsnopic.dd b/ld/testsuite/ld-i386/tlsnopic.dd
new file mode 100644 (file)
index 0000000..bb9f6e5
--- /dev/null
@@ -0,0 +1,161 @@
+#source: tlsnopic1.s
+#source: tlsnopic2.s
+#as: --32
+#ld: -shared -melf_i386
+#objdump: -drj.text
+#target: i?86-*-*
+
+.*: +file format elf32-i386
+
+Disassembly of section .text:
+
+0+1000 <fn3>:
+    1000:      55[     ]+push   %ebp
+    1001:      89 e5[  ]+mov    %esp,%ebp
+#  @indntpoff IE against global var
+    1003:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+    1009:      90[     ]+nop *
+    100a:      90[     ]+nop *
+    100b:      03 05 94 20 00 00[      ]+add    0x2094,%eax
+#                              ->R_386_TLS_TPOFF       sg1
+    1011:      90[     ]+nop *
+    1012:      90[     ]+nop *
+    1013:      90[     ]+nop *
+    1014:      90[     ]+nop *
+#  @indntpoff direct %gs access IE against global var
+    1015:      8b 15 98 20 00 00[      ]+mov    0x2098,%edx
+#                              ->R_386_TLS_TPOFF       sg2
+    101b:      90[     ]+nop *
+    101c:      90[     ]+nop *
+    101d:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+    1020:      90[     ]+nop *
+    1021:      90[     ]+nop *
+    1022:      90[     ]+nop *
+    1023:      90[     ]+nop *
+#  @indntpoff IE against hidden var
+    1024:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+    102a:      90[     ]+nop *
+    102b:      90[     ]+nop *
+    102c:      03 05 9c 20 00 00[      ]+add    0x209c,%eax
+#                              ->R_386_TLS_TPOFF       [0x14000000]
+    1032:      90[     ]+nop *
+    1033:      90[     ]+nop *
+    1034:      90[     ]+nop *
+    1035:      90[     ]+nop *
+#  @indntpoff direct %gs access IE against hidden var
+    1036:      8b 15 a0 20 00 00[      ]+mov    0x20a0,%edx
+#                              ->R_386_TLS_TPOFF       [0x18000000]
+    103c:      90[     ]+nop *
+    103d:      90[     ]+nop *
+    103e:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+    1041:      90[     ]+nop *
+    1042:      90[     ]+nop *
+    1043:      90[     ]+nop *
+    1044:      90[     ]+nop *
+#  @indntpoff IE against local var
+    1045:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+    104b:      90[     ]+nop *
+    104c:      90[     ]+nop *
+    104d:      03 05 8c 20 00 00[      ]+add    0x208c,%eax
+#                              ->R_386_TLS_TPOFF       [0x00000000]
+    1053:      90[     ]+nop *
+    1054:      90[     ]+nop *
+    1055:      90[     ]+nop *
+    1056:      90[     ]+nop *
+#  @indntpoff direct %gs access IE against local var
+    1057:      8b 15 90 20 00 00[      ]+mov    0x2090,%edx
+#                              ->R_386_TLS_TPOFF       [0x04000000]
+    105d:      90[     ]+nop *
+    105e:      90[     ]+nop *
+    105f:      65 8b 02[       ]+mov    %gs:\(%edx\),%eax
+    1062:      90[     ]+nop *
+    1063:      90[     ]+nop *
+    1064:      90[     ]+nop *
+    1065:      90[     ]+nop *
+#  LE @tpoff, global var
+    1066:      ba fd ff ff ff[         ]+mov    \$0xfffffffd,%edx
+#                              R_386_TLS_TPOFF32       sg3
+    106b:      90[     ]+nop *
+    106c:      90[     ]+nop *
+    106d:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+    1073:      90[     ]+nop *
+    1074:      90[     ]+nop *
+    1075:      29 d0[  ]+sub    %edx,%eax
+    1077:      90[     ]+nop *
+    1078:      90[     ]+nop *
+    1079:      90[     ]+nop *
+    107a:      90[     ]+nop *
+#  LE @tpoff, local var
+    107b:      b8 f7 ff ff ff[         ]+mov    \$0xfffffff7,%eax
+#                              R_386_TLS_TPOFF32
+    1080:      90[     ]+nop *
+    1081:      90[     ]+nop *
+    1082:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+    1089:      90[     ]+nop *
+    108a:      90[     ]+nop *
+    108b:      29 c2[  ]+sub    %eax,%edx
+    108d:      90[     ]+nop *
+    108e:      90[     ]+nop *
+    108f:      90[     ]+nop *
+    1090:      90[     ]+nop *
+#  LE @ntpoff, global var
+    1091:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+    1097:      90[     ]+nop *
+    1098:      90[     ]+nop *
+    1099:      8d 90 02 00 00 00[      ]+lea    0x2\(%eax\),%edx
+#                              R_386_TLS_TPOFF         sg4
+    109f:      90[     ]+nop *
+    10a0:      90[     ]+nop *
+    10a1:      90[     ]+nop *
+    10a2:      90[     ]+nop *
+#  LE @ntpoff, hidden var, non-canonical sequence
+    10a3:      b8 1c 00 00 00[         ]+mov    \$0x1c,%eax
+#                              R_386_TLS_TPOFF
+    10a8:      90[     ]+nop *
+    10a9:      90[     ]+nop *
+    10aa:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+    10b1:      90[     ]+nop *
+    10b2:      90[     ]+nop *
+    10b3:      01 c2[  ]+add    %eax,%edx
+    10b5:      90[     ]+nop *
+    10b6:      90[     ]+nop *
+    10b7:      90[     ]+nop *
+    10b8:      90[     ]+nop *
+#  LE @ntpoff, local var, non-canonical sequence
+    10b9:      65 8b 15 00 00 00 00    mov    %gs:0x0,%edx
+    10c0:      90[     ]+nop *
+    10c1:      90[     ]+nop *
+    10c2:      81 c2 0d 00 00 00[      ]+add    \$0xd,%edx
+#                              R_386_TLS_TPOFF
+    10c8:      90[     ]+nop *
+    10c9:      90[     ]+nop *
+    10ca:      90[     ]+nop *
+    10cb:      90[     ]+nop *
+#  Direct %gs access
+#  LE @ntpoff, global var
+    10cc:      65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+#                              R_386_TLS_TPOFF         sg5
+    10d2:      90[     ]+nop *
+    10d3:      90[     ]+nop *
+    10d4:      90[     ]+nop *
+    10d5:      90[     ]+nop *
+#  LE @ntpoff, local var
+    10d6:      65 8b 15 13 00 00 00    mov    %gs:0x13,%edx
+#                              R_386_TLS_TPOFF
+    10dd:      90[     ]+nop *
+    10de:      90[     ]+nop *
+    10df:      90[     ]+nop *
+    10e0:      90[     ]+nop *
+#  LE @ntpoff, hidden var
+    10e1:      65 8b 15 21 00 00 00    mov    %gs:0x21,%edx
+#                              R_386_TLS_TPOFF
+    10e8:      90[     ]+nop *
+    10e9:      90[     ]+nop *
+    10ea:      90[     ]+nop *
+    10eb:      90[     ]+nop *
+    10ec:      8b 5d fc[       ]+mov    0xfffffffc\(%ebp\),%ebx
+    10ef:      c9[     ]+leave *
+    10f0:      c3[     ]+ret *
+    10f1:      90[     ]+nop *
+    10f2:      90[     ]+nop *
+    10f3:      90[     ]+nop *
diff --git a/ld/testsuite/ld-i386/tlsnopic.rd b/ld/testsuite/ld-i386/tlsnopic.rd
new file mode 100644 (file)
index 0000000..3c6f372
--- /dev/null
@@ -0,0 +1,133 @@
+#source: tlsnopic1.s
+#source: tlsnopic2.s
+#as: --32
+#ld: -shared -melf_i386
+#readelf: -Ssrl
+#target: i?86-*-*
+
+There are 14 section headers, starting at offset 0x[0-9a-f]+:
+
+Section Headers:
+  \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+  \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+  \[ 1\] \.hash +.*
+  \[ 2\] \.dynsym +.*
+  \[ 3\] \.dynstr +.*
+  \[ 4\] \.rel.dyn +.*
+  \[ 5\] \.text +PROGBITS +0+1000 .*
+  \[ 6\] \.data +.*
+  \[ 7\] .tbss +NOBITS +[0-9a-f]+ [0-9a-f]+ 000024 00 WAT  0   0  1
+  \[ 8\] \.dynamic +DYNAMIC +0+2000 .*
+  \[ 9\] \.got +PROGBITS +0+2080 .*
+  \[10\] \.bss +.*
+  \[11\] \.shstrtab +.*
+  \[12\] \.symtab +.*
+  \[13\] \.strtab +.*
+Key to Flags:
+.*
+.*
+.*
+
+Elf file type is DYN \(Shared object file\)
+Entry point 0x1000
+There are 4 program headers, starting at offset [0-9]+
+
+Program Headers:
+  Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+  LOAD.*
+  LOAD.*
+  DYNAMIC.*
+  TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+ 0x0+24 R +0x1
+
+ Section to Segment mapping:
+  Segment Sections...
+   00 +.hash .dynsym .dynstr .rel.dyn .text *
+   01 +.tbss .dynamic .got *
+   02 +.tbss .dynamic *
+   03 +.tbss *
+
+Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 20 entries:
+ Offset +Info +Type +Sym.Value +Sym. Name
+0+100d  0+8 R_386_RELATIVE +
+0+1017  0+8 R_386_RELATIVE +
+0+102e  0+8 R_386_RELATIVE +
+0+1038  0+8 R_386_RELATIVE +
+0+104f  0+8 R_386_RELATIVE +
+0+1059  0+8 R_386_RELATIVE +
+0+1067  0+c25 R_386_TLS_TPOFF32 0+   sg3
+0+107c  0+25 R_386_TLS_TPOFF32
+0+10a4  0+e R_386_TLS_TPOFF +
+0+10c4  0+e R_386_TLS_TPOFF +
+0+10d9  0+e R_386_TLS_TPOFF +
+0+10e4  0+e R_386_TLS_TPOFF +
+0+208c  0+e R_386_TLS_TPOFF +
+0+2090  0+e R_386_TLS_TPOFF +
+0+209c  0+e R_386_TLS_TPOFF +
+0+20a0  0+e R_386_TLS_TPOFF +
+0+109b  0+d0e R_386_TLS_TPOFF   0+   sg4
+0+10ce  0+f0e R_386_TLS_TPOFF   0+   sg5
+0+2094  0+100e R_386_TLS_TPOFF   0+   sg1
+0+2098  0+120e R_386_TLS_TPOFF   0+   sg2
+
+
+Symbol table '.dynsym' contains 22 entries:
+ +Num: +Value  Size Type +Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +1 *
+ +2: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +2 *
+ +3: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +3 *
+ +4: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +4 *
+ +5: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +5 *
+ +6: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
+ +7: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
+ +8: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
+ +9: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
+ +10: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +10 *
+ +11: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +12: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg3
+ +13: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg4
+ +14: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3
+ +15: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg5
+ +16: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg1
+ +17: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +18: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg2
+ +19: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +20: 0+2080 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +21: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
+
+Symbol table '.symtab' contains 34 entries:
+ +Num: +Value  Size Type +Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +1 *
+ +2: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +2 *
+ +3: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +3 *
+ +4: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +4 *
+ +5: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +5 *
+ +6: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
+ +7: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
+ +8: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
+ +9: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
+ +10: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +10 *
+ +11: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +11 *
+ +12: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +12 *
+ +13: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +13 *
+ +14: 0+00 +0 TLS +LOCAL  DEFAULT +7 bl1
+ +15: 0+04 +0 TLS +LOCAL  DEFAULT +7 bl2
+ +16: 0+08 +0 TLS +LOCAL  DEFAULT +7 bl3
+ +17: 0+0c +0 TLS +LOCAL  DEFAULT +7 bl4
+ +18: 0+10 +0 TLS +LOCAL  DEFAULT +7 bl5
+ +19: 0+1c +0 TLS +LOCAL  HIDDEN +7 sh3
+ +20: 0+20 +0 TLS +LOCAL  HIDDEN +7 sh4
+ +21: 0+14 +0 TLS +LOCAL  HIDDEN +7 sh1
+ +22: 0+18 +0 TLS +LOCAL  HIDDEN +7 sh2
+ +23: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +24: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg3
+ +25: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg4
+ +26: 0+1000 +0 FUNC +GLOBAL DEFAULT +5 fn3
+ +27: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg5
+ +28: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg1
+ +29: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +30: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND sg2
+ +31: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +32: 0+2080 +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +33: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
diff --git a/ld/testsuite/ld-i386/tlsnopic.sd b/ld/testsuite/ld-i386/tlsnopic.sd
new file mode 100644 (file)
index 0000000..a79226f
--- /dev/null
@@ -0,0 +1,13 @@
+#source: tlsnopic1.s
+#source: tlsnopic2.s
+#as: --32
+#ld: -shared -melf_i386
+#objdump: -sj.got
+#target: i?86-*-*
+
+.*:     file format elf32-i386
+
+Contents of section \.got:
+ 2080 [0-9a-f]+ 00000000 00000000 00000000  .*
+ 2090 04000000 00000000 00000000 14000000  .*
+ 20a0 18000000  +.*
diff --git a/ld/testsuite/ld-i386/tlsnopic1.s b/ld/testsuite/ld-i386/tlsnopic1.s
new file mode 100644 (file)
index 0000000..32d730b
--- /dev/null
@@ -0,0 +1,107 @@
+       .data
+       /* Align, so that .got is likely at address 0x2080.  */
+       .balign 4096
+       .section ".tbss", "awT", @nobits
+bl1:   .space 4
+bl2:   .space 4
+bl3:   .space 4
+bl4:   .space 4
+bl5:   .space 4
+       .text
+       /* Align, so that fn3 is likely at address 0x1000.  */
+       .balign 4096
+       .globl  fn3
+       .type   fn3,@function
+fn3:
+       pushl   %ebp
+       movl    %esp, %ebp
+
+       /* @indntpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sg1@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE against global var  */
+       movl    sg2@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff IE against hidden var */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sh1@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE against hidden var */
+       movl    sh2@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff IE against local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    bl1@indntpoff, %eax
+       nop;nop;nop;nop
+
+       /* @indntpoff direct %gs access IE against local var  */
+       movl    bl2@indntpoff, %edx
+       nop;nop
+       movl    %gs:(%edx), %eax
+       nop;nop;nop;nop
+
+       /* LE @tpoff, global var  */
+       movl    $-3+sg3@tpoff, %edx
+       nop;nop
+       movl    %gs:0, %eax
+       nop;nop
+       subl    %edx, %eax
+       nop;nop;nop;nop
+
+       /* LE @tpoff, local var  */
+       movl    $-1+bl3@tpoff, %eax
+       nop;nop
+       movl    %gs:0, %edx
+       nop;nop
+       subl    %eax, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       leal    2+sg4@ntpoff(%eax), %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, hidden var, non-canonical sequence  */
+       movl    $sh3@ntpoff, %eax
+       nop;nop
+       movl    %gs:0, %edx
+       nop;nop
+       addl    %eax, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, local var, non-canonical sequence */
+       movl    %gs:0, %edx
+       nop;nop
+       addl    $bl4@ntpoff+1, %edx
+       nop;nop;nop;nop
+
+       /* Direct %gs access  */
+
+       /* LE @ntpoff, global var  */
+       movl    %gs:sg5@ntpoff, %eax
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, local var  */
+       movl    %gs:bl5@ntpoff+3, %edx
+       nop;nop;nop;nop
+
+       /* LE @ntpoff, hidden var  */
+       movl    %gs:1+sh4@ntpoff, %edx
+       nop;nop;nop;nop
+
+       movl    -4(%ebp), %ebx
+       leave
+       ret
diff --git a/ld/testsuite/ld-i386/tlsnopic2.s b/ld/testsuite/ld-i386/tlsnopic2.s
new file mode 100644 (file)
index 0000000..d932956
--- /dev/null
@@ -0,0 +1,7 @@
+       .section ".tbss", "awT", @nobits
+       .globl sh1, sh2, sh3, sh4
+       .hidden sh1, sh2, sh3, sh4
+sh1:   .space 4
+sh2:   .space 4
+sh3:   .space 4
+sh4:   .space 4
diff --git a/ld/testsuite/ld-i386/tlspic.dd b/ld/testsuite/ld-i386/tlspic.dd
new file mode 100644 (file)
index 0000000..60bcfaa
--- /dev/null
@@ -0,0 +1,411 @@
+#source: tlspic1.s
+#source: tlspic2.s
+#as: --32
+#ld: -shared -melf_i386
+#objdump: -drj.text
+#target: i?86-*-*
+
+.*: +file format elf32-i386
+
+Disassembly of section .text:
+
+[0-9a-f]+ <fn1>:
+ [0-9a-f]+:    55[     ]+push   %ebp
+ [0-9a-f]+:    89 e5[  ]+mov    %esp,%ebp
+ [0-9a-f]+:    53[     ]+push   %ebx
+ [0-9a-f]+:    50[     ]+push   %eax
+ [0-9a-f]+:    e8 00 00 00 00[         ]+call   [0-9a-f]+ <fn1\+0xa>
+ [0-9a-f]+:    5b[     ]+pop    %ebx
+ [0-9a-f]+:    81 c3 [0-9a-f ]+[       ]+add    \$0x[0-9a-f]+,%ebx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD
+ [0-9a-f]+:    8d 04 1d 5c 00 00 00    lea    0x5c\(,%ebx,1\),%eax
+#                              ->R_386_TLS_DTPMOD32    sg1
+ [0-9a-f]+:    e8 cf ff ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE because variable is referenced through @gottpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 78 00 00 00[      ]+sub    0x78\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sg2
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE because variable is referenced through @gotntpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    03 83 3c 00 00 00[      ]+add    0x3c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       sg3
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE because variable is referenced through @gottpoff and
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 48 00 00 00[      ]+sub    0x48\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sg4
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD against local variable
+ [0-9a-f]+:    8d 04 1d 10 00 00 00    lea    0x10\(,%ebx,1\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x20000000]
+ [0-9a-f]+:    e8 8f ff ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against local variable referenced through @gottpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 18 00 00 00[      ]+sub    0x18\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xdcffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against local variable referenced through @gotntpoff
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    03 83 1c 00 00 00[      ]+add    0x1c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x28000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against local variable referenced through @gottpoff and
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 20 00 00 00[      ]+sub    0x20\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xd4ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD against hidden and local variable
+ [0-9a-f]+:    8d 04 1d 7c 00 00 00    lea    0x7c\(,%ebx,1\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x40000000]
+ [0-9a-f]+:    e8 4f ff ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden and local variable referenced through @gottpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 84 00 00 00[      ]+sub    0x84\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xbcffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden and local variable referenced through @gotntpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    03 83 40 00 00 00[      ]+add    0x40\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x48000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden and local variable referenced through @gottpoff and @gotntpoff too
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 64 00 00 00[      ]+sub    0x64\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xb4ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD against hidden but not local variable
+ [0-9a-f]+:    8d 04 1d 34 00 00 00    lea    0x34\(,%ebx,1\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x60000000]
+ [0-9a-f]+:    e8 0f ff ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden but not local variable referenced through
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 44 00 00 00[      ]+sub    0x44\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0x9cffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden but not local variable referenced through
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    03 83 6c 00 00 00[      ]+add    0x6c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x68000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  GD -> IE against hidden but not local variable referenced through
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    2b 83 54 00 00 00[      ]+sub    0x54\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0x94ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  LD
+ [0-9a-f]+:    8d 83 2c 00 00 00[      ]+lea    0x2c\(%ebx\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x00000000]
+ [0-9a-f]+:    e8 d0 fe ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 90 20 00 00 00[      ]+lea    0x20\(%eax\),%edx
+#                                                      sl1
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 88 26 00 00 00[      ]+lea    0x26\(%eax\),%ecx
+#                                                      sl2+2
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  LD against hidden and local variables
+ [0-9a-f]+:    8d 83 2c 00 00 00[      ]+lea    0x2c\(%ebx\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x00000000]
+ [0-9a-f]+:    e8 b1 fe ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 90 40 00 00 00[      ]+lea    0x40\(%eax\),%edx
+#                                                      sh1
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 88 47 00 00 00[      ]+lea    0x47\(%eax\),%ecx
+#                                                      sh2+3
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  LD against hidden but not local variables
+ [0-9a-f]+:    8d 83 2c 00 00 00[      ]+lea    0x2c\(%ebx\),%eax
+#                              ->R_386_TLS_DTPMOD32    [0x00000000 0x00000000]
+ [0-9a-f]+:    e8 92 fe ff ff[         ]+call   [0-9a-f]+ <.*0x[0-9a-f]+>
+#                              ->R_386_JUMP_SLOT       ___tls_get_addr
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 90 60 00 00 00[      ]+lea    0x60\(%eax\),%edx
+#                                                      sH1
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8d 88 65 00 00 00[      ]+lea    0x65\(%eax\),%ecx
+#                                                      sH2+1
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against global var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 8b 78 00 00 00[      ]+sub    0x78\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF32     sg2
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against global var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 83 48 00 00 00[      ]+sub    0x48\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     sg4
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against global var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 8b 3c 00 00 00[      ]+add    0x3c\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       sg3
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against global var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 83 4c 00 00 00[      ]+add    0x4c\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       sg4
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 8b 18 00 00 00[      ]+sub    0x18\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF32     [0xdcffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 83 20 00 00 00[      ]+sub    0x20\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xd4ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 8b 1c 00 00 00[      ]+add    0x1c\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       [0x28000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 83 24 00 00 00[      ]+add    0x24\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x2c000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against hidden and local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 8b 84 00 00 00[      ]+sub    0x84\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF32     [0xbcffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against hidden and local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 83 64 00 00 00[      ]+sub    0x64\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0xb4ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden and local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 8b 40 00 00 00[      ]+add    0x40\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       [0x48000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden and local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 83 68 00 00 00[      ]+add    0x68\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x4c000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against hidden but not local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 8b 44 00 00 00[      ]+sub    0x44\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF32     [0x9cffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gottpoff IE against hidden but not local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    2b 83 54 00 00 00[      ]+sub    0x54\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF32     [0x94ffffff]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden but not local var
+ [0-9a-f]+:    65 8b 0d 00 00 00 00    mov    %gs:0x0,%ecx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 8b 6c 00 00 00[      ]+add    0x6c\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       [0x68000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden but not local var
+ [0-9a-f]+:    65 a1 00 00 00 00[      ]+mov    %gs:0x0,%eax
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    03 83 58 00 00 00[      ]+add    0x58\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x6c000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  Direct access through %gs
+#  @gotntpoff IE against global var
+ [0-9a-f]+:    8b 8b 50 00 00 00[      ]+mov    0x50\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       sg5
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    65 8b 11[       ]+mov    %gs:\(%ecx\),%edx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against local var
+ [0-9a-f]+:    8b 83 28 00 00 00[      ]+mov    0x28\(%ebx\),%eax
+#                              ->R_386_TLS_TPOFF       [0x30000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    65 8b 10[       ]+mov    %gs:\(%eax\),%edx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden and local var
+ [0-9a-f]+:    8b 93 70 00 00 00[      ]+mov    0x70\(%ebx\),%edx
+#                              ->R_386_TLS_TPOFF       [0x50000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    65 8b 12[       ]+mov    %gs:\(%edx\),%edx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+#  @gotntpoff IE against hidden but not local var
+ [0-9a-f]+:    8b 8b 74 00 00 00[      ]+mov    0x74\(%ebx\),%ecx
+#                              ->R_386_TLS_TPOFF       [0x70000000]
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    65 8b 11[       ]+mov    %gs:\(%ecx\),%edx
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    8b 5d fc[       ]+mov    0xfffffffc\(%ebp\),%ebx
+ [0-9a-f]+:    c9[     ]+leave *
+ [0-9a-f]+:    c3[     ]+ret *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
+ [0-9a-f]+:    90[     ]+nop *
diff --git a/ld/testsuite/ld-i386/tlspic.rd b/ld/testsuite/ld-i386/tlspic.rd
new file mode 100644 (file)
index 0000000..b890e56
--- /dev/null
@@ -0,0 +1,174 @@
+#source: tlspic1.s
+#source: tlspic2.s
+#as: --32
+#ld: -shared -melf_i386
+#readelf: -Ssrl
+#target: i?86-*-*
+
+There are [0-9]+ section headers, starting at offset 0x.*:
+
+Section Headers:
+  \[Nr\] Name +Type +Addr +Off +Size +ES Flg Lk Inf Al
+  \[ 0\] +NULL +0+ 0+ 0+ 0+ +0 +0 +0
+  \[ 1\] \.hash +.*
+  \[ 2\] \.dynsym +.*
+  \[ 3\] \.dynstr +.*
+  \[ 4\] \.rel.dyn +.*
+  \[ 5\] \.rel.plt +.*
+  \[ 6\] \.plt +.*
+  \[ 7\] \.text +.*
+  \[ 8\] \.data +.*
+  \[ 9\] .tdata +PROGBITS +[0-9a-f]+ [0-9a-f]+ 000060 00 WAT  0   0  1
+  \[10\] .tbss +NOBITS +[0-9aa-f]+ [0-9a-f]+ 000020 00 WAT  0   0  1
+  \[11\] \.dynamic +.*
+  \[12\] \.got +.*
+  \[13\] \.bss +.*
+  \[14\] \.shstrtab +.*
+  \[15\] \.symtab +.*
+  \[16\] \.strtab +.*
+Key to Flags:
+.*
+.*
+.*
+
+Elf file type is DYN \(Shared object file\)
+Entry point 0x[0-9a-f]+
+There are [0-9]+ program headers, starting at offset [0-9]+
+
+Program Headers:
+  Type +Offset +VirtAddr +PhysAddr +FileSiz +MemSiz +Flg Align
+  LOAD.*
+  LOAD.*
+  DYNAMIC.*
+  TLS +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x0+60 0x0+80 R +0x1
+
+ Section to Segment mapping:
+  Segment Sections...
+   00 +.hash .dynsym .dynstr .rel.dyn .rel.plt .plt .text *
+   01 +.tdata .tbss .dynamic .got *
+   02 +.tbss .dynamic *
+   03 +.tdata .tbss *
+
+Relocation section '.rel.dyn' at offset 0x[0-9a-f]+ contains 26 entries:
+ Offset +Info +Type +Sym.Value +Sym. Name
+[0-9a-f]+ +0+23 R_386_TLS_DTPMOD3
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+23 R_386_TLS_DTPMOD3
+[0-9a-f]+ +0+23 R_386_TLS_DTPMOD3
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+0e R_386_TLS_TPOFF *
+[0-9a-f]+ +0+23 R_386_TLS_DTPMOD3
+[0-9a-f]+ +0+25 R_386_TLS_TPOFF32
+[0-9a-f]+ +0+100e R_386_TLS_TPOFF   0+8   sg3
+[0-9a-f]+ +0+1125 R_386_TLS_TPOFF32 0+c   sg4
+[0-9a-f]+ +0+110e R_386_TLS_TPOFF   0+c   sg4
+[0-9a-f]+ +0+120e R_386_TLS_TPOFF   0+10   sg5
+[0-9a-f]+ +0+1323 R_386_TLS_DTPMOD3 0+   sg1
+[0-9a-f]+ +0+1324 R_386_TLS_DTPOFF3 0+   sg1
+[0-9a-f]+ +0+1625 R_386_TLS_TPOFF32 0+4   sg2
+
+Relocation section '.rel.plt' at offset 0x480 contains 1 entries:
+ Offset     Info    Type            Sym.Value  Sym. Name
+[0-9a-f]+  0+1c07 R_386_JUMP_SLOT   0+   ___tls_get_addr
+
+Symbol table '.dynsym' contains 29 entries:
+ +Num: + Value  Size Type + Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +1 *
+ +2: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +2 *
+ +3: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +3 *
+ +4: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +4 *
+ +5: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +5 *
+ +6: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
+ +7: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
+ +8: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
+ +9: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
+ +10: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +10 *
+ +11: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +11 *
+ +12: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +12 *
+ +13: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +13 *
+ +14: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+ +15: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +16: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+ +17: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+ +18: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+ +19: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+ +20: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+ +21: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +22: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+ +23: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+ +24: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+ +25: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +26: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +27: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
+ +28: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr
+
+Symbol table '.symtab' contains 56 entries:
+ +Num: +Value  Size Type +Bind +Vis +Ndx Name
+ +0: 0+ +0 NOTYPE  LOCAL  DEFAULT  UND *
+ +1: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +1 *
+ +2: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +2 *
+ +3: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +3 *
+ +4: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +4 *
+ +5: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +5 *
+ +6: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +6 *
+ +7: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +7 *
+ +8: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +8 *
+ +9: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +9 *
+ +10: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +10 *
+ +11: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +11 *
+ +12: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +12 *
+ +13: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +13 *
+ +14: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +14 *
+ +15: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +15 *
+ +16: [0-9a-f]+ +0 SECTION LOCAL  DEFAULT +16 *
+ +17: 0+20 +0 TLS +LOCAL  DEFAULT +9 sl1
+ +18: 0+24 +0 TLS +LOCAL  DEFAULT +9 sl2
+ +19: 0+28 +0 TLS +LOCAL  DEFAULT +9 sl3
+ +20: 0+2c +0 TLS +LOCAL  DEFAULT +9 sl4
+ +21: 0+30 +0 TLS +LOCAL  DEFAULT +9 sl5
+ +22: 0+34 +0 TLS +LOCAL  DEFAULT +9 sl6
+ +23: 0+38 +0 TLS +LOCAL  DEFAULT +9 sl7
+ +24: 0+3c +0 TLS +LOCAL  DEFAULT +9 sl8
+ +25: 0+60 +0 TLS +LOCAL  HIDDEN +10 sH1
+ +26: 0+48 +0 TLS +LOCAL  HIDDEN +9 sh3
+ +27: 0+64 +0 TLS +LOCAL  HIDDEN +10 sH2
+ +28: 0+78 +0 TLS +LOCAL  HIDDEN +10 sH7
+ +29: 0+58 +0 TLS +LOCAL  HIDDEN +9 sh7
+ +30: 0+5c +0 TLS +LOCAL  HIDDEN +9 sh8
+ +31: 0+6c +0 TLS +LOCAL  HIDDEN +10 sH4
+ +32: 0+4c +0 TLS +LOCAL  HIDDEN +9 sh4
+ +33: 0+68 +0 TLS +LOCAL  HIDDEN +10 sH3
+ +34: 0+50 +0 TLS +LOCAL  HIDDEN +9 sh5
+ +35: 0+70 +0 TLS +LOCAL  HIDDEN +10 sH5
+ +36: 0+74 +0 TLS +LOCAL  HIDDEN +10 sH6
+ +37: 0+7c +0 TLS +LOCAL  HIDDEN +10 sH8
+ +38: 0+40 +0 TLS +LOCAL  HIDDEN +9 sh1
+ +39: 0+44 +0 TLS +LOCAL  HIDDEN +9 sh2
+ +40: 0+54 +0 TLS +LOCAL  HIDDEN +9 sh6
+ +41: 0+1c +0 TLS +GLOBAL DEFAULT +9 sg8
+ +42: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _DYNAMIC
+ +43: 0+8 +0 TLS +GLOBAL DEFAULT +9 sg3
+ +44: 0+c +0 TLS +GLOBAL DEFAULT +9 sg4
+ +45: 0+10 +0 TLS +GLOBAL DEFAULT +9 sg5
+ +46: 0+ +0 TLS +GLOBAL DEFAULT +9 sg1
+ +47: [0-9a-f]+ +0 FUNC +GLOBAL DEFAULT +7 fn1
+ +48: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start
+ +49: 0+4 +0 TLS +GLOBAL DEFAULT +9 sg2
+ +50: 0+14 +0 TLS +GLOBAL DEFAULT +9 sg6
+ +51: 0+18 +0 TLS +GLOBAL DEFAULT +9 sg7
+ +52: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _edata
+ +53: [0-9a-f]+ +0 OBJECT  GLOBAL DEFAULT  ABS _GLOBAL_OFFSET_TABLE_
+ +54: [0-9a-f]+ +0 NOTYPE  GLOBAL DEFAULT  ABS _end
+ +55: 0+ +0 NOTYPE  GLOBAL DEFAULT  UND ___tls_get_addr
diff --git a/ld/testsuite/ld-i386/tlspic.sd b/ld/testsuite/ld-i386/tlspic.sd
new file mode 100644 (file)
index 0000000..e51848d
--- /dev/null
@@ -0,0 +1,19 @@
+#source: tlspic1.s
+#source: tlspic2.s
+#as: --32
+#ld: -shared -melf_i386
+#objdump: -sj.got
+#target: i?86-*-*
+
+.*:     file format elf32-i386
+
+Contents of section \.got:
+ [0-9a-f]+ [0-9a-f]+ 00000000 00000000 [0-9a-f]+  .*
+ [0-9a-f]+ 00000000 20000000 dcffffff 28000000  .*
+ [0-9a-f]+ d4ffffff 2c000000 30000000 00000000  .*
+ [0-9a-f]+ 00000000 00000000 60000000 00000000  .*
+ [0-9a-f]+ 48000000 9cffffff 00000000 00000000  .*
+ [0-9a-f]+ 00000000 94ffffff 6c000000 00000000  .*
+ [0-9a-f]+ 00000000 b4ffffff 4c000000 68000000  .*
+ [0-9a-f]+ 50000000 70000000 00000000 00000000  .*
+ [0-9a-f]+ 40000000 bcffffff  +.*
diff --git a/ld/testsuite/ld-i386/tlspic.td b/ld/testsuite/ld-i386/tlspic.td
new file mode 100644 (file)
index 0000000..1291584
--- /dev/null
@@ -0,0 +1,16 @@
+#source: tlspic1.s
+#source: tlspic2.s
+#as: --32
+#ld: -shared -melf_i386
+#objdump: -sj.tdata
+#target: i?86-*-*
+
+.*:     file format elf32-i386
+
+Contents of section \.tdata:
+ [0-9a-f]+ 11000000 12000000 13000000 14000000  .*
+ [0-9a-f]+ 15000000 16000000 17000000 18000000  .*
+ [0-9a-f]+ 41000000 42000000 43000000 44000000  .*
+ [0-9a-f]+ 45000000 46000000 47000000 48000000  .*
+ [0-9a-f]+ 01010000 02010000 03010000 04010000  .*
+ [0-9a-f]+ 05010000 06010000 07010000 08010000  .*
diff --git a/ld/testsuite/ld-i386/tlspic1.s b/ld/testsuite/ld-i386/tlspic1.s
new file mode 100644 (file)
index 0000000..9dcb3b7
--- /dev/null
@@ -0,0 +1,282 @@
+       .section ".tdata", "awT", @progbits
+       .globl sg1, sg2, sg3, sg4, sg5, sg6, sg7, sg8
+       .globl sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
+       .hidden sh1, sh2, sh3, sh4, sh5, sh6, sh7, sh8
+sg1:   .long 17
+sg2:   .long 18
+sg3:   .long 19
+sg4:   .long 20
+sg5:   .long 21
+sg6:   .long 22
+sg7:   .long 23
+sg8:   .long 24
+sl1:   .long 65
+sl2:   .long 66
+sl3:   .long 67
+sl4:   .long 68
+sl5:   .long 69
+sl6:   .long 70
+sl7:   .long 71
+sl8:   .long 72
+sh1:   .long 257
+sh2:   .long 258
+sh3:   .long 259
+sh4:   .long 260
+sh5:   .long 261
+sh6:   .long 262
+sh7:   .long 263
+sh8:   .long 264
+       .text
+       .globl  fn1
+       .type   fn1,@function
+fn1:
+       pushl   %ebp
+       movl    %esp, %ebp
+       pushl   %ebx
+       pushl   %eax
+       call    1f
+1:     popl    %ebx
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+       nop;nop;nop;nop
+
+       /* GD */
+       leal    sg1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is referenced through @gottpoff too */
+       leal    sg2@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is referenced through @gotntpoff too */
+       leal    sg3@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE because variable is referenced through @gottpoff and
+          @gotntpoff too */
+       leal    sg4@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD against local variable */
+       leal    sl1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against local variable referenced through @gottpoff too */
+       leal    sl2@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against local variable referenced through @gotntpoff
+          too */
+       leal    sl3@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against local variable referenced through @gottpoff and
+          @gotntpoff too */
+       leal    sl4@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD against hidden and local variable */
+       leal    sh1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden and local variable referenced through
+          @gottpoff too */
+       leal    sh2@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden and local variable referenced through
+          @gotntpoff too */
+       leal    sh3@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden and local variable referenced through
+          @gottpoff and @gotntpoff too */
+       leal    sh4@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD against hidden but not local variable */
+       leal    sH1@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden but not local variable referenced through
+          @gottpoff too */
+       leal    sH2@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden but not local variable referenced through
+          @gotntpoff too */
+       leal    sH3@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* GD -> IE against hidden but not local variable referenced through
+          @gottpoff and @gotntpoff too */
+       leal    sH4@tlsgd(,%ebx,1), %eax
+       call    ___tls_get_addr@plt
+       nop;nop;nop;nop
+
+       /* LD */
+       leal    sl1@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop;nop
+       leal    sl1@dtpoff(%eax), %edx
+       nop;nop
+       leal    2+sl2@dtpoff(%eax), %ecx
+       nop;nop;nop;nop
+
+       /* LD against hidden and local variables */
+       leal    sh1@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop;nop
+       leal    sh1@dtpoff(%eax), %edx
+       nop;nop
+       leal    sh2@dtpoff+3(%eax), %ecx
+       nop;nop;nop;nop
+
+       /* LD against hidden but not local variables */
+       leal    sH1@tlsldm(%ebx), %eax
+       call    ___tls_get_addr@PLT
+       nop;nop
+       leal    sH1@dtpoff(%eax), %edx
+       nop;nop
+       leal    sH2@dtpoff+1(%eax), %ecx
+       nop;nop
+
+       /* @gottpoff IE against global var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sg2@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       subl    sg4@gottpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against global var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sg3@gotntpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against global var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sg4@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sl2@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       subl    sl4@gottpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sl3@gotntpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sl4@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against hidden and local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sh2@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against hidden and local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       subl    sh4@gottpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden and local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sh3@gotntpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden and local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sh4@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against hidden but not local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       subl    sH2@gottpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gottpoff IE against hidden but not local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       subl    sH4@gottpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden but not local var  */
+       movl    %gs:0, %ecx
+       nop;nop
+       addl    sH3@gotntpoff(%ebx), %ecx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden but not local var  */
+       movl    %gs:0, %eax
+       nop;nop
+       addl    sH4@gotntpoff(%ebx), %eax
+       nop;nop;nop;nop
+
+       /* Direct access through %gs  */
+
+       /* @gotntpoff IE against global var  */
+       movl    sg5@gotntpoff(%ebx), %ecx
+       nop;nop
+       movl    %gs:(%ecx), %edx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against local var  */
+       movl    sl5@gotntpoff(%ebx), %eax
+       nop;nop
+       movl    %gs:(%eax), %edx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden and local var  */
+       movl    sh5@gotntpoff(%ebx), %edx
+       nop;nop
+       movl    %gs:(%edx), %edx
+       nop;nop;nop;nop
+
+       /* @gotntpoff IE against hidden but not local var  */
+       movl    sH5@gotntpoff(%ebx), %ecx
+       nop;nop
+       movl    %gs:(%ecx), %edx
+       nop;nop;nop;nop
+
+       movl    -4(%ebp), %ebx
+       leave
+       ret
diff --git a/ld/testsuite/ld-i386/tlspic2.s b/ld/testsuite/ld-i386/tlspic2.s
new file mode 100644 (file)
index 0000000..5513f9b
--- /dev/null
@@ -0,0 +1,11 @@
+       .section ".tbss", "awT", @nobits
+       .globl sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
+       .hidden sH1, sH2, sH3, sH4, sH5, sH6, sH7, sH8
+sH1:   .space 4
+sH2:   .space 4
+sH3:   .space 4
+sH4:   .space 4
+sH5:   .space 4
+sH6:   .space 4
+sH7:   .space 4
+sH8:   .space 4