From: nobody <> Date: Fri, 20 Sep 2002 07:57:09 +0000 (+0000) Subject: This commit was manufactured by cvs2svn to create branch 'binutils- X-Git-Tag: binutils-2_13_1~99 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dd7c0bc454a578ea4f003c4bac089062e829395f;p=thirdparty%2Fbinutils-gdb.git This commit was manufactured by cvs2svn to create branch 'binutils- 2_13-branch'. Cherrypick from master 2002-09-20 07:57:08 UTC Alan Modra ' * 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 --- diff --git a/bfd/elf32-i386-fbsd.c b/bfd/elf32-i386-fbsd.c new file mode 100644 index 00000000000..500e0ebc048 --- /dev/null +++ b/bfd/elf32-i386-fbsd.c @@ -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 index 00000000000..061b0b81030 --- /dev/null +++ b/bfd/elf64-alpha-fbsd.c @@ -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 index 00000000000..6f184849c06 --- /dev/null +++ b/bfd/po/da.po @@ -0,0 +1,2745 @@ +# Danish messages for bfd. +# Copyright (C) 2001, 2002 Free Software Foundation, Inc. +# Keld Simonsen , 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 \n" +"Language-Team: Danish \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 "#" +msgstr "#" + +#: 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 " " +msgstr " " + +#: 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 "" +msgstr "" + +#: 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 "" +msgstr "" + +#: 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 index 00000000000..1f3811eb3be --- /dev/null +++ b/gas/testsuite/gas/mips/mips-abi32-pic2.d @@ -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 index 00000000000..3e22e269f67 --- /dev/null +++ b/gas/testsuite/gas/mips/mips-abi32-pic2.s @@ -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 index 00000000000..09526f8d2ad --- /dev/null +++ b/ld/testsuite/ld-i386/i386.exp @@ -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 index 00000000000..9ad0cc3ed32 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbin.dd @@ -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 : + 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 + 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 index 00000000000..a7fb1448ba0 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbin.rd @@ -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 index 00000000000..db80e0984ff --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbin.s @@ -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 index 00000000000..b82affe98f6 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbin.sd @@ -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 index 00000000000..bb29455e5de --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbin.td @@ -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 index 00000000000..027773a3e97 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsbinpic.s @@ -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 index 00000000000..22e1f8d2d55 --- /dev/null +++ b/ld/testsuite/ld-i386/tlslib.s @@ -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 index 00000000000..bb9f6e5abfe --- /dev/null +++ b/ld/testsuite/ld-i386/tlsnopic.dd @@ -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 : + 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 index 00000000000..3c6f3725e07 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsnopic.rd @@ -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 index 00000000000..a79226f43df --- /dev/null +++ b/ld/testsuite/ld-i386/tlsnopic.sd @@ -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 index 00000000000..32d730bedc8 --- /dev/null +++ b/ld/testsuite/ld-i386/tlsnopic1.s @@ -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 index 00000000000..d9329566e8a --- /dev/null +++ b/ld/testsuite/ld-i386/tlsnopic2.s @@ -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 index 00000000000..60bcfaa12c6 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic.dd @@ -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]+ : + [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]+ + [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 index 00000000000..b890e565576 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic.rd @@ -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 index 00000000000..e51848ddd86 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic.sd @@ -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 index 00000000000..1291584da46 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic.td @@ -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 index 00000000000..9dcb3b73722 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic1.s @@ -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 index 00000000000..5513f9b5851 --- /dev/null +++ b/ld/testsuite/ld-i386/tlspic2.s @@ -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